OSDN Git Service

90th Cygnus<->FSF quick merge
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
2
3         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
4         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
5
6 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
7
8         * decl.c (grokvardecl): Avoid ANSI style initialization.
9
10 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
11
12         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
13
14 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
15
16         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
17
18 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
19
20         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
21         arguments we compare against.  Start the count of I at 1, not 0,
22         since argv[0] is still the command.
23
24 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
25
26         * lang-specs.h: Accept .cp as an C++ extension.
27
28 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
29
30         * cp-tree.h (ptr_reasonably_similar): Add decl.
31
32 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
33
34         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
35         pointer.  New local SPECBITS with the parm's value.
36         (grokdeclarator): Pass &specbits down.
37
38         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
39         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
40
41         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
42         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
43
44         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
45         not an error_mark_node.
46
47 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
48
49         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
50         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
51         
52 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
53
54         * decl.c (grokdeclarator): When giving an anonymous struct a name,
55         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
56         not affected).
57
58         * typeck2.c (build_m_component_ref): If component is a pointer
59         to data member, resolve the OFFSET_REF now.
60
61         * call.c (convert_like): Don't go into infinite recursion.
62
63         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
64
65         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
66         * tree.c (layout_basetypes): And on the vbase ptr.
67
68 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
69
70         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
71         CHAR_TYPE_SIZE so bool is always the same size as another type.
72
73         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
74
75 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
76
77         * decl2.c (grok_x_components): Remove synthesized methods from
78         TYPE_METHODS of an anonymous union, complain about member
79         functions.
80         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
81         anonymous unions.
82         (finish_function): Just clear the DECL_RTL of our arguments.
83
84 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
85
86         * decl2.c (finish_file): Emit DWARF debugging info for static data
87         members.
88
89         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
90
91 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
92
93         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
94         IDENTIFIER_NODE.
95
96 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
97
98         * Make-lang.in (g++-cross$(exeext)): Fix typo.
99
100 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
101
102         Make the g++ driver now be a standalone program, rather than one
103         that tries to run the gcc driver after munging up the options.
104         * Make-lang.in (g++.c, g++spec.o): New rules.
105         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
106         added.
107         (g++$(exeext)): New rule, based on xgcc rule.
108         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
109         * g++spec.c: New file.
110         * g++.c: Removed file.
111
112 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
113
114         * cvt.c (build_up_reference): Arrange for any temporary values
115         that have been keep in registers until now to be put into memory.
116
117 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
118
119         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
120         that make -j3 bootstrap works better.
121
122 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
123
124         * decl.c (pushtag): Do pushdecl for anon tags.
125
126 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
127
128         * typeck.c (c_expand_return): Fix logic.
129         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
130
131 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
132
133         * g++.c (main): Make sure arglist has a final NULL entry.  Add
134         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
135         stdin/stdout of the invoked program are redirected to
136         nowheresville.
137
138 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
139
140         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
141
142 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
143
144         * init.c (resolve_offset_ref): Handle obj.vfn better.
145         * typeck.c (build_component_ref): Set TREE_TYPE on result from
146         build_vfn_ref.
147
148 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
149
150         * typeck.c (convert_for_assignment): Also handle anachronistic
151         implicit conversions from (::*)() to cv void*.
152         * cvt.c (cp_convert_to_pointer): Likewise.
153
154 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
155
156         * lex.c (handle_cp_pragma): Fix bogus warning.
157
158 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
159
160         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
161         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
162
163 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
164
165         * class.c (finish_struct_1): Support DWARF2_DEBUG.
166         * search.c (dfs_debug_mark): Likewise.
167         * decl2.c (finish_vtable_vardecl): Likewise.
168         * decl.c (pushtag, finish_enum): Likewise.
169         * lex.c (check_newline): Use debug_* instead of calling *out
170         functions directly.
171
172 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
173
174         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
175         on some picky hosts.
176
177 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
178
179         * class.c (finish_struct_1): A class has a non-trivial copy
180         constructor if it has virtual functions.
181
182         * cvt.c (cp_convert): Always call a constructor.
183
184         * call.c (reference_binding): Still tack on a REF_BIND
185         for bad conversions.
186         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
187
188         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
189         (c_expand_return): Likewise.
190         * typeck2.c (digest_init): Likewise for { }.
191         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
192         * cvt.c (cp_convert): Handle failure better.
193
194 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
195
196         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
197         of GCC be path-relative. 
198
199 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
200
201         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
202         it does need choose-temp.o and pexecute.o.
203
204 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
205
206         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
207         that we still use it.
208         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
209
210 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
211
212         * init.c (expand_default_init): Avoid calling constructors to 
213         initialize reference temps.
214
215         * cvt.c (convert_to_reference): Fix.
216
217 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
218
219         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
220         (convert_to_reference): Likewise.
221         * typeck.c (convert_for_initialization): Likewise.
222         * init.c (expand_default_init): Likewise.
223         (expand_aggr_init_1): Likewise.
224         * cp-tree.h (CONV_NONCONVERTING): Lose.
225         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
226         * *.c: Adjust.
227         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
228
229 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
230
231         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
232
233 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
234
235         * init.c (expand_aggr_init_1): Don't crash on non-constructor
236         TARGET_EXPR.
237
238 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
239
240         * g++.c: Include gansidecl.h.
241         (VPROTO, PVPROTO, VA_START): Delete.
242         (choose_temp_base_try, choose_temp_base, perror_exec,
243         run_dos) [__MSDOS__]: Delete fns.
244         (pfatal_with_name): Delete fn.
245         (temp_filename): Declare like in gcc.c.
246         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
247         (error_count, signal_count): Define.
248         (error): Delete both definitions.
249         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
250         (pfatal_pexecute): Add fn from gcc.c.
251         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
252         code to use the pexecute stuff also used by gcc.c.
253         (MIN_FATAL_STATUS): Define.
254         * Make-lang.in (g++): Add dependency on and linking with
255         choose-temp.o and pexecute.o.
256
257         * cp-tree.h: Include gansidecl.h.
258         (STDIO_PROTO): Delete #undef/#define.
259         * cvt.c (NULL): Delete #undef/#define.
260         * expr.c (NULL): Likewise.
261         * init.c (NULL): Likewise.
262         * rtti.c (NULL): Likewise.
263         * xref.c (NULL): Likewise.
264
265         * cp-tree.h (build_user_type_conversion): Add prototype.
266         * call.c (build_user_type_conversion): Delete prototype.  Correct
267         decl of FLAGS arg to be an int.
268         * cvt.c (build_user_type_conversion): Likewise.
269
270 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
271
272         * cp-tree.def: Add TRY_BLOCK and HANDLER.
273         * except.c (expand_start_catch_block): Support templates.
274         * parse.y (try_block, handler_seq): Likewise.
275         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
276
277 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
278
279         * pt.c (current_template_args): New fn.
280         (push_template_decl): Use it.
281         * decl.c (grokdeclarator): Use it.
282
283         * decl2.c (build_expr_from_tree): Dereference ref vars.
284
285         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
286         the decl-specifier-seq.
287
288         * decl.c (grok_op_properties): Don't force the type of a conversion
289         op to be complete.  Don't warn about converting to the same type
290         for template instantiations.
291
292         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
293         methods.
294
295 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
296
297         * typeck.c (get_delta_difference): Remove previous bogusness.
298         Don't give errors if force is set.
299
300 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
301
302         * decl2.c (finish_file): Don't emit debug info.
303         * decl.c (pushdecl): Lose obsolete code.
304         (grokdeclarator): Still do the long long thing after complaining.
305         * search.c (note_debug_info_needed): Don't do anything if we're in a 
306         template.
307         * method.c (synthesize_method): For non-local classes,
308         push_to_top_level first.
309
310 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
311
312         * typeck.c (get_delta_difference): Add no_error parameter.
313         (build_ptrmemfunc): Call get_delta_difference with no_error set;
314         we don't want error messages when converting unrelated
315         pointer-to-member functions.
316
317 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
318
319         * error.c (dump_expr): Improve the wording on error messages that
320         involve pointer to member functions.
321
322 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
323
324         * cvt.c (cp_convert_to_pointer): Move code for conversions from
325         (::*)() to void* or (*)() up a bit, so that we can convert from
326         METHOD_TYPEs as well.
327
328 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
329
330         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
331         There are no 'member' types.
332         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
333         (build_x_typeid): Handle errors.
334
335 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
336
337         * typeck.c (convert_for_assignment): Handle anachronistic implicit
338         conversions from (::*)() to void* or (*)().
339         * cvt.c (cp_convert_to_pointer): Likewise.
340         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
341         conversions from here.
342         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
343         * lang-options.h: Likewise.
344         * decl2.c (warn_pmf2ptr): Define.
345         * cp-tree.h: Declare it.
346         * typeck2.c (digest_init): Allow pmfs down into
347         convert_for_initialization.
348
349 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
350
351         * typeck.c (c_expand_return): Fix for returning overloaded fn.
352
353 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
354
355         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
356         * decl.c (grok_reference_init): Pass DIRECT_BIND.
357         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
358         DIRECT_BIND.
359         * call.c (convert_like): Don't pass INDIRECT_BIND.
360         * typeck.c (convert_arguments): Likewise.
361         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
362
363 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
364
365         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
366         similar code in build_up_ref.
367         * cvt.c (build_up_reference): Drastically simplify.
368
369 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
370
371         * typeck.c (signed_or_unsigned_type): If the given type already
372         as the correct signedness, then just return it.
373
374         * typeck.c ({un,}signed_type): If can't do anything, call
375         signed_or_unsigned_type.
376
377 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
378
379         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
380         current_class_type is NULL.
381
382 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
383
384         * class.c (finish_struct_1): Avoid empty structs by adding a field
385         so layout_type gets the mode right.
386
387         * typeck.c (c_expand_return): Drastically simplify.
388
389 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
390
391         * typeck.c (decay_conversion): Handle overloaded methods.
392
393 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
394
395         * call.c (build_over_call): A TARGET_EXPR has side-effects.
396
397 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
398
399         * cvt.c (convert_to_pointer_force): Add code to support pointer to
400         member function to pointer to function conversions.
401         * init.c (resolve_offset_ref): Add code to allow faked up objects,
402         ignoring them if they are not used, and giving an error, if they
403         are needed.
404         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
405         code, and so that we can give an error, if we needed an object,
406         and one was not provided.
407         (build_c_cast): Don't call default_conversion when we want to
408         convert to pointer to function from a METHOD_TYPE.
409
410 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
411
412         * Make-lang.in (cplib2.ready): Fix logic.
413
414         * decl.c (shadow_tag): Only complain about non-artificial function
415         members.
416
417         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
418
419 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
420
421         * expr.c (cplus_expand_expr): Pre-tweak call_target like
422         expand_inline_function would.
423
424         * pt.c (mark_decl_instantiated): If extern_p, call
425         mark_inline_for_output.
426
427 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
428
429         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
430         pmd conversions.
431
432         * typeck.c (get_delta_difference): Fix wording, as we can be used
433         for pointer to data members.
434
435 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
436
437         * pt.c (tsubst): If the function decl isn't a member of this
438         template, return a copy of the decl (including copying the
439         lang-specific part) so we don't hose ourselves later.
440
441 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
442
443         * class.c (finish_struct): Remove DWARF-specific tag handling.
444         * decl.c (pushtag): Likewise.
445         (finish_function): Always clear DECL_ARGUMENTS on function decls with
446         no saved RTX.
447         * decl2.c (finish_file): Emit DWARF debugging info for static data
448         members.
449
450 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
451
452         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
453         isn't the same as the new one before we whack it.
454
455 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
456
457         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
458         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
459         warn_traditional and warn_strict_prototypes; remove ancient
460         'overload' code; remove references to flag_traditional.
461
462 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
463
464         * input.c (sub_getch): Handle 8-bit characters in string literals.
465
466 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
467
468         * tree.c (mapcar): Handle CONSTRUCTORs.
469         (copy_to_permanent): Handle expression_obstack properly.
470
471         * Make-lang.in (cplib2.txt): Also depend on the headers.
472
473         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
474         INT_TYPE_SIZE.
475         (expand_class_desc): Use USItype for offset field.
476         * tinfo.h (struct __class_type_info): Likewise.
477
478         * method.c (build_overload_int): TYPE_PRECISION should be applied
479         to types.
480
481 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
482
483         * call.c (build_new_op): A COND_EXPR involving void must be a
484         builtin.
485
486 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
487
488         * typeck.c (build_x_component_ref): New fn.
489         (build_object_ref): Use it.
490         * parse.y (primary): Use it.
491         * decl2.c (build_expr_from_tree): Use it.
492         * cp-tree.h: Declare it.
493
494         * decl.c (start_decl): variable-sized arrays cannot be initialized.
495         * error.c (dump_type_suffix): Handle variable arrays.
496
497 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
498
499         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
500
501 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
502
503         * decl.c (lookup_name_real): Don't try to look up anything in a
504         TYPENAME_TYPE.
505
506         * tinfo2.cc (__throw_type_match_rtti): Oops.
507
508 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
509
510         * Make-lang.in (exception.o): Use -fno-PIC for now.
511
512 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
513
514         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
515         calling them.
516         (get_tinfo_fn_dynamic): Extracted from build_typeid.
517         * tinfo2.cc (__dynamic_cast): Adjust.
518         
519         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
520         (build_x_typeid): Likewise.
521
522         * parse.y: Call build_x_typeid instead of build_typeid.
523         * cp-tree.def: Add TYPEID_EXPR.
524         * pt.c (tsubst_copy): Handle typeid.
525         * decl2.c (build_expr_from_tree): Likewise.
526         * rtti.c (build_x_typeid): Throw bad_typeid from here.
527         (build_typeid): Not here.
528         * cp-tree.h: Declare build_x_typeid.
529
530 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
531
532         * call.c (convert_like): Pull out constant values.
533
534         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
535
536 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
537
538         * decl.c (init_decl_processing): Create short int types before
539         creating size_t in case a machine description needs to use
540         unsigned short for size_t.
541
542 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
543
544         * Make-lang.in (exception.o): Turn off pic.
545
546         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
547         type, multi-level ptr conversions.
548
549         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
550         (throw_bad_cast): Use it.
551         (throw_bad_typeid): New fn.
552         (build_typeid): Throw bad_typeid as needed.
553         Use build_call.
554         (synthesize_tinfo_fn): Handle functions and arrays before checking
555         for cv-quals.
556
557         * Remove .h from standard C++ headers, add new.h, move into inc
558         subdirectory.
559
560         * exception*: Remove pointer from object, constructors.  Add
561         default exception::what that uses type_info::name.  Add
562         __throw_bad_typeid.
563
564         * init.c (build_new): Don't add a cookie to new (void *) T[2].
565
566 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
567
568         * Make-lang.in: Building C++ code depends on cc1plus.
569
570 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
571
572         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
573         a HOST_WIDE_INT, not a tree.
574
575 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
576
577         * exception.cc: Don't include <stdlib.h>.
578
579         * Make-lang.in (c++.clean): Remove cplib2.*.
580
581 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
582
583         * parse.y (component_decl_1, component_costructor_declarator case):
584         Pass attributes/prefix_attributes in tree list.
585
586 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
587
588         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
589
590 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
591
592         * lex.c (do_identifier): Don't do deferred lookup in a template
593         header.
594
595         * typeck2.c (store_init_value): Oops.
596
597         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
598         New files for C++ lang-support library.
599         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
600         (CXX_LIB2FUNCS): Define.
601         And rules for building the C++ lang-support code.
602         * config-lang.in (headers): Define.
603         (lib2funcs): Define.
604
605 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
606
607         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
608         digest_init.
609         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
610         * typeck2.c (store_init_value): Check for initializing pmf with { }
611         here.
612         (process_init_constructor): Not here.
613
614 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
615
616         * pt.c (begin_template_parm_list): Increment
617         processing_template_decl here.
618         (end_template_parm_list): Not here.
619         (process_template_parm): No need to add 1 to it now.
620         * *.c: Use processing_template_decl instead of current_template_parms
621         to check for being in a template.
622
623         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
624         (tsubst_copy): Handle CONSTRUCTOR.
625         (instantiate_decl): Set up context properly for variables.
626         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
627         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
628
629 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
630
631         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
632
633 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
634
635         * method.c (make_thunk): Call comdat_linkage before setting the
636         TREE_CODE.
637
638         * decl2.c (comdat_linkage): Use make_decl_one_only.
639         (import_export_decl): Likewise.
640         * decl.c (init_decl_processing): Check supports_one_only instead of
641         SUPPORTS_WEAK.
642
643 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
644
645         * decl2.c (grokfield): Tighten checking for access decls.
646
647         * decl.c (make_typename_type): Resolve references to
648         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
649         (lookup_name_real): Types that depend on a template parameter get
650         an implicit 'typename' unless they're in the current scope.
651         (start_decl_1): We don't care about incomplete types that depend
652         on a template parm.
653         (grokdeclarator): Resolve 'typename's in the type specifier that
654         refer to members of the current scope.
655
656         * call.c (build_over_call): Remove 'inline called before
657         definition' diagnostic.
658         (build_method_call): Likewise.
659         * decl.c (duplicate_decls): Downgrade 'used before declared
660         inline' to a warning, only with -Winline.
661
662 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
663
664         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
665
666 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
667
668         * call.c (build_method_call): When calling a signature
669         default implementation, as in other cases, let instance_ptr simply
670         be instance.
671
672 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
673
674         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
675
676 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
677
678         * except.c (expand_start_catch_block): Add a pushlevel so that -g
679         works on hppa and SPARC.
680
681 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
682
683         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
684
685 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
686
687         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
688         before testing whether it's a signature.
689
690 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
691
692         * call.c (build_new_method_call): Don't complain about signature
693         pointers and references not being an aggr type.
694         (build_this): If a signature pointer or reference was passed in,
695         just return it.
696         (build_new_method_call): If instance is a signature pointer, set
697         basetype to the signature type of instance.
698         * sig.c (build_signature_method_call): Deleted basetype and
699         instance parameters, they can be found as the DECL_CONTEXT of
700         function and as the first argument passed in.
701         * cp-tree.h: Changed declaration of build_signature_method_call.
702         * call.c (build_method_call): Deleted first two arguments in call
703         of build_signature_method_call.
704         (build_over_call): Added call to build_signature_method_call.
705
706 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
707
708         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
709         target_expr.
710
711 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
712
713         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
714
715 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
716
717         * except.c (expand_start_try_stmts): Move to except.c in the backend.
718         (expand_end_try_stmts): Remove.
719
720         * init.c (perform_member_init): Use add_partial_entry () instead
721         of directly manipulating lists.
722         (emit_base_init): Ditto.
723
724 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
725
726         * except.c (expand_exception_blocks): Always make sure USE and
727         CLOBBER insns that came at the end still do, the backend relies
728         upon this.
729
730 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
731
732         * call.c (build_over_call): We can only use a TARGET_EXPR of the
733         right type.
734
735 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
736
737         * cvt.c (convert_to_reference): Revert last change, don't complain
738         about temp without target decl.
739
740 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
741
742         * decl.c (grokdeclarator): Don't core dump when void() is given.
743
744 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
745
746         * decl.c (copy_args_p): Don't crash.
747
748 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
749
750         * pt.c (tsubst): And support template args inside the exception
751         specification.
752
753         * pt.c (tsubst): Add support for exception specifications in
754         template functions.
755
756 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
757
758         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
759         fields now.
760         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
761         (start_function): Likewise.
762         (start_method): Likewise.
763         (grokfield): Likewise.
764         (make_call_declarator): Add throw spec parameter.
765         (set_quals_and_spec): Add routine.
766         * lex.c (set_quals_and_spec): Likewise.
767         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
768         * decl.c (shadow_tag): Eliminate the throw spec parameter to
769         grokdeclarator.
770         (groktypename): Likewise.
771         (start_decl): Eliminate the throw spec parameter.  Eliminate the
772         throw spec parameter to grokdeclarator.  Eliminate the throw spec
773         field in DECL_STMT.
774         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
775         (grokfndecl): Remove useless set of raises.
776         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
777         the throw spec parameter to start_decl.  Pull the throw spec out
778         of the call declarator.
779         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
780         (start_function): Eliminate the throw spec parameter.  Eliminate
781         the throw spec parameter to grokdeclarator.
782         (start_method): Likewise.
783         * decl2.c (grokfield): Likewise.
784         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
785         (grokoptypename): Likewise.
786         (finish_file): Eliminate the throw spec parameter to
787         start_function.  Add throw spec to make_call_declarator.
788         * except.c (init_exception_processing): Add throw spec to
789         make_call_declarator.  Eliminate the throw spec parameter to
790         start_decl.
791         (expand_start_catch_block): Eliminate the throw spec parameter to
792         grokdeclarator.
793         (expand_builtin_throw): Add throw spec to make_call_declarator.
794         Eliminate the throw spec parameter to start_function.
795         (start_anon_func): Likewise.
796         * lex.c (make_call_declarator): Add throw spec parameter.
797         (set_quals_and_spec): New routine.
798         (cons_up_default_function): Add throw spec to make_call_declarator.
799         Eliminate the throw spec parameter to grokfield.
800         * method.c (synthesize_method): Eliminate the throw spec parameter
801         to start_function.
802         * pt.c (process_template_parm): Eliminate the throw spec parameter
803         to grokdeclarator.
804         (tsubst): Add throw spec to make_call_declarator.
805         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
806         (do_function_instantiation): Eliminate the throw spec parameter to
807         grokdeclarator.  Eliminate the throw spec parameter to
808         start_function.
809         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
810         to start_function.
811         * parse.y (datadef): Remove non-winning optimization.
812         (decl): Likewise.
813         (fndef): Remove ambiguous error productions uncovered by grammer
814         fixing.
815         (constructor_declarator): Add exception_specification_opt here.
816         (component_constructor_declarator): Likewise.
817         (direct_after_type_declarator): Likewise.
818         (complex_direct_notype_declarator): Likewise.
819         (direct_abstract_declarator): Likewise.
820         (fn.def1): Remove exception_specification_opt.
821         (fn.def2): Likewise.
822         (condition): Likewise.
823         (initdcl0): Likewise.
824         (initdcl): Likewise.
825         (notype_initdcl0): Likewise.
826         (nomods_initdcl0): Likewise.
827         (component_decl_1): Likewise.
828         (component_declarator): Likewise.
829         (after_type_component_declarator0): Likewise.
830         (after_type_component_declarator): Likewise.
831         (notype_component_declarator): Likewise.
832
833 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
834
835         * call.c (build_over_call): Also use an INIT_EXPR when
836         initializing anything from an rvalue.
837
838         * call.c (build_over_call): Call stabilize_reference when building
839         an INIT_EXPR instead of calling the copy ctor.
840
841         * call.c (joust): Extend the previous change to all comparisons.
842
843         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
844         NO_LINKAGE_HEURISTICS.
845
846         * decl2.c (finish_file): Emit any statics that weren't already.
847
848         * typeck.c (build_static_cast): Implement.
849         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
850         * decl.c (grokparms): Use can_convert_arg instead of
851         implicit_conversion directly.
852         (copy_args_p): New fn.
853         * cvt.c (convert_to_reference): Don't complain about temp with
854         static_cast.
855         (build_up_reference): Handle TARGET_EXPRs.
856         * call.c (build_over_call): Elide unnecessary temps.
857         (can_convert*): Use new overloading code.
858
859 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
860
861         * call.c: Move TYPE_PTR*_MACROS ...
862         * cp-tree.h: To here.
863         * typeck.c (build_reinterpret_cast): Implement.
864
865         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
866         ptr_complete_ob.
867         (joust): If we're comparing a function to a builtin and the worst
868         conversion for the builtin is worse than the worst conversion for the
869         function, take the function.
870
871         * typeck.c (build_const_cast): Implement.
872         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
873         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
874
875 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
876
877         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
878         too early. Make sure we explode if exprtype turns out to be a
879         NULL_TREE when it shouldn't be.
880
881 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
882
883         * cp-tree.h: New routine make_call_declarator.
884         * lex.c (make_call_declarator): Define it.
885         * except.c (init_exception_processing): Use it.
886         (expand_builtin_throw): Likewise.
887         (start_anon_func): Likewise.
888         * decl2.c (finish_file): Likewise.
889         * lex.c (cons_up_default_function): Likewise.
890         * parse.y: Likewise.
891         * pt.c (tsubst): Likewise.
892         
893 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
894
895         * decl2.c (groktypefield): Remove unused code.
896
897 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
898
899         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
900         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
901         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
902         nonempty_cv_qualifiers.
903         * hash.h: Rebuild.
904         
905         * lex.c (make_pointer_declarator): Change type_quals into
906         cv_qualifiers.
907         (make_reference_declarator): Likewise.
908         
909 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
910
911         * decl.c (start_function): Only check interface_* for templates
912         with flag_alt_external_templates.
913
914         * call.c (build_new_op): Check for comparison of different enum types.
915         (build_over_call): Fix arg # output.
916
917         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
918
919 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
920
921         * call.c (build_new_op): Check for erroneous args.
922
923         * call.c (build_new_method_call): Add missing args to cp_error.
924
925         * tree.c (error_type): Dont print reference-to-array.
926
927         * typeck.c (convert_for_assignment): Don't say contravariance for
928         removing const.
929
930 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
931
932         * call.c (build_over_call): Diagnose bad convs for `this'.
933
934         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
935         on _ctor_arg.
936
937         * call.c (convert_like): Handle bad convs.
938         (build_over_call): Handle bad convs better.
939
940         * decl2.c: -fansi-overloading is now the default.
941
942         * call.c (build_new_method_call): Check for erroneous args.
943
944         * pt.c (instantiate_class_template): Propagate
945         TYPE_USES_MULTIPLE_INHERITANCE.
946
947 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
948
949         * call.c (enforce_access): Add static to routine.
950
951 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
952
953         * call.c (build_user_type_conversion_1): Fix bad handling.
954         (compare_ics): Likewise.
955
956 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
957
958         * call.c (standard_conversion): Oops.
959
960 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
961
962         * g++.c: Update test for win32 (&& ! cygwin32).
963
964 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
965
966         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
967         (ptr_reasonably_similar): New fn.
968         * call.c (BAD_RANK): New rank.
969         (ICS_BAD_FLAG): New macro.
970         (standard_conversion): Handle almost-right pointer conversions.
971         (reference_binding): Handle bad rvalue bindings.
972         (add_*_candidate): Stuff.
973         (build_over_call): Pass bad conversions to convert_for_initialization.
974         (compare_ics): Handle bad convs.
975         (joust): Likewise.
976
977 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
978
979         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
980         integer_type_node when computing pointer offsets.
981
982 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
983
984         * tree.c (lvalue_type): New fn.
985         (error_type): New fn.
986         * call.c (op_error): Use error_type.
987         (add_conv_candidate): Use lvalue_type.
988         (add_builtin_candidates): Likewise.
989         * error.c (args_as_string): Use error_type.
990
991 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
992
993         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
994         (tsubst): Not here.
995
996         * decl.c (init_decl_processing): With -ansi, __null's type is the
997         signed integral type with the same number of bits as a pointer.
998         Introduce a new variable null_node for it.
999         * cp-tree.h: Adjust.
1000         * call.c (null_ptr_cst_p): Adjust.
1001
1002 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
1003
1004         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
1005         optimize.
1006
1007 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
1008
1009         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
1010         fns of classes without virtual functions.
1011
1012         * call.c (add_function_candidate): Handle `this' specially.
1013         (compare_ics): Likewise.
1014
1015 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
1016
1017         * typeck.c (build_conditional_expr): Fix handling of __null.
1018
1019         * decl2.c (comdat_linkage): New fn.
1020         (import_export_vtable): Use it.
1021         (import_export_decl): Use it.
1022         * method.c (make_thunk): Use it.
1023
1024 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
1025
1026         * pt.c (end_template_decl): If we don't actually have parms, return.
1027         * parse.y (template_header): Accept 'template <>'.
1028
1029         * errfn.c: Allow 5 args.
1030
1031 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
1032
1033         * tree.c (make_temp_vec): New fn.
1034         * pt.c (push_template_decl): Handle partial specs.
1035         (instantiate_class_template): Likewise.
1036         (more_specialized): Use get_bindings.
1037         (more_specialized_class): New fn.
1038         (get_class_bindings): New fn.
1039         (most_specialized_class): New fn.
1040         (do_function_instantiation): List candidates for ambiguous case.
1041         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
1042         (shadow_tag): Call push_template_decl for partial specializations.
1043         * parse.y: Likewise.
1044         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
1045         DECL_TEMPLATE_MEMBERS.
1046         * call.c (print_z_candidates): Reduce duplication.
1047
1048 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
1049
1050         * decl2.c (lang_decode_option): Allow -fansi-overloading.
1051
1052 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
1053
1054         * pt.c (get_bindings): New fn.
1055         (most_specialized): Likewise.
1056         (do_function_instantiation): Use them.
1057         (add_maybe_template): New fn.
1058         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
1059         * call.c (build_new_op): Handle guiding decls.
1060         (build_new_function_call): Likewise.
1061         * decl2.c (finish_file): Likewise.
1062
1063         * decl2.c (mark_used): Do synthesis here.
1064         * call.c (build_method_call): Not here.
1065         (build_over_call): Or here.
1066         * typeck.c (build_function_call_real): Or here.
1067         * tree.c (bot_manip): Call mark_used on functions used in default
1068         args.
1069
1070 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
1071
1072         * decl2.c (import_export_vtable): Delete code that disabled vtable
1073         heuristic on systems with ASM_OUTPUT_EXTERNAL.
1074
1075 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
1076
1077         * typeck.c (build_x_function_call): Handle static call context
1078         better.
1079
1080         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
1081         the function, not its outer block.
1082
1083         * call.c (build_field_call): Pass fields on to build_opfncall
1084         regardless of TYPE_OVERLOADS_CALL_EXPR.
1085         (build_method_call): Pass on to build_new_method_call sooner.
1086
1087         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
1088         gives us.
1089         * class.c (instantiate_type): Don't put a POINTER_TYPE to
1090         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
1091         modifying it.
1092
1093 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
1094
1095         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
1096         (add_builtin_candidate): Don't take enums for ++.
1097         (build_new_method_call): Handle non-aggregates and field calls.
1098         Move new overloading code from...
1099         * cvt.c: Here.
1100
1101         * decl.c (grokparms): Don't check default args in templates.
1102
1103 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
1104
1105         * cvt.c (build_new_op): Fix args to build_unary_op.
1106         (add_builtin_candidates): Don't call type_promotes_to on float.
1107
1108         * decl.c (grokparms): Check the type of the default arg.
1109
1110         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
1111         returning NULL_TREE.
1112
1113         * typeck.c (build_x_binary_op): Avoid doing extra work.
1114         (build_x_unary_op): Likewise.
1115         (build_x_conditional_expr): Likewise.
1116         * cvt.c (build_over_call): Return.
1117         (add_builtin_candidate): Fix MEMBER_REF.
1118         (build_new_op): Likewise.
1119
1120 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
1121
1122         * method.c (build_overload_name): Put bug fix into code but leave
1123         disabled for now so we can be bug compatible with older releases
1124         that do repeats incorrectly.  In the future, we can enable it.
1125
1126 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
1127
1128         * cvt.c (convert_like): Don't call build_cplus_new twice.
1129
1130         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
1131         Control new overloading code with -fansi-overloading.
1132
1133 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
1134
1135         * cvt.c (build_over_call): Call build_cplus_new.
1136         * call.c (build_method_call): Likewise.
1137         * typeck.c (build_function_call_real): Likewise.
1138         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
1139         the COND_EXPR in a TARGET_EXPR so they use the same slot.
1140
1141         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
1142         recursive calls.
1143         * typeck.c (complete_type): Propagate
1144         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
1145
1146 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
1147
1148         * cvt.c (joust): More ?: kludging.  Sigh.
1149         (build_over_call): Don't try to synthesize global fns.
1150
1151         * search.c (lookup_conversions): Use binfo marking.
1152
1153 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
1154
1155         * search.c (build_mi_matrix): Use the correct value of cid
1156         when determining the new mi_size.
1157
1158 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
1159
1160         * cvt.c (add_builtin_candidates): Do consider type conversion ops
1161         for the first parms of += et al.
1162         (strip_top_quals): New fn.
1163         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
1164         (implicit_conversion): Likewise.
1165         (add_builtin_candidates): Be careful about arrays.
1166         (build_new_method_call): Handle vtable optimization.
1167
1168 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
1169
1170         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
1171         * cvt.c (reference_binding): Use it.
1172         (implicit_conversion): Use it.
1173         (add_builtin_candidate, COND_EXPR): Use it.
1174
1175         * cvt.c (build_new_function_call): Check for error args.
1176
1177         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
1178
1179         * gxx.gperf: Add __null.
1180         * hash.h: Regenerate.
1181         * lex.h: Add RID_NULL.
1182         * lex.c (init_lex): Create null_pointer_node here, stick it in
1183         RID_NULL.
1184         * decl.c (init_decl_processing): Still set its type here.
1185         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
1186         (convert_to_pointer_force): Likewise.
1187         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
1188         if (! pedantic).
1189         * call.c (convert_harshness): Use null_ptr_cst_p.
1190         * typeck.c (convert_for_assignment): Likewise.  Don't produce
1191         null_pointer_node.
1192
1193         * error.c (args_as_string): Handle lists of actual args, too.
1194         * cvt.c (null_ptr_cst): Support (void*)0 for now.
1195         (build_user_type_conversion_1): Improve diagnostics.
1196         (build_new_function_call): Likewise.
1197         (build_object_call): Likewise.
1198         (build_new_method_call): Likewise.  Move call before def diagnostic...
1199         (build_over_call): Here.
1200
1201         * cvt.c (build_new_method_call): Don't complain about no match if
1202         LOOKUP_SPECULATIVELY.
1203         (build_over_call): Fix 'this' for virtual fn.
1204         (build_new_method_call): Add diagnostic.
1205
1206 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
1207
1208         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
1209         constructors to be passed in.
1210         (build_over_call): Likewise.
1211         (build_user_type_conversion_1): Pass them in.
1212         (convert_like): Likewise.
1213         (build_object_call): Handle overloaded conversions.
1214         (build_over_call): Pass the right args to build_vfn_ref.
1215         (standard_conversion): Fix pmf convs.
1216         (joust): Handle comparing statics and non-statics.
1217         (build_new_method_call): New fn.
1218         * call.c (build_method_call): Call it if NEW_OVER.
1219
1220 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
1221
1222         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
1223         %D instead.
1224
1225 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
1226
1227         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
1228         instead of just maybe_build_cleanup so that we deallocate the
1229         thrown object.
1230
1231 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1232
1233         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
1234         * cp-tree.h (finish_prevtable_vardecl): Add decl.
1235
1236 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
1237
1238         * pt.c (instantiate_class_template): Call complete_type. Also, if
1239         we're at the end of the file and we just instantiated a template
1240         class with a vtable, call finish_prevtable_vardecl.
1241
1242         * error.c (dump_decl): Don't explode (or explode more gracefully
1243         as appropriate) if the object being dumped has a null type.
1244         (dump_expr): Likewise.
1245
1246         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
1247         by counting the number of nodes that we'll need before allocating
1248         the array.
1249         (lookup_fnfields): Fix comment.
1250         (breadth_first_search): Fix comment.
1251
1252 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
1253
1254         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
1255         TYPE_ALIGN.
1256         * class.c (finish_struct): Call cplus_decl_attributes here.
1257         (finish_struct_1): Not here.
1258         * cp-tree.h: Adjust.
1259
1260         * pt.c (type_unification): New parameter STRICT.
1261         (unify): If STRICT, don't allow cv addition or base deduction.
1262         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
1263
1264 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
1265
1266         * search.c (get_template_base{_recursive}): New fns.
1267         * pt.c (more_specialized): New fn.
1268         (do_function_instantiation): Use it.
1269         (unify): Handle base deduction.
1270         * cvt.c (joust): Use more_specialized.
1271         Don't arbitrarily choose between non-builtin candidates.
1272         (build_over_call): Call require_complete_type.
1273
1274         * decl.c (start_function): Statics are static even in a #pragma
1275         interface file.
1276
1277         * decl2.c (import_export_vtable): Disable vtable heuristic on
1278         systems with ASM_OUTPUT_EXTERNAL.
1279
1280         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
1281         (standard_conversion): No std conv to enum type.
1282
1283         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
1284         for ptm's.
1285
1286         * cvt.c (reference_binding): Bind directly to a base subobject of
1287         a class rvalue.
1288
1289         * cvt.c (build_new_op): Enforce access control.
1290
1291 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
1292
1293         * typeck2.c (process_init_constructor): When scanning the
1294         union for a named field, skip things that aren't FIELD_DECLs.
1295
1296         * method.c (synthesize_method): Don't scan fndecl's rtl if
1297         we're at the end of the file; just assume the function can't
1298         be inlined.
1299
1300 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
1301
1302         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
1303         it failed.
1304
1305         * cvt.c (build_user_type_conversion_1): Handle overloaded
1306         conversion ops.
1307
1308         * cvt.c (add_builtin_candidates): Don't consider type conversion
1309         operators for the first parameter of operator=.
1310
1311 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
1312
1313         * typeck.c (complete_type): Only call layout_type if we're not
1314         expanding a template.
1315
1316 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
1317
1318         * cvt.c (compare_ics): Oops.
1319
1320         * cvt.c (op_error): Oops.
1321
1322         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
1323         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
1324         (build_conv): Use them.
1325         (implicit_conversion): Use them.
1326         (convert_like): Handle them.
1327         (build_new_op): Handle builtin COND_EXPR again.
1328         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
1329         in lists of types for COND_EXPR.
1330         (add_builtin_candidate): Add enum candidates for COND_EXPR.
1331
1332 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
1333
1334         * typeck.c (build_modify_expr): Always attempt to build a call to
1335         the assignment operator, even if we're using a default one.
1336         (convert_for_initialization): Call complete_type.
1337
1338 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
1339
1340         * cvt.c (reference_binding): A REF_BIND gets the reference type.
1341         (implicit_conversion): Likewise.
1342         (convert_like): Likewise.
1343         (compare_ics): Likewise.
1344         (compare_qual): Likewise.
1345         (print_z_candidates): Handle no candidates.
1346         (build_new_op): Don't handle builtin COND_EXPR for now.
1347
1348 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
1349
1350         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
1351
1352 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
1353
1354         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
1355
1356         * cvt.c (build_builtin_candidate): Oops.
1357         (build_new_op): Oops.
1358
1359         * method.c (build_opfncall): Pass COND_EXPR on.
1360         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
1361         (add_builtin_candidate{,s}): Likewise.
1362         (add_builtin_candidates): Likewise.
1363         (print_z_candidates, op_error, build_new_op): Likewise.
1364         (type_decays_to): New fn.
1365         * lex.c (init_lex): Just say ?: for COND_EXPR.
1366
1367 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
1368
1369         * typeck.c (complete_type): Call layout_type rather than building
1370         a new array type.
1371
1372         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
1373         only use ptrdiff_t.
1374
1375 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
1376
1377         * cvt.c: Always compile the new overloading code (but don't use it).
1378         (implicit_conversion): Add a BASE_CONV when converting to
1379         the same class type.
1380         (convert_like): Handle BASE_CONV.
1381
1382 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
1383
1384         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
1385         (add_builtin_candidate): Likewise.
1386
1387         NEW_OVER changes:
1388         * typeck.c (build_x_function_call): Try an operator function
1389         whenever we call an object of class type.
1390         * method.c (build_opfncall): Pass CALL_EXPRs through.
1391         * cvt.c (implicit_conversion): Do const-ref case first.
1392         (add_conv_candidate, build_object_call, op_error): New fns.
1393         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
1394         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
1395         builtin candidates.
1396         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
1397         Fall back on preincrement handling.  Use op_error.  
1398         Handle warn_synth.
1399         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
1400         an error_mark_node.
1401         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
1402         properly.
1403
1404 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
1405
1406         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
1407
1408 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
1409
1410         * typeck.c (build_component_ref_1): Use build_component_ref
1411         instead of open coding it here.
1412
1413 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
1414
1415         * g++.c (main): Don't link with -lg++.
1416
1417         NEW_OVER changes:
1418         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
1419         result of build_type_conversion.
1420         (cp_convert): Only call build_method_call for ctors if
1421         build_type_conversion failed.
1422         (ptr_complete_ob): New function.
1423         (TYPE_PTR{,OB,MEM}_P): New macros.
1424         ({add,build}_builtin_candidate{,s}): New functions.
1425         (print_z_candidates): Handle builtins.
1426         (build_user_type_conversion_1): Don't use conversion fns for 
1427         converting to a base type.
1428         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
1429         (build_user_type_conversion): Use convert_from_reference.
1430         (build_new_op): New function.
1431         (build_over_call): Fix handling of methods.
1432         (compare_ics): Handle AMBIG_CONV properly.
1433         * typeck2.c: Increment abort count.
1434         * method.c (build_opfncall): Forward most requests to build_new_op.
1435         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
1436
1437 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1438
1439         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
1440         invalid second argument to dump_expr_list.
1441
1442 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
1443
1444         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
1445
1446 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
1447
1448         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
1449         ASSEMBLE_EXTERNAL.
1450
1451 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
1452
1453         * typeck2.c (process_init_constructor): New pedwarn for using { }
1454         to initialize a pointer to member function.
1455         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
1456         we can avoid the new error.
1457
1458 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
1459
1460         * typeck.c (build_ptrmemfunc1): New function to hide details of
1461         pointer to member functions better.
1462
1463 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
1464
1465         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
1466         methods into the actual method, as we know the implied object is
1467         not used.
1468
1469 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1470
1471         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
1472         inside a system header.
1473
1474 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
1475
1476         * call.c (build_method_call): Call complete_type on the
1477         instance type.
1478
1479 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
1480
1481         * typeck.c (build_component_ref): Always build up an OFFSET_REF
1482         for obj_ptr->func so that we can know which object to use in a
1483         method call.
1484
1485 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
1486
1487         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
1488         around things.  Also improve maintainability.
1489
1490 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
1491
1492         * decl.c (grokdeclarator): Check for overflow when evaluating an
1493         array dimension.
1494
1495 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
1496
1497         * cvt.c (cp_convert): Don't check for ambiguity with constructor
1498         if NEW_OVER.
1499
1500         * typeck.c (build_x_function_call): Pass function overload
1501         questions to new overloading code if NEW_OVER.
1502         * init.c (expand_aggr_init_1): Only check for type conversion ops
1503         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
1504         Don't check for ambiguity with constructor if NEW_OVER.
1505         * cvt.c (convert_to_reference): Dereference the result of a type
1506         conversion operator.
1507         (build_conv): Propagate ICS_USER_FLAG.
1508         (implicit_conversion): Call instantiate_type.
1509         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
1510         (add_function_candidate): Fix cv-quals on argtype.
1511         (print_z_candidates): New function.
1512         (build_new_function_call): Call it.
1513         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
1514         consider non-converting constructors.
1515         Call print_z_candidates.
1516         Return an AMBIG_CONV for an ambiguous conversion.
1517         (build_user_type_conversion): Handle AMBIG_CONV.
1518         (convert_like): Fix test for building TARGET_EXPR.
1519         Call instantiate_type.
1520         Handle AMBIG_CONV and LVALUE_CONV.
1521         (build_over_call): Handle 0 args and ellipsis.
1522         * cp-tree.def: Add AMBIG_CONV.
1523
1524 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
1525
1526         * decl.c (lookup_name_real): If we find mem in obj when parsing
1527         `obj->mem', make sure we return the right value.
1528
1529 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
1530
1531         * search.c (get_base_distance): Call complete_type.
1532
1533 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
1534
1535         * decl.c (store_bindings): Make static.
1536
1537 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
1538
1539         * init.c (expand_aggr_init_1): Don't check type conversions if
1540         NEW_OVER.
1541
1542         * cvt.c (z_candidate): Put back template field.
1543         (add_function_candidate): Set it.
1544         (add_template_candidate): Likewise.
1545         (joust): Use it.
1546         (compare_qual): Handle references and pointers to members.
1547         (compare_ics): Handle reference bindings.
1548
1549         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
1550
1551 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
1552
1553         * call.c (compute_conversion_costs): Call complete_type.
1554
1555         * tree.c (vec_binfo_member): Use comptypes instead of comparing
1556         pointers, so we can handle template parameters.
1557
1558 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
1559
1560         * cvt.c (cp_convert_to_pointer): We have to call complete_type
1561         here; let's make it explicit instead of a side effect of an
1562         error check.
1563
1564 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
1565
1566         * cvt.c (z_candidate): Remove template field.
1567         (reference_binding): Handle binding to temporary.
1568         (implicit_conversion): Likewise.
1569         (add_function_candidate): Handle artificial constructor parms.
1570         Handle functions with too few parms.
1571         (add_template_candidate): New function.
1572         (build_user_type_conversion_1): Handle constructors.
1573         (convert_like): Likewise.
1574         (build_over_call): Likewise.
1575         (build_new_function_call): Support templates.
1576         (compare_ics): Fix reference, inheritance handling.
1577
1578 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
1579
1580         * decl.c: Add signed_size_zero_node.
1581         (init_decl_processing): Build it.
1582         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
1583         when we're trying to make a negative delta.
1584
1585 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1586
1587         Stop doing this damn index==strchr variable name confusion.
1588         * class.c (add_virtual_function): Change local var INDEX to be
1589         named IDX.
1590         (add_method): Likewise.
1591         * lex.c (print_parse_statistics): Likewise.
1592         * search.c (make_memoized_table_entry): Likewise.
1593         (lookup_fnfields_here): Likewise.
1594         (lookup_field): Likewise.
1595         (lookup_fnfields): Likewise.
1596         (get_baselinks): Likewise.
1597         * sig.c (build_signature_table_constructor): Likewise.
1598         (build_signature_method_call): Likewise.
1599         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
1600         (get_member_function_from_ptrfunc): Likewise.
1601         (build_ptrmemfunc): Change local var INDEX to be IDX.
1602         (c_expand_start_case): Likewise.
1603
1604 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
1605
1606         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
1607         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
1608         (convert_to_reference): Use build_type_conversion to convert to
1609         the reference type directly.
1610         (standard_conversion): Fix void* case, non-conversions.
1611         (reference_binding): Fix expr == 0 case, non-conversions.
1612         (convert_like): Support REF_BIND.
1613         (compare_qual): Split out from compare_ics.
1614         (compare_ics): Use it, handle icses with only a qual_conv.
1615
1616         * init.c (expand_vec_init): Don't crash if decl is NULL.
1617
1618 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
1619
1620         * mpw-config.in: New file, configury for Mac MPW.
1621         * mpw-make.sed: New file, makefile editing for MPW.
1622
1623 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
1624
1625         * pt.c (instantiate_class_template): Call repo_template_used.
1626
1627         * search.c (lookup_conversions): Only lookup conversions in
1628         complete types.
1629
1630 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1631
1632         * cp-tree.def: Renamed from tree.def, to avoid confusion with
1633         gcc's tree.def.
1634         * cp-tree.h, lex.c: Include cp-tree.def.
1635         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
1636
1637 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
1638
1639         * init.c (build_vec_delete_1): Call complete_type.
1640
1641 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
1642
1643         * except.c (start_anon_func): Make sure anonymous functions are
1644         never external.
1645
1646 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
1647
1648         * decl.c (finish_function): If function_depth > 1, set nested.
1649
1650         * decl2.c (grokbitfield): Revert Bob's change.
1651         * class.c (finish_struct_1): Fix handling of named bitfield widths.
1652
1653 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
1654
1655         * pt.c (add_pending_template): Handle types.
1656         (lookup_template_class): With -fexternal-templates, just add the class
1657         to pending_templates instead of instantiating it now.
1658         * decl2.c (finish_file): Handle types in pending_templates.
1659
1660 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
1661
1662         * decl2.c (grokbitfield): Handle constant decls appropriately.
1663         Give an appropriate error message now instead of spewing core
1664         later.
1665
1666 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
1667
1668         * decl2.c: Don't turn on thunks by default for now.
1669
1670 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
1671
1672         * typeck.c (complete_type): Handle error_mark_node.
1673         (common_type, OFFSET_TYPE): Handle template_type_parms.
1674
1675 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
1676
1677         * pt.c (instantiate_decl): If at_eof, call import_export_decl
1678         regardless of DECL_INLINE.
1679
1680         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
1681
1682         * class.c (finish_struct_bits): Copy TYPE_SIZE.
1683
1684         * rtti.c (build_dynamic_cast): Support templates.
1685         * tree.def: Support DYNAMIC_CAST_EXPR.
1686         * pt.c (tsubst_copy): Likewise.
1687         * decl2.c (build_expr_from_tree): Likewise.
1688
1689 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
1690
1691         * typeck.c (build_static_cast): Support templates.
1692         (build_const_cast): Likewise.
1693         * tree.def: Support CONST/STATIC_CAST_EXPR.
1694         * pt.c (tsubst_copy): Likewise.
1695         * decl2.c (build_expr_from_tree): Likewise.
1696
1697 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
1698
1699         * decl2.c (finish_vtable_vardecl): Don't trust
1700         TREE_SYMBOL_REFERENCED for vtables of local classes.
1701
1702 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
1703
1704         * pt.c (tsubst_copy): Handle operator T.
1705
1706 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1707
1708         * init.c (build_delete): Move creation of PARMS inside test of
1709         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
1710
1711 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
1712
1713         * typeck.c (build_conditional_expr): Don't assume that
1714         the arguments to ?: are always pointers or records.
1715
1716 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
1717
1718         * decl2.c (import_export_decl): Still emit static/weak/comdat
1719         copies of inline template functions with -fno-implicit-templates.
1720
1721 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
1722
1723         * init.c (build_delete): Determine the complete basetype
1724         path to the destructor we're calling.
1725
1726 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
1727
1728         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
1729         initialize the enum, because we really and truly don't know where
1730         it came from.
1731         (start_enum): Don't copy integer_zero_node because
1732         build_enumerator will do it.
1733
1734 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
1735
1736         * decl.c (finish_function): Do access control on base destructors.
1737
1738         * pt.c (tsubst, case FUNCTION_DECL): Set up
1739         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
1740         hose us.
1741
1742 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
1743
1744         * cvt.c (build_up_reference): If we have already extended the
1745         lifetime of the temporary, don't try it again.
1746         * typeck.c (c_expand_return): Don't try and convert the return
1747         value twice when we want a reference, once is enough.
1748         
1749 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
1750
1751         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
1752         LOOKUP_ONLYCONVERTING at all for now.
1753
1754         * search.c (add_conversions): Put the conversion function in
1755         TREE_VALUE, the basetype in TREE_PURPOSE.
1756         * cvt.c (build_type_conversion): Adjust.
1757         * cvt.c (build_expr_type_conversion): Adjust.
1758         * call.c (user_harshness): Adjust.
1759
1760 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
1761
1762         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
1763         backend's benefit.
1764
1765 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
1766
1767         * except.c (expand_start_catch_block): Add a dummy region, if we
1768         get an error, so that we can avoid core dumping later.
1769
1770 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
1771
1772         * cp-tree.h (OFFSET_REF): Remove.
1773         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
1774         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
1775         * init.c (expand_aggr_init_1): Likewise.
1776         (build_new): Likewise.
1777         * typeck.c (expand_target_expr): Likewise.
1778
1779 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
1780
1781         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
1782         TARGET_EXPR.
1783
1784 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
1785
1786         * cvt.c (build_up_reference): Redo how and when temporaries are
1787         created.
1788         * decl.c (grok_reference_init): Don't try and be smart about
1789         running cleanups.
1790
1791 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
1792
1793         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
1794         (TARGET_EXPR...), now that it has 4 arguments.
1795         * tree.c (build_cplus_new): Likewise.
1796
1797 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
1798
1799         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
1800
1801         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
1802         * decl.c (struct saved_scope): Remove named_labels,
1803         {base,member}_init_list.
1804         (maybe_push_to_top_level): Don't set them.  Call
1805         push_cp_function_context if appropriate.
1806         (pop_from_top_level): Likewise.
1807
1808         * method.c (do_build_assign_ref): Remove obsolete check of
1809         TYPE_HAS_ASSIGN_REF (basetype).
1810
1811         * decl.c (grokfndecl): Diagnose user definition of
1812         implicitly-declared methods.
1813
1814 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
1815
1816         * method.c (do_build_copy_constructor): Add code to give
1817         meaningful error messages instead of crashing.
1818         (do_build_assign_ref): Don't synthesize assignment operators for
1819         classes containing reference or const members.
1820
1821         * class.c (struct base_info): Remove cant_synth_copy_ctor
1822         and cant_synth_asn_ref.
1823         (finish_base_struct): Remove the code that tries to conditionalize
1824         synthesis of copy constructors & assignment operators based on
1825         access permissions. Instead, let it fail when it tries to
1826         synthesize the copy constructor. This will give meaningful error
1827         messages instead of silently generating code to perform a bitcopy.
1828
1829 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
1830
1831         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
1832         determining types for constant values.
1833
1834         * decl.c (struct named_label_list): Use instead of stuffing
1835         random items into a TREE_LIST node.
1836         (named_label_uses): Use the new struct.
1837         (poplevel): Likewise.
1838         (lookup_label): Likewise.
1839         (define_label): Add an error message to tell the user the line
1840         where the goto is located in addition to the destination of the
1841         goto.
1842         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
1843         named_label_uses.
1844         (finish_function): Likewise.
1845         
1846         (start_decl): Complain about defining a static data member
1847         in a different type from which it was declared.
1848
1849 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
1850
1851         * cvt.c (build_expr_type_conversion): Adjust.
1852
1853 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
1854
1855         * call.c (build_method_call): Always convert 'this' to the
1856         appropriate type.
1857
1858         * search.c (add_conversions): Put the conversion function in
1859         TREE_VALUE, the type in TREE_PURPOSE.
1860         * cvt.c (build_type_conversion): Adjust.
1861         * call.c (user_harshness): Adjust.
1862
1863         * method.c (emit_thunk): Call temporary_allocation and
1864         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
1865
1866         * tree.c (build_cplus_array_type): Handle tweaking of
1867         TYPE_MAIN_VARIANT here.
1868         * typeck.c (common_type): Not here.
1869
1870         * typeck.c (complete_type): Only try to complete an array type if
1871         it has a domain.
1872
1873 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
1874
1875         * decl.c (grokvardecl): Call complete_type.
1876         (grokdeclarator): Call complete_type for PARM_DECLs.
1877
1878 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1879
1880         * pt.c (instantiate_class_template): Re-set
1881         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
1882
1883 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
1884
1885         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
1886         smart enough to do it right.
1887         * tree.c (cp_expand_decl_cleanup): Likewise.
1888         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
1889         cp_expand_decl_cleanup.
1890         (store_parm_decls): Likewise.
1891         (hack_incomplete_structures): Likewise.
1892         * except.c (push_eh_cleanup): Likewise.
1893
1894 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
1895
1896         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
1897         frontend to the backend where it belongs.
1898         * tree.c (unsave_expr): Likewise.
1899         (unsave_expr_now): Likewise.
1900         * tree.def (UNSAVE_EXPR): Likewise.
1901         * cp-tree.h (unsave_expr): Likewise.
1902         (unsave_expr_now): Likewise.
1903
1904 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
1905
1906         * init.c (emit_base_init): Make sure the partial EH cleanups live
1907         on the function_obstack.
1908
1909 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
1910
1911         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
1912         when checking for pointer types.
1913
1914 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
1915
1916         * pt.c (instantiate_class_template): Remove obsolete check for
1917         access declarations.
1918
1919 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
1920
1921         * call.c (build_overload_call): Simplify calls to
1922         build_overload_call by removing last parameter.
1923         (build_method_call): Likewise.
1924         * cp-tree.h: Likewise.
1925         * method.c (build_opfncall): Likewise.
1926         * typeck.c (build_x_function_call): Likewise.
1927
1928 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
1929
1930         * call.c (default_parm_conversions): Factor out common code.
1931         (build_method_call): Use it.
1932         (build_overload_call_real): Use it.
1933
1934 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
1935
1936         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
1937         but pedwarn as the code is bogus.
1938         * typeck.c (decay_conversion): Likewise.
1939         (build_function_call_real): Use build_addr_func instead of
1940         default_conversion.  Don't allow pointer-to-method functions down
1941         here.
1942         (build_unary_op): Use real pointer-to-member functions instead of
1943         fake ones.
1944         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
1945         (convert_for_assignment): Removed some obsolete code.
1946         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
1947         build_x_function_call instead of current_class_ptr.  Only call
1948         digest_init once on an initializer, we do this just checking
1949         TREE_TYPE.
1950         (build_expr_from_tree): Pass current_class_ref to
1951         build_x_function_call instead of current_class_ptr.
1952         * init.c (build_member_call): Likewise.
1953         * pase.y: Likewise.
1954         * error.c (dump_expr): Handle OFFSET_REFs better.
1955         * pt.c (unify): Handle pointer-to-member functions better.
1956         * decl.c (finish_function): Clear out current_class_ref just like
1957         we do for current_class_ptr.
1958
1959         * typeck.c (get_delta_difference): Handle virtual bases better.
1960
1961 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
1962
1963         * sig.c (build_signature_table_constructor): Use the delta for
1964         the original basetype for this virtual function with thunks.
1965         (build_signature_method_call): We still need to adjust 'this'
1966         with thunks.
1967
1968 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
1969
1970         * call.c (build_addr_func): New routine.  Used to get the `real'
1971         address of a function or a method.  Needed to avoid getting a
1972         pointer-to-member function.
1973         (build_call): New routine to build CALL_EXPRs.
1974         (build_method_call): Use it.
1975         * cvt.c (convert_to_aggr): Likewise.
1976         * typeck.c (build_function_call_real): Likewise.
1977         * sig.c (build_signature_table_constructor): Use build_addr_func.
1978         * cp-tree.h (build_call, build_addr_func): Declare them.
1979
1980 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
1981
1982         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
1983         * parse.y: Remove uses of LOOKUP_AGGR.
1984
1985 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
1986
1987         * *.[chy]: Rename current_class_decl to current_class_ptr, and
1988         C_C_D to current_class_ref.
1989
1990 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
1991
1992         * call.c (convert_harshness): Tighten up pointer conversions.
1993
1994 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
1995
1996         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
1997         (finish_file): Likewise.
1998
1999 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
2000
2001         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
2002
2003         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
2004         code.
2005
2006 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
2007
2008         * decl2.c: Turn on thunks by default where supported.
2009
2010 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
2011
2012         * cp-tree.h (build_overload_call_maybe): Removed.
2013         * call.c (build_overload_call_real): Invert meaning of last arg to
2014         be require_complete.
2015         (build_overload_call): Likewise.
2016         * typeck.c (build_x_function_call): Use build_overload_call_real
2017         instead of build_overload_call_maybe.
2018
2019 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
2020
2021         * decl2.c (finish_file): Don't try to emit functions that haven't
2022         been compiled.
2023
2024 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
2025
2026         * decl2.c (finish_vtable_vardecl): Oops.
2027
2028         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
2029         Also store the bindings from previous_class_values.
2030         (pop_from_top_level): Restore them.
2031
2032 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
2033
2034         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
2035         symbol has been referenced.
2036         (finish_file): Re-join synthesis/vtable loop with inline emission
2037         loop, disable inlining when an inline is output.
2038
2039 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
2040
2041         * except.c (init_exception_processing): Setup saved_in_catch.
2042         (push_eh_cleanup): Reset __eh_in_catch.
2043         (expand_start_catch_block): Set __eh_in_catch.
2044
2045 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
2046
2047         * except.c (push_eh_cleanup): Add tracking for whether or not we
2048         have an active exception object.
2049         (expand_builtin_throw): Use it to make sure a rethrow without an
2050         exception object is caught.
2051
2052 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
2053
2054         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
2055         cache.
2056
2057 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
2058
2059         * decl2.c (finish_file): Also use sentries for vars with
2060         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
2061         created).
2062
2063         * lex.c (handle_cp_pragma): Disable #pragma
2064         interface/implementation if SUPPORTS_ONE_ONLY > 1.
2065
2066 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
2067
2068         * method.c (emit_thunk): Wrap default case in
2069         temporary/permanent_allocation.
2070
2071         * method.c (make_thunk): Use DECL_ONE_ONLY.
2072         (emit_thunk): Call assemble_end_function.
2073
2074 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
2075
2076         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
2077         (import_export_decl): Likewise.
2078         (finish_prevtable_vardecl): Disable vtable hack if
2079         SUPPORTS_ONE_ONLY > 1.
2080
2081 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
2082
2083         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
2084         PREDECREMENT_EXPRs take two arguments, not one.
2085
2086 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
2087
2088         * class.c (build_vtable_entry): Don't build thunks for abstract
2089         virtuals.
2090
2091         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
2092         frontend.
2093
2094 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
2095
2096         * class.c (set_rtti_entry): Use size_zero_node.
2097         (build_vtable): Likewise.
2098
2099 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
2100
2101         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
2102         (prepare_fresh_vtable): Likewise.
2103
2104 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
2105
2106         * method.c (emit_thunk): Call mark_used on the target function.
2107
2108         * call.c (build_method_call): Don't warn about pending templates.
2109
2110 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
2111
2112         * decl2.c (finish_file): Fix list walking logic.
2113
2114         * typeck2.c (check_for_new_type): Only warn if -pedantic.
2115
2116 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
2117
2118         * class.c (finish_struct_1): Remove old code for
2119         dont_allow_type_definitions.
2120         * cp-tree.h: Likewise.
2121         * spew.c: Make sure cp-tree.h is included before parse.h, so the
2122         definition of flagged_type_tree is found before it is used.
2123         * lex.c: Likewise.
2124         * parse.y: Added the ftype member to the type union, and changed a
2125         number of rules to use it instead of ttype. Added calls to
2126         check_for_new_type() as appropriate.
2127         * typeck2.c (check_for_new_type): New function for checking
2128         if a newly defined type appears in the specified tree.
2129         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
2130         for check_for_new_type().
2131
2132 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
2133
2134         * decl2.c (finish_file): Only use a sentry if the decl is public.
2135
2136         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
2137         don't pass LOOKUP_ONLYCONVERTING.
2138
2139 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
2140
2141         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
2142         properly keeps track of const and volatile type modifiers.
2143
2144 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
2145
2146         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
2147         * pt.c (comp_template_args): Use it.
2148
2149         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
2150         assemble_external for artificial function decls.
2151
2152         * decl.c (cp_finish_decl): Oops.
2153
2154 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
2155
2156         * decl2.c (import_export_decl): Put static data member templates
2157         into common storage, or make them weak, depending on whether they
2158         are dynamically or statically initialized.
2159         (get_sentry): New function.
2160         (finish_file): Do import_export_decl for static data members before
2161         building the init/fini functions.  Don't init/fini a variable that's
2162         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
2163         push/pop_temp_slots.
2164         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
2165         expand_static_init thang.
2166         * method.c (get_id_2): New function.
2167
2168 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
2169
2170         * parse.y (empty_parms): Make sure we use C++-style prototypes
2171         when we're declaring member functions.
2172
2173 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
2174
2175         * Makefile.in (CONFLICTS): 16 s/r conflicts.
2176         * parse.y (self_template_type): New nonterminal.
2177
2178 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
2179
2180         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
2181         name.
2182         * parse.y (base_class.1): Allow 'typename foo::bar'.
2183
2184         * lex.c (check_newline): Remove #pragma code that plays with the
2185         input stream, since we now deal with tokens.  Clear nextchar when
2186         we're done.
2187         (handle_cp_pragma): Use real_yylex.
2188         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
2189         in one place.
2190
2191         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
2192
2193         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
2194
2195 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
2196
2197         * parse.y: New token SELFNAME for potential constructor.
2198         * spew.c (yylex): Handle it.
2199         * lex.c (identifier_type): Produce it.
2200
2201         * parse.y (complete_type_name): In :: case, don't push class binding.
2202         (complex_type_name): Likewise.
2203
2204 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
2205
2206         * typeck.c (build_reinterpret_cast): Handle pointer to member
2207         functions.
2208
2209 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2210
2211         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
2212         pragmas.
2213         (check_newline): Put the vtable/unit/implementation/interface pragma
2214         code into handle_cp_pragma, replacing it with a call.
2215         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
2216         args.  Get the next token after handling the pragma token.
2217
2218 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
2219
2220         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
2221         (convert_to_pointer_force): Likewise.
2222
2223         * init.c (build_new): Fix array new without -fcheck-new.
2224
2225 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
2226
2227         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
2228         tree.c: Lose TYPE_NESTED_NAME.
2229
2230         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
2231         as identifiers.
2232
2233         * tree.def: Add VEC_INIT_EXPR.
2234         * expr.c (cplus_expand_expr): Handle it.
2235         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
2236         the extra file-scope symbol nastiness.
2237
2238 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
2239
2240         * method.c (make_thunk): Thunks are static.
2241         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
2242
2243         * decl2.c (mark_vtable_entries): Emit thunks as needed.
2244         (finish_file): Don't emit them here.
2245
2246 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
2247
2248         * rtti.c (build_dynamic_cast): Handle null pointers.
2249         (ifnonnull): New function.
2250
2251 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
2252
2253         * call.c (build_method_call): Remember the original basetype we
2254         were called with. Give an error message instead of trying
2255         (incorrectly) to call a non-static member function through a
2256         non-inherited class.
2257
2258         * search.c (expand_upcast_fixups): Mark the new fixup as
2259         DECL_ARTIFICIAL.
2260
2261 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
2262
2263         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
2264
2265         * class.c (set_rtti_entry): Fix for thunks.
2266
2267         * decl2.c (import_export_decl): Still emit typeinfo fns for
2268         cv-variants of builtin types.
2269
2270         * rtti.c (expand_class_desc): Set up base_info_type_node here.
2271         (init_rtti_processing): Instead of here.
2272
2273 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
2274
2275         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
2276         (build_typeid): Only complain about taking dynamic typeid without
2277         -frtti.
2278
2279         * decl2.c: flag_rtti defaults to 1.
2280
2281         * rtti.c (get_tinfo_var): The general class case is now smaller.
2282         (init_rtti_processing): Pack the latter three fields of base_info
2283         into 32 bits.
2284
2285 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
2286
2287         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
2288
2289 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
2290
2291         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
2292         (push_memoized_context): Split out code to undefer pop_type_level to
2293         (clear_memoized_cache): here.
2294         (pop_memoized_context): We can only handle one layer of deferral of
2295         pop_type_level so clear the cache, if there was a previous level.
2296
2297 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
2298
2299         * rtti.c (init_rtti_processing): Build up base_info_type_node.
2300         (expand_class_desc): Use one pointer to an array of base_info
2301         structs, passed using a CONSTRUCTOR.
2302
2303 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
2304
2305         * class.c (build_vbase_path): Remove block extern for
2306         flag_assume_nonnull_objects here.
2307         (build_vfn_ref): Split out functionality into build_vtbl_ref.
2308         (build_vtbl_ref): New routine.
2309         (build_vtable): Set up rtti info here.
2310         (add_virtual_function): Note in CLASSTYPE_RTTI the best
2311         place where we can get the rtti pointers from to avoid having to
2312         search around for a place.
2313         (finish_base_struct): Likewise.
2314         (finish_struct_1): Likewise.  Never create totally new vtables
2315         with totally new vtable pointers for rtti.  Disable code to layout
2316         vtable pointers better until we want to break binary
2317         compatibility.
2318         * rtti.c (build_headof_sub): New routine to convert down to a
2319         sub-object that has an rtti pointer in the vtable.
2320         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
2321         maintainable.
2322         (build_dynamic_cast): Make sure we have saved it, if we need to.
2323         * search.c (dfs_init_vbase_pointers): Disable code that deals with
2324         a more efficient vtable layout, enable later.
2325         * call.c (flag_assume_nonnull_objects): Moved declaration to
2326         * cp-tree.h: here.  Declare build_vtbl_ref.
2327         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
2328         function calls that want a tree.
2329
2330 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
2331
2332         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
2333         other X subobjects in the most derived type.  Ack.
2334
2335         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
2336         get_typeid will do it for us.
2337         (get_typeid_1): Break out call-building for expand_*_desc to use.
2338         (get_typeid): Call it.
2339         (expand_*_desc): Likewise.
2340         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
2341         and void *.
2342         (init_decl_processing): Lose builtin_type_tdescs lossage.
2343         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
2344
2345 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
2346
2347         * pt.c (tsubst): When calling set_nested_typename, use
2348         TYPE_NESTED_NAME (current_class_type) instead of
2349         current_class_name.
2350
2351         * decl.c (pushdecl): Likewise.
2352         (pushdecl_class_level): Likewise.
2353         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
2354         set_nested_typename.
2355
2356 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
2357
2358         * rtti.c (synthesize_tinfo_fn): Handle arrays.
2359
2360         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
2361
2362 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
2363
2364         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
2365         (init_rtti_processing): Lose bad_cast_type.
2366         (build_dynamic_cast): Use throw_bad_cast.
2367
2368         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
2369
2370         * decl2.c (finish_file): Don't synthesize artificial functions
2371         that are external and not inline.
2372
2373         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
2374
2375         * decl2.c (finish_file): Handle having new inlines added to
2376         saved_inlines by synthesis.
2377
2378         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
2379
2380 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
2381
2382         RTTI rewrite to initialize nodes as needed, not require that
2383         users #include <typeinfo>, complete functionality and reduce wasted 
2384         space.
2385         * rtti.c (init_rtti_processing): New fn.
2386         (build_typeid): The vtable entry is now a function.
2387         (get_tinfo_var): New fn.
2388         (get_tinfo_fn): Likewise.
2389         (get_typeid): Use it.
2390         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
2391         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
2392         points __rtti_*.
2393         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
2394         (synthesize_tinfo_fn): New fn.
2395         * method.c (build_t_desc_overload): Lose.
2396         (build_overload_with_type): More generic.
2397         * decl.c (init_decl_processing): Call init_rtti_processing.
2398         * class.c (set_rtti_entry): Use get_tinfo_fn.
2399         * decl2.c (mark_vtable_entries): Mark the rtti function.
2400         (finish_prevtable_vardecl): Don't build_t_desc.
2401         (import_export_decl): Handle tinfo functions.
2402         (finish_file): Likewise.
2403         * typeck.c (inline_conversion): New fn.
2404         (build_function_call_real): Use it.
2405         * cp-tree.h: Add decls.
2406
2407         * method.c (hack_identifier): Also convert component_refs from
2408         references.
2409
2410         * lex.c (cons_up_default_function): Use the type, not the name, in
2411         declspecs.
2412
2413         * decl2.c (import_export_vtable): Fix weak vtables.
2414
2415 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
2416
2417         * search.c (get_base_distance_recursive): Fix access checks for
2418         protected bases.
2419
2420 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2421
2422         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
2423         cp-tree.h.
2424         (convert_harshness): Add prototypes wrapped by PROTO.
2425         * decl2.c (grok_function_init): Likewise.
2426         (do_toplevel_using_decl): Change to void return type.
2427         * class.c (build_vtable_entry): Remove decl of make_thunk.
2428         (merge_overrides): Fix order of arg definitions.
2429         (finish_vtbls): Likewise.
2430         (fixup_vtable_deltas): Likewise.
2431         (modify_all_direct_vtables): Likewise.
2432         (modify_all_indirect_vtables): Likewise.
2433         * search.c (get_base_distance_recursive): Likewise.
2434         (get_abstract_virtuals_1): Likewise.
2435         (fixup_virtual_upcast_offsets): Likewise.
2436         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
2437         * init.c (perform_member_init): Fix order of arg definitions.
2438         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
2439         * cp-tree.h (make_thunk): Add decl.
2440         (overload_template_name, push_template_decl): Add decls.
2441         (do_toplevel_using_decl): Change to void return type.
2442         (vec_binfo_member): Add decl.
2443
2444 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2445
2446         * typeck.c (mark_addressable, convert_for_assignment,
2447         convert_for_initialization, pointer_int_sum, pointer_diff,
2448         unary_complex_lvalue): Add prototypes wrapped by PROTO.
2449         (convert_sequence): #if 0 fn decl, since definition also is.
2450
2451 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
2452
2453         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
2454         cast to pointer types for type searching.
2455
2456 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2457
2458         * typeck.c (get_delta_difference): Use cp_error, not error, in the
2459         case where BINFO == 0.
2460
2461 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
2462
2463         * call.c (build_method_call): Fix wording of error messages so
2464         constructors come out right.
2465
2466 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
2467
2468         * decl.c (push_overloaded_decl): Don't warn about hidden
2469         constructors when both the type and the function are declared
2470         in a system header file.
2471
2472 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
2473
2474         * class.c (finish_struct_1): Propagate the TYPE_PACKED
2475         flag for the type to the type's fields.
2476
2477 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2478
2479         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
2480
2481 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
2482
2483         * class.c (base_info, finish_base_struct): Replace 
2484         needs_virtual_dtor with base_has_virtual.
2485
2486         (finish_struct_1): Remove the old code that tried to make default
2487         destructors virtual. Use base_has_virtual when checking if we need
2488         to add a vtable entry for the rtti code.
2489
2490 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
2491
2492         * pt.c (push_template_decl): Complain about template decl with
2493         inappropriate declaration.
2494
2495 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
2496
2497         * typeck.c (build_x_unary_op): Remove bogus check for taking
2498         the address of a member function.
2499
2500 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
2501
2502         * parse.y (constructor_declarator): Only push the class if
2503         we are not already in the class.
2504
2505 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
2506
2507         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
2508         Add additional argument to INIT_CUMULATIVE_ARGS.
2509
2510 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
2511
2512         * decl.c (shadow_tag): Fix error about anon union with methods.
2513
2514         * parse.y (self_reference): Only generate a self-reference if this
2515         is a non-template class.
2516         (opt.component_decl_list): Only use it if it was generated.
2517
2518         * parse.y (component_decl_1): Use constructor_declarator.
2519         (fn.def2): Likewise.
2520         (notype_component_declarator0): Likewise.
2521
2522 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
2523
2524         * typeck.c (build_x_unary_op): Add checks for taking the address
2525         of a TARGET_EXPR or of a member function, and give appropriate
2526         warnings.
2527
2528 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
2529
2530         * pt.c (process_template_parm): Allow template type parms to be
2531         used as types for template const parms.
2532
2533 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
2534
2535         * init.c (expand_vec_init): Ensure the eh cleanups are on the
2536         function_obstack.
2537
2538 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
2539
2540         * decl.c (lookup_name_real): Be even more picky about the
2541         ambiguous lookup warning.
2542         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
2543         * parse.y (constructor_declarator): Rather than here.
2544
2545         * parse.y (constructor_declarator): New nonterminal.
2546         (fn.def1): Use it.
2547         (explicit_instantiation): Likewise.
2548
2549 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
2550
2551         Add implicit declaration of class name at class scope.
2552         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
2553         * parse.y (self_reference): New nonterminal.
2554         (opt.component_decl_list): Use it.
2555         (fn.def1): Add nested_name_specifier type_name cases.
2556         * class.c (build_self_reference): New function.
2557         (finish_struct): Handle access_default later, move self-reference
2558         decl to the end.
2559         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
2560         * cp-tree.h: Adjust.
2561
2562         * pt.c (do_function_instantiation): Separate handling of member
2563         functions and non-member functions properly.
2564
2565 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
2566
2567         * pt.c (process_template_parm): Improve error for 'volatile class K'.
2568
2569         * class.c (finish_struct_1): Check the right slot for destructors.
2570
2571         * decl.c (start_enum): Complain about enum templates.
2572
2573 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
2574
2575         * init.c (resolve_offset_ref): Offset pointers to member data by one.
2576         * typeck.c (unary_complex_lvalue): Likewise.
2577
2578 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
2579
2580         * typeck.c (c_expand_return): Check for a returned local
2581         array name, similar to the check for an ADDR_EXPR.
2582
2583 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
2584
2585         * decl.c (cp_finish_decl): Don't build cleanups for static
2586         variables here.
2587
2588 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
2589
2590         * typeck.c (build_modify_expr): Fix error messages to be more
2591         accurate.
2592         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
2593         assignment operators.
2594         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
2595         assignment operators.
2596
2597 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
2598
2599         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
2600         give an error if initialized.  Pedwarn about nested type with the
2601         same name as its enclosing class.
2602
2603         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
2604
2605         * typeck.c (require_complete_type): Be sure to instantiate the
2606         MAIN_VARIANT of the type.
2607
2608         * decl2.c (finish_file): Instantiate pending templates before
2609         processing static constructors and destructors.
2610
2611         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
2612         unless at_eof.
2613
2614 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
2615
2616         * decl2.c (delete_sanity): If error_mark_node is passed
2617         in as an expression, quit while we're ahead.
2618
2619         * decl.c (grokdeclarator): Give an error message if `friend'
2620         is combined with any storage class specifiers.
2621
2622 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
2623
2624         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
2625         definition of nonexistent nested type.
2626
2627         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
2628         not to say 'typedef'.
2629
2630 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2631
2632         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
2633         * search.c (dfs_walk, dfs_init_vbase_pointers,
2634         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
2635         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
2636
2637 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
2638
2639         * except.c (build_throw): Support minimal parse.
2640         * pt.c (tsubst_copy): Support THROW_EXPR.
2641         * decl2.c (build_expr_from_tree): Likewise.
2642
2643         * pt.c (mangle_class_name_for_template): Always allocate
2644         scratch_firstobj.
2645
2646 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
2647
2648         * cvt.c (cp_convert_to_pointer): Give an appropriate error
2649         when trying to cast from an incomplete type.
2650
2651 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
2652
2653         * pt.c (instantiate_class_template): Don't bother setting up
2654         CLASSTYPE_TAGS explicitly, as the nested types will add
2655         themselves.
2656
2657 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
2658
2659         * decl.c (shadow_tag): Remove old error check for usage of
2660         an enum without a previous declaration.
2661         (xref_tag): Add error message about usage of enums without a
2662         previous declaration.
2663
2664 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
2665
2666         * lex.c (do_identifier): Only do name consistency check if we're
2667         parsing.
2668
2669         * pt.c (push_template_decl): Don't crash if we get a member defn
2670         that doesn't match.
2671
2672         * decl.c (xref_tag_from_type): New function to do an xref without
2673         always having to figure out code_type_node.
2674         * cp-tree.h: Declare it.
2675         * pt.c (instantiate_class_template): Use it for friend classes.
2676         (lookup_template_class): Use it.
2677
2678         * typeck2.c (build_functional_cast): Pull out a single parm before
2679         passing it to build_c_cast.
2680
2681 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
2682
2683         * expr.c (do_case): Give an error message if a pointer is
2684         given as a case value.
2685
2686 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
2687
2688         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
2689         an overload list.
2690
2691         * lex.c (cons_up_default_function): Really, now, interface hackery
2692         does not apply to synthesized methods.
2693
2694 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
2695
2696         * call.c (build_method_call): Ctors and dtors now have special names
2697         with respect to lookups.
2698         * class.c (add_method): Likewise.
2699         (grow_method): Likewise.
2700         (finish_struct_methods): Likewise.
2701         (warn_hidden): Likewise.
2702         (finish_struct_1): Likewise.
2703         * cvt.c (convert_to_reference): Likewise.
2704         (convert_to_aggr): Likewise.
2705         (cp_convert): Likewise.
2706         * decl2.c (check_classfn): Likewise.
2707         * init.c (expand_member_init): Likewise.
2708         (expand_default_init): Likewise.
2709         (expand_aggr_init_1): Likewise.
2710         (build_offset_ref): Likewise.
2711         (build_new): Likewise.
2712         (build_delete): Likewise.
2713         * lex.c (do_inline_function_hair): Likewise.
2714         * search.c (lookup_field_1): Likewise.
2715         (lookup_fnfields_here): Likewise.
2716         (lookup_field): Likewise.
2717         (lookup_fnfields): Likewise.
2718         (get_virtual_destructor): Likewise.
2719         (dfs_debug_mark): Likewise.
2720         (dfs_pushdecls): Likewise.
2721         (dfs_compress_decls): Likewise.
2722         * tree.c (layout_basetypes): Likewise.
2723         * typeck.c (build_component_ref): Likewise.
2724         (build_x_function_call): Likewise.
2725         (build_modify_expr): Likewise.
2726         (convert_for_initialization): Likewise.
2727         (build_functional_cast): Likewise.
2728         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
2729         (CTOR_NAME): New.
2730         (DTOR_NAME): New.
2731         * decl.c (ctor_identifier): New.
2732         (dtor_identifier): New.
2733         (init_decl_processing): Set them.
2734
2735 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
2736
2737         * typeck.c (build_component_ref): Don't get confused by fields whose
2738         context has no type name, like pointer to member functions.
2739
2740 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
2741
2742         * decl.c (grokdeclarator): Handle typedef without declarator.
2743
2744         * pt.c (tsubst): Handle SCOPE_REF in declarator.
2745
2746         * parse.y (bad_parm): Catch another case of missing `typename'.
2747
2748         * lex.c (yyprint): Handle TYPE_DECLs.
2749
2750         * decl.c (start_function): Don't try to be clever.
2751
2752         * lex.c: Lose compiler_error_with_decl.
2753         * typeck2.c: Lose error_with_aggr_type.
2754         (incomplete_type_error): Use cp_* instead of old functions.
2755         (readonly_error): Likewise.
2756         * typeck.c (convert_arguments): Likewise.
2757         * search.c (lookup_nested_field): Likewise.
2758         * method.c (make_thunk): Likewise.
2759         * decl.c (grokparms): Likewise.
2760         * cp-tree.h: Update.
2761
2762         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
2763         and value.
2764
2765 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
2766
2767         * method.c (build_opfncall): When deleting a pointer to an
2768         array, build a new pointer to the tree past any ARRAY_TYPE
2769         nodes.
2770
2771 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
2772
2773         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
2774
2775 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
2776
2777         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
2778         and ! DECL_INLINE.
2779
2780         * decl.c (finish_function): Don't set nested based on
2781         hack_decl_function_context.
2782         * parse.y (function_try_block): Check for nested function.
2783         (pending_inlines): Likewise.
2784
2785         * decl2.c (build_expr_from_tree): If a unary op already has a
2786         type, just return it.
2787
2788         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
2789
2790         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
2791         (finish_file): Check the return value of walk_vtables.
2792         (finish_prevtable_vardecl): Return int.
2793         (finish_vtable_vardecl): Likewise.
2794         (prune_vtable_vardecl): Likewise.
2795         * lex.c (set_vardecl_interface_info): Likewise.
2796         * cp-tree.h: Adjust return types.
2797
2798         * class.c (delete_duplicate_fields_1): Don't complain about
2799         duplicate nested types if they're the same type.
2800         (finish_struct): Remove check for duplicate.
2801         * decl2.c (grokfield): Don't check for typedef of anonymous type.
2802
2803 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
2804
2805         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
2806
2807         * decl.c (grokdeclarator): Lose special handling of class-level
2808         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
2809         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
2810
2811         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
2812
2813         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
2814
2815         * search.c (compute_access): Fix handling of anonymous union
2816         members.
2817         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
2818         from anonymous unions to their members.
2819
2820         * typeck.c (build_x_function_call): For static member functions,
2821         hand off to build_member_call.
2822
2823 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
2824
2825         * typeck.c (build_component_ref): Handle OFFSET_REFs.
2826
2827         * init.c (expand_vec_init): Fix init == 0 case.
2828
2829 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
2830
2831         * init.c (build_new): Pedwarn about init and array new.
2832         (expand_vec_init): Handle lists, use convert_for_initialization
2833
2834         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
2835         when converting to an aggregate type.
2836         * cvt.c (cp_convert): Pass it through.
2837
2838         * typeck.c (build_conditional_expr): Handle user-defined
2839         conversions to slightly different types.
2840
2841         * decl.c (grokdeclarator): Force an array type in a parm to be
2842         permanent.
2843
2844         * decl2.c (do_using_directive): Sorry.
2845         (do_namespace_alias): Likewise.
2846         * lex.c (real_yylex): Warn about using the `namespace' keyword.
2847
2848 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
2849
2850         * parse.y (datadef): Move call to note_list_got_semicolon up.
2851
2852 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
2853
2854         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
2855
2856 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
2857
2858         * decl.c (cp_finish_decl): The exception regions have to be
2859         nested, not overlapping.  We start the exception region for a
2860         decl, after it has been fully built, and all temporaries for it
2861         have been cleaned up.
2862
2863 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
2864
2865         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
2866
2867 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
2868
2869         * tree.def: Add RETURN_INIT.
2870         * pt.c (instantiate_decl): Handle RETURN_INIT.
2871         * decl.c (store_return_init): Handle minimal_parse_mode.
2872
2873         * tree.c (cp_build_type_variant): Just return an error_mark_node.
2874         * decl.c (make_typename_type): Don't try to get the file and line
2875         of an identifier.
2876         * typeck.c (comptypes): Handle TYPENAME_TYPE.
2877
2878 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
2879
2880         * decl.c (poplevel): Make sure we clear out and restore old local
2881         non-VAR_DECL values by default when they go out of scope.
2882
2883 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
2884
2885         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
2886         referring to addresses of variables and functions.
2887
2888         * error.c (dump_expr): Support SIZEOF_EXPR.
2889
2890         * init.c (do_friend): Use the return value of check_classfn.
2891
2892         * typeck.c (convert_arguments): Call complete_type.
2893
2894         * method.c (hack_identifier): After giving an error, set value to
2895         error_mark_node.
2896
2897 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
2898
2899         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
2900         lossage for local classes.
2901         * cp-tree.h: Declare it.
2902         * decl.c (lookup_name_real): Evil, painful hack for local classes.
2903         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
2904         Use hack_decl_function_context.
2905         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
2906         (start_function): Use hack_decl_function_context.
2907         (finish_function): Likewise.
2908         * method.c (synthesize_method): Likewise.
2909         * lex.c (process_next_inline): Likewise.
2910         (do_pending_inlines): Likewise.
2911         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
2912         done with it.
2913
2914 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
2915
2916         * sig.c (build_signature_pointer_or_reference_type): Align
2917         signature pointers/references on 8-byte boundaries so they can be
2918         grabbed 2 words at a time on a Sparc.
2919
2920 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
2921
2922         * method.c (hack_identifier): Requiring a static chain is now a
2923         hard error.
2924         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
2925         functions.
2926
2927 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
2928
2929         * init.c (build_offset_ref): Call complete_type.
2930
2931         * decl.c (pop_from_top_level): Always pop previous_class_type.
2932
2933         * parse.y: Handle multiple decls in a for-init-statement.
2934         * pt.c (tsubst_expr): Likewise.
2935
2936         * pt.c (tsubst): Use tsubst_expr for the second operand of an
2937         ARRAY_REF.
2938
2939         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
2940         (poplevel_class): Set it here.
2941         (pop_from_top_level): Pop it here if we're returning to class scope.
2942         * class.c (pushclass): Don't set it here.
2943
2944         * decl.c (maybe_push_to_top_level): Save current_template_parms,
2945         and clear it if !pseudo.
2946         (pop_from_top_level): Restore it.
2947
2948         * decl2.c (finish_file): Push the dummy each time we walk the list
2949         of vtables.
2950
2951         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
2952         something for CAST_EXPR.
2953         
2954 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
2955
2956         * cvt.c (cp_convert): Warn about implicit conversion of the
2957         address of a function to bool, as it is always true.
2958
2959 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
2960
2961         * typeck.c (c_expand_return): Fix warning for local externs returned.
2962
2963 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
2964
2965         * tree.c (mapcar): Propagate const and volatile properly.
2966
2967         * typeck.c (complete_type): Be sure to instantiate the
2968         MAIN_VARIANT of the type.
2969
2970         * method.c (synthesize_method): Class interface hackery does not
2971         apply to synthesized methods.
2972
2973 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
2974
2975         * pt.c (comp_template_args): Use comptypes rather than just
2976         checking for TEMPLATE_TYPE_PARM equivalence.
2977
2978         * typeck.c (build_x_function_call): Call complete_type before
2979         checking TYPE_OVERLOADS_CALL_EXPR.
2980
2981 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
2982
2983         * g++.c (main): Check also for new define ALT_LIBM.
2984
2985 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
2986
2987         * pt.c (instantiate_class_template): If we don't have a pattern
2988         yet, that's OK.
2989         (coerce_template_parms): If we see a local class, bail.
2990
2991         * decl.c (grok_reference_init): Make sure there's a type before
2992         checking its code.
2993
2994         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
2995         (push_template_decl): Likewise.
2996
2997         * parse.y (named_class_head): Set
2998         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
2999
3000         * decl.c (xref_tag): Diagnose redeclaration of template
3001         type-parameter name.
3002
3003         * error.c (dump_type): Handle anonymous template type parms.
3004
3005         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
3006         TYPE_STUB_DECL.
3007         (coerce_template_parms): Likewise.
3008
3009 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
3010
3011         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
3012         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
3013
3014 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
3015
3016         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
3017         before trying to get its STUB_DECL.
3018         (coerce_template_parms): Likewise.
3019
3020         * parse.y (template_type_parm): If they didn't use 'class',
3021         pretend they did after giving an error.
3022
3023         * pt.c (coerce_template_parms): Diagnose use of local class.
3024
3025         * decl.c (grok_reference_init): Use instantiate_type.
3026
3027         * error.c (dump_expr): Handle TEMPLATE_DECLs.
3028
3029         * parse.y (named_class_head): Diagnose mismatching types and tags.
3030
3031         * decl.c (pushdecl): Type decls and class templates clash with
3032         artificial type decls, not hide them.
3033
3034         * decl.c (redeclaration_error_message): Diagnose redefinition of
3035         templates properly.
3036         (duplicate_decls): Diagnose disallowed overloads for template
3037         functions, too.
3038
3039         * decl.c (start_decl): Call complete_type before checking for a
3040         destructor.
3041
3042         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
3043
3044         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
3045
3046 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
3047
3048         * decl.c (grok_op_properties): Don't check for operator++(int) in
3049         a template.
3050
3051         * tree.c (perm_manip): Return a copy of variable and function
3052         decls with external linkage.
3053
3054         * tree.def: Change some of the min tree codes to type "1".
3055         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
3056         * method.c (build_overload_int): Emit something arbitrary for
3057         anything but an INTEGER_CST if we're in a template.
3058
3059         * decl.c (cp_finish_decl): Call complete_type before deciding
3060         whether or not to lay out the decl.
3061
3062         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
3063
3064 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
3065
3066         * typeck2.c (build_x_arrow): Call complete_type.
3067
3068         * pt.c (add_pending_template): Broken out.
3069         (lookup_template_class): If -fexternal-templates, call it for all
3070         the methods of implemented types.
3071         (instantiate_class_template): Instead of instantiating them here.
3072         (instantiate_decl): Handle -fexternal-templates earlier.
3073
3074 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3075
3076         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
3077         memoized lookup stuff inside GATHER_STATISTICS.
3078
3079 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
3080
3081         * decl.c (start_decl): Complain about array of incomplete type
3082         here.
3083         (grokdeclarator): Not here.
3084
3085         * parse.y (template_parm): Expand full_parm inline so we can set
3086         the rule's precedence.
3087
3088         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
3089         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
3090         * decl2.c (grokbitfield): Don't check for integer constant here.
3091         * class.c (finish_struct_1): Check here.
3092
3093         * decl.c (define_label): Make the min decl go on permanent_obstack.
3094
3095         * pt.c (unify): Don't handle CONST_DECLs.
3096         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
3097         (tsubst_copy): Likewise.
3098
3099         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
3100         CONST_DECL for a template parm.
3101
3102 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
3103
3104         * decl.c (grokdeclarator): Complain about array of incomplete type
3105         here.
3106         (start_decl_1): Not here.
3107
3108         * pt.c (tsubst): Handle pointer-to-function declarators.
3109
3110         * method.c (hack_identifier): If pedantic, diagnose local class
3111         methods that require a static chain.
3112
3113         * decl.c (grok_op_properties): No longer static.
3114         * cp-tree.h: Declare it.
3115         * pt.c (tsubst): Call it for operators.
3116         Use tsubst_copy for TREE_VECs.
3117
3118         * parse.y (template_arg): The expr has precedence like '>'.
3119
3120 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
3121
3122         * pt.c (coerce_template_parms): Don't coerce an expression using
3123         template parms.
3124         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
3125         (tsubst): Don't use build_index_2_type if the max_value uses template
3126         parms.
3127         * method.c (build_overload_int): Emit something arbitrary for an
3128         expression using template parms.
3129
3130         * parse.y (template_close_bracket): New non-terminal to catch use
3131         of '>>' instead of '> >' in template class names.
3132         (template_type): Use it.
3133         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
3134
3135         * tree.def: Add CAST_EXPR.
3136         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
3137         CONVERT_EXPR for minimal_parse_mode.
3138         * typeck.c (build_c_cast): Likewise.
3139         * pt.c (tsubst_copy): Likewise.
3140         * decl2.c (build_expr_from_tree): Likewise.
3141         * error.c (dump_expr): Likewise.
3142
3143 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3144
3145         * except.c (SetTerminate, SetUnexpected): Put back global vars.
3146         (init_exception_processing): Put back decl/init of
3147         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
3148         fns from libstdc++.
3149
3150         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
3151         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
3152         Delete unused fns.
3153         * cp-tree.h (declare_uninstantiated_type_level,
3154         uninstantiated_type_level_p): Delete prototypes.
3155
3156 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
3157
3158         * pt.c (tsubst_expr): Add default return.
3159
3160 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3161
3162         * error.c (fndecl_as_string): Delete unused arg CNAME.
3163         * sig.c (build_signature_table_constructor,
3164         build_signature_method_call): Fix calls.
3165
3166         * class.c (the_null_vtable_entry): Delete var definition.
3167         (init_class_processing): Delete tree the_null_vtable_entry init.
3168         * decl.c (no_print_{functions, builtins}): Declare as static.
3169         (__tp_desc_type_node): #if 0 var definition.
3170         (init_type_desc): #if 0 init of __tp_desc_type_node.
3171         (vb_off_identifier): Move var decl into init_decl_processing.
3172         (current_function_assigns_this): Declare as static.
3173         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
3174         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
3175         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
3176         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
3177         * init.c (BI_header_type, BI_header_size): Declare as static.
3178         * pt.c (template_classes): Delete unused var.
3179         (add_pending_template): Delete decl for non-existent fn.
3180         (lookup_template_class): Delete vars CODE and TAG_CODE.
3181         (instantiate_template): Delete unused var TARGS.
3182         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
3183         Delete decls.
3184         (__tp_desc_type_node): #if 0 var decl.
3185         (fndecl_as_string): Fix prototype.
3186
3187 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
3188
3189         * tree.def: Add GOTO_STMT.
3190         * pt.c (tsubst_expr): Support goto and labels.
3191         * decl.c (define_label): Support minimal parsing.
3192         * parse.y (simple_stmt): Likewise.
3193
3194 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3195
3196         * xref.c (GNU_xref_member): Only define/set var I if
3197         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
3198         used.
3199         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
3200         (GNU_xref_end): Fix call.
3201         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
3202         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
3203
3204         * tree.c (build_exception_variant): Delete unused vars I, A, T,
3205         T2, and CNAME.
3206         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
3207         (mapcar): Delete unused var CODE.
3208         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
3209         (break_out_cleanups): Fix call.
3210         (bot_manip): Likewise.
3211         * call.c (build_method_call): Likewise.
3212         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
3213         Likewise.
3214         * typeck.c (unary_complex_lvalue, build_modify_expr,
3215         convert_for_initialization): Likewise.
3216         * typeck2.c (build_functional_cast): Likewise.
3217         * cp-tree.h (build_cplus_new): Fix prototype.
3218
3219         * repo.c (open_repo_file): Delete unused var Q.
3220         (repo_compile_flags, repo_template_declared,
3221         repo_template_defined, repo_class_defined, repo_inline_used,
3222         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
3223         (repo_get_id, repo_vtable_used): Declare as static. 
3224         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
3225         prototypes.
3226
3227 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
3228
3229         * parse.y (pending_inlines): Add function_try_block case.
3230
3231         * pt.c (unify): Fix for template const parms.
3232
3233 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3234
3235         * lex.c (extract_interface_info): Delete forward decl.
3236         (default_copy_constructor_body, default_assign_ref_body): Delete
3237         decls for non-existent functions.
3238         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
3239         (init_lex): Delete setting them.
3240         (cons_up_default_function): Delete unused vars FUNC_BUF,
3241         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
3242         #if 0'd synth code.
3243         (toplevel, expression_obstack): Delete unused extern decls.
3244         (tree_node_kind): Delete unused enum.
3245         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
3246         GATHER_STATISTICS.
3247         (tree_node_kind_names): Delete unused extern decl.
3248         (synth_obstack): Delete unused var.
3249         (init_lex): Don't set it.
3250         (init_parse): Add decl before use.
3251         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
3252         (current_unit_{name, language}): Delete unused vars. 
3253         (check_newline): Don't bother setting them, just accept the #pragma.
3254         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
3255         (current_unit_{name, language}): Delete decls.
3256
3257         * search.c: Wrap all of the memoized functions, macros, and
3258         variables inside #ifdef GATHER_STATISTICS.
3259         (lookup_field, lookup_fnfields): Likewise.
3260         (init_search_processing): Likewise.
3261         (reinit_search_statistics): Wrap whole function.
3262         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
3263
3264         * decl.c (finish_function): Only call pop_memoized_context if
3265         GATHER_STATISTICS is defined.
3266         (start_function): Likewise for push_memoized_context.
3267         * class.c (pushclass, popclass): Likewise.
3268
3269         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
3270         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
3271
3272         * cvt.c (cp_convert): Delete unused local var FORM.
3273         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
3274         prototypes.
3275
3276 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
3277
3278         * pt.c (do_poplevel): Oops; really return what we get from
3279         poplevel this time.
3280
3281 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3282
3283         * cp-tree.h (is_aggr_type): Add prototype.
3284
3285         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
3286         * method.c ({push,pop}_cp_function_context): Delete decls.
3287         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
3288         (SetUnexpected, SetTerminate): Delete unused vars.
3289         (init_exception_processing): Don't set SetUnexpected or
3290         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
3291         (output_exception_table_entry): Delete unused array LABEL.
3292         (expand_internal_throw): Delete unused var PARAMS.
3293         (expand_start_catch_block): Delete unused var CLEANUP.
3294         (emit_exception_table): Delete unused var EH_NODE_DECL.
3295         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
3296         GOTO_UNWIND_AND_THROW.  Don't set them.
3297         (end_eh_unwinder): Add top decl.
3298         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
3299         (exception_section, push_rtl_perm, do_function_call,
3300         lang_interim_eh, push_eh_cleanup, eh_outer_context,
3301         expand_end_eh_spec, end_eh_unwinder): Declare as static.
3302         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
3303         throw_used): Likewise.
3304         * cp-tree.h (expand_end_eh_spec): Delete prototype.
3305
3306         * search.c (dfs_mark, dfs_mark_vtable_path,
3307         dfs_unmark_vtable_path, dfs_mark_new_vtable,
3308         dfs_unmark_new_vtable, dfs_clear_search_slot,
3309         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
3310         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
3311         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
3312         functions.
3313         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
3314         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
3315         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
3316         Only define #ifdef GATHER_STATISTICS.
3317         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
3318         is defined.
3319         (vbase_decl): Delete var definition.
3320         (init_search): Delete old decl.
3321         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
3322         never actually used.
3323         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
3324         (get_base_distance_recursive): Delete unused fourth arg
3325         BASETYPE_PATH.  Fix call .
3326         (get_base_distance): Fix call.
3327         (push_class_decls): Delete unused var ID.
3328         (make_memoized_table_entry): Declare as static.
3329         (breadth_first_search): Declare as static.
3330         (tree_has_any_destructor_p): Declare as static.
3331         (pop_class_decls): Delete unused arg pop_class_decls.
3332         * class.c (popclass): Fix call to pop_class_decls.
3333         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
3334         tree_has_any_destructor_p): Delete prototypes.
3335
3336         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
3337         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
3338         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
3339         (build_user_desc): Delete unused var T.
3340         (build_class_desc): Delete unused vars T and OFF.
3341         (build_t_desc): Delete unused var NAME_STRING.
3342         (build_headof): Make static.
3343         (get_bad_cast_node): Likewise.
3344         (get_def_to_follow): Likewise.
3345         * cp-tree.h (init_type_desc): Add prototype.
3346         (build_headof): Remove prototype.
3347
3348 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
3349
3350         * pt.c (tsubst): Only look for matching decls at file scope for
3351         non-member functions.
3352
3353         * call.c (build_scoped_method_call): Handle scoped destructor
3354         calls in templates.
3355
3356         * decl.c (*_top_level): Also save previous_class_values.
3357
3358         * pt.c (tsubst_expr): Support do {} while loops.
3359         * parse.y (simple_stmt): Likewise.
3360         * tree.def: Likewise.
3361
3362         * method.c (build_overload_identifier): For a class nested in a
3363         template class, don't mangle in the template parms from our
3364         context.
3365
3366         * lex.c, cp-tree.h: Remove support for template instantiations in
3367         the pending_inlines code.
3368         * pt.c: Remove dead functions and unused arguments.
3369         (uses_template_parms): TYPENAME_TYPEs always use template parms.
3370         * parse.y: Stop passing anything to end_template_decl.
3371         * tree.c (print_lang_statistics): Only print tinst info #ifdef
3372         GATHER_STATISTICS.
3373
3374 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3375
3376         * init.c (expand_recursive_init{,_1}): Delete decls. 
3377         (sort_member_init): Delete unused var INIT.
3378         (emit_base_init): Delete unused var X.
3379         (build_offset_ref): Delete unused var CNAME.
3380         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
3381         (emit_base_init): Delete unused local var BASE.  Delete extern
3382         decl of IN_CHARGE_IDENTIFIER.
3383         (build_delete): Delete unused local var VIRTUAL_SIZE.
3384
3385         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
3386         (build_delete): Fix call.
3387         * decl2.c (delete_sanity): Likewise.
3388         * cp-tree.h (build_vec_delete): Update prototype.
3389
3390         * typeck.c (common_base_type): Delete unused var TMP.
3391         (build_binary_op): Delete local var ARGS_SAVE.
3392         (build_array_ref): Delete unused var ITYPE.
3393         (c_expand_return): Delete unused var USE_TEMP.
3394
3395         * typeck.c (compexcepttypes): Delete unused arg STRICT.
3396         (comptypes): Fix calls.
3397         * decl.c (duplicate_decls): Likewise.
3398         * cp-tree.h (compexcepttypes): Delete extra arg.
3399
3400         * decl2.c (check_classfn): Delete unused second arg CNAME.
3401         * decl.c (start_decl, grokfndecl): Fix calls.
3402         * init.c (do_friend): Likewise.
3403         * cp-tree.h (check_classfn): Update prototype.
3404
3405         * cp-tree.h (signature_error, import_export_vtable,
3406         append_signature_fields, id_in_current_class, mark_used,
3407         copy_assignment_arg_p): Add decls.
3408         * decl2.c (mark_used): Delete decl.
3409
3410         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
3411
3412         * class.c (get_vtable_entry): Diable unused function.
3413         (doing_hard_virtuals): Delete unused static global var.
3414         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
3415         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
3416         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
3417         (modify_one_vtable): Delete unused var OLD_RTTI.
3418         (finish_struct_anon): Delete unused vars OFFSET and X.
3419         (finish_struct_bits): Delete unused var METHOD_VEC.
3420         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
3421         for-scope local variable METHODS.
3422
3423         * call.c (user_harshness): Delete unused/unneeded arg PARM.
3424         (ideal_candidate): Delete unused args BASETYPE and PARMS.
3425         (build_method_call): Delete unused args passed into ideal_candidate.
3426         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
3427         * cp-tree.h (synthesize_method): Add decl.
3428
3429         * decl.c (note_level_for_for): Give void return type.
3430         (pushdecl_nonclass_level): Likewise.
3431         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
3432         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
3433         (suspend_binding_level): Delete unused var LEVEL.
3434         (duplicate_decls): Delete unused var CTYPE.
3435         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
3436         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
3437         PTR_ENDLINK.
3438         (grokdeclarator): Delete unused var C.
3439         (grokdeclarator): Delete unused var SIZE_VARIES.
3440         (grokparms): Delete unused var SAW_VOID.
3441         (start_function): Delete unused var OLDDECL.
3442         (cplus_expand_expr_stmt): Delete unused var
3443         REMOVE_IMPLICIT_IMMEDIATELY. 
3444
3445         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
3446
3447         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
3448
3449 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
3450
3451         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
3452         (build_min_nt): Likewise.
3453         * pt.c (do_pushlevel): Emit line note.
3454         (do_poplevel): Return what we get from poplevel.
3455         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
3456         * parse.y: Use do_pushlevel and do_poplevel.
3457         * cp-tree.h: Declare do_poplevel.
3458         
3459         * cp-tree.h: Declare at_eof.
3460         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
3461         * decl2.c (import_export_decl): Renamed from import_export_inline.
3462         (finish_file): Call it to do interface handling for statics.
3463         * pt.c (tsubst_copy): Call mark_used on variables and functions
3464         used here.
3465
3466         * decl2.c (finish_file): Don't emit statics we can't generate.
3467         * pt.c (instantiate_decl): Don't set interface on instantiations
3468         we can't generate.
3469
3470         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
3471         * tree.c (print_lang_statistics): Print max template depth.
3472         * pt.c (push_tinst_level): Dump entire instantiation context.
3473         (instantiate_class_template): Use it and pop_tinst_level.
3474         (instantiate_decl): Likewise.
3475
3476         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
3477         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
3478
3479 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
3480
3481         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
3482         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
3483         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
3484         the new template implementation.
3485
3486 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3487
3488         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
3489
3490 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
3491
3492         * decl.c (cp_finish_decl): Delay emitting the debug information for
3493         a typedef that has been installed as the canonical typedef, if the
3494         type has not yet been defined.
3495
3496 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
3497
3498         * decl2.c (grokfield): Still call pop_nested_class for access decls.
3499
3500 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3501
3502         * decl.c (lookup_label): Call label_rtx.
3503
3504         * decl.c (make_binding_level): New function.
3505         (pushlevel, pushlevel_class): Call it instead of explicit
3506         duplicate calls to xmalloc.
3507
3508         * decl.c (init_decl_processing): Delete useless build_pointer_type
3509         call.
3510
3511         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
3512         (sizet_ftype_string): Delete variable.
3513         (init_decl_processing): Add built-in functions fabsf, fabsl,
3514         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
3515         variable strlen_ftype, used for strlen.
3516
3517 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
3518
3519         * decl.c (push_to_top_level): Start from current_binding_level
3520         again for now; the stl hacks depend on g++ being broken in this
3521         way, and it'll be fixed in the template rewrite.
3522
3523         * tree.def: Add USING_DECL.
3524         * decl2.c (do_class_using_decl): Implement.
3525         (grokfield): Pass access decls off to do_class_using_decl instead of
3526         grokdeclarator.
3527         * error.c (dump_decl): Handle USING_DECLs.
3528         * decl.c (grokdeclarator): Remove code for handling access decls.
3529         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
3530         as access decls for now.
3531         (finish_struct): Don't check USING_DECLs for other uses of the name.
3532
3533         * search.c (get_matching_virtual): Use cp_error_at.
3534
3535 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3536
3537         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
3538         match c-typeck.c.
3539         (self_promoting_args_p): Move the check that TYPE is non-nil
3540         before trying to look at its main variant.
3541         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
3542
3543         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
3544         Delete macros.
3545         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
3546         (do_friend): Delete call to xref_friend.
3547         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
3548
3549         * typeck.c (convert_sequence): #if 0 unused function.
3550
3551         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
3552         be in decl_in_memory_p.
3553         (decl_in_memory_p): Delete decl.
3554         * expr.c (decl_in_memory_p): Delete fn.
3555         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
3556
3557         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
3558
3559 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
3560
3561         * class.c (finish_struct_1): Check for a pure-specifier on a
3562         non-virtual function here.
3563
3564         * decl2.c (grok_function_init): Don't check whether the function
3565         is virtual here.
3566         (grokfield): Don't call check_for_override here.
3567
3568         * decl.c (push_to_top_level): Start from inner_binding_level,
3569         check class_shadowed in class levels.
3570
3571 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
3572
3573         * decl.c (resume_level): Ignore things that don't have names, instead
3574         of core dumping.
3575
3576 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3577
3578         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
3579
3580 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
3581
3582         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
3583         synthesized dtor.
3584
3585         * parse.y (complete_type_name): Bind global_scope earlier.
3586         (complex_type_name): Likewise.
3587         (qualified_type_name): Remove.
3588
3589 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
3590
3591         * decl.c (grokfndecl): Move code that looks for virtuals in base
3592         classes...
3593         * class.c (check_for_override): ... to a new function.
3594         (finish_struct_1): Call it.
3595
3596         * cp-tree.h: Declare warn_sign_compare.
3597
3598         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
3599         rather than extra_warnings to decide whether to warn about
3600         comparison of signed and unsigned.
3601
3602         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
3603         implies -Wsign-compare.  -Wall doesn't imply -W.
3604
3605 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
3606
3607         * typeck.c (build_component_ref): Fix to handle anon unions in base
3608         classes as well.
3609
3610 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3611
3612         * class.c (resolves_to_fixed_type_p): Delete code dealing with
3613         a WITH_CLEANUP_EXPR, since we don't generate them any more.
3614         * cvt.c (build_up_reference): Likewise.
3615         * decl.c (grok_reference_init): Likewise.
3616         (cp_finish_decl): Likewise.
3617         * error.c (dump_expr): Likewise.
3618         * tree.c (real_lvalue_p): Likewise.
3619         (lvalue_p): Likewise.
3620         (build_cplus_new): Likewise.
3621         (unsave_expr_now): Likewise.
3622         * typeck.c (unary_complex_lvalue, build_modify_expr,
3623         c_expand_return): Likewise.
3624
3625 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3626
3627         Make the C++ front-end pay attention to attributes for structures.
3628         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
3629         finish_struct_1.
3630         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
3631         Take out old round_up_size use and setting the DECL_ALIGN possibly
3632         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
3633         can override what the attribute set.
3634         * cp-tree.h (finish_struct): Update prototype.
3635         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
3636         attributes to finish_struct.
3637         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
3638         value down into finish_struct.
3639         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
3640
3641 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
3642
3643         * decl.c (poplevel):  Re-word dead for local handling.
3644         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
3645         (cp_finish_decl):  If is_for_scope, check for duplicates so
3646         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
3647
3648         * lex.c (do_identifier):  Use global binding in preference of
3649         dead for local variable.
3650
3651 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
3652
3653         * init.c (initializing_context): Handle anon union changes, the
3654         context where fields of anon unions can be initialized now has to be
3655         found by walking up the TYPE_CONTEXT chain.
3656
3657 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
3658
3659         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
3660         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
3661         (obscure_complex_init): If bss is supported, always set
3662         DECL_INITIAL to error_mark_node.
3663
3664 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3665
3666         * init.c (is_friend): Make sure there's a context before we see if
3667         it's an aggr type.
3668
3669 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
3670
3671         * init.c (is_friend): Classes are not friendly with nested classes.
3672
3673 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
3674
3675         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
3676         and record its result.
3677
3678 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
3679
3680         * class.c (finish_struct_anon): Switch around code to not move anon
3681         union elements around, nor mess up their contexts, nor offsets,
3682         instead we now build up the right number of COMPONENT_REFs for all
3683         the anon unions that may be present at build_component_ref time.
3684         * typeck.c (lookup_anon_field): New routine to handle field lookup
3685         on fields without names.  We find them, based upon their unique type
3686         instead.
3687         * typeck.c (build_component_ref): Allow FIELD_DECL components.
3688         Handle finding components in anonymous unions, and ensure that a
3689         COMPONENT_REF is built for each level as necessary.
3690
3691 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
3692
3693         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
3694         code that ensures that copy ctors are used if appropriate.
3695
3696 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3697
3698         * init.c (build_vec_delete): Only give an error if base isn't an
3699         error_mark_node.
3700
3701 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
3702
3703         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
3704         (yylex): If we see `new', keep slurping.
3705
3706 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
3707
3708         * class.c (finish_struct_1): Move code for handling anon unions...
3709         (finish_struct_anon): to here.  Fixup so that we do the offset
3710         calculations right, and so that the fields are physically moved to
3711         the containers's chain.
3712
3713 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3714
3715         * decl.c (grokdeclarator): Avoid trying to get an operand off an
3716         identifier node.
3717
3718 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
3719
3720         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
3721         POINTER_SIZE to agree with expr.c.
3722
3723 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
3724
3725         * search.c (lookup_field): Don't report ambiguities if protect is 0,
3726         instead return NULL_TREE.
3727
3728 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
3729
3730         * class.c (finish_struct_1): Call warn_hidden if we want warnings
3731         about overloaded virtual functions.
3732         (warn_hidden): New routine to warn of virtual functions that are
3733         hidden by other virtual functions, that are not overridden.
3734         (get_basefndecls): New routine, used by warn_hidden.
3735         (mark_overriders): New routine, used by warn_hidden.
3736         * search.c (get_matching_virtual): Remove old warning that just
3737         isn't very useful.
3738
3739 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3740
3741         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
3742
3743         * typeck.c (null_ptr_cst_p): Delete unused fn.
3744         (build_function_call_maybe): Delete unused fn.
3745
3746         * expr.c (extract_init): #if 0 the code after unconditional return 0
3747         for now.
3748
3749         Delete old cadillac code.
3750         * edsel.c: Remove file.
3751         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
3752         * Makefile.in (CXX_OBJS): Delete edsel.o.
3753         (edsel.o): Delete rule.
3754         * cp-tree.h (flag_cadillac): Delete var decl.
3755         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
3756         * decl2.c (flag_cadillac): Delete var definition.
3757         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
3758         (grokfield): Delete code depending on flag_cadillac.
3759         (finish_anon_union): Likewise.
3760         * class.c (finish_struct_1): Likewise.
3761         (pushclass): Likewise.
3762         (popclass): Likewise.
3763         (push_lang_context): Likewise.
3764         (pop_lang_context): Likewise.
3765         * decl.c (init_decl_processing): Likewise.
3766         (start_decl): Likewise.
3767         (cp_finish_decl): Likewise.
3768         (xref_tag): Likewise.
3769         (finish_enum): Likewise.
3770         (start_function): Likewise.
3771         (finish_function): Likewise.
3772         (finish_stmt): Likewise.
3773         * lex.c (lang_init): Likewise.
3774         (check_newline): Likewise.
3775
3776         * lex.c (do_pending_inlines): Delete synthesized method kludge.
3777
3778         Delete defunct, ancient garbage collection implementation.
3779         * rtti.c: New file with the RTTI stuff from gc.c.
3780         * gc.c: Removed file (moved the remaining stuff into rtti.c).
3781         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
3782         (rtti.o): New rule, replacing gc.o.
3783         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
3784         * cp-tree.h: Delete gc-related fn decls.
3785         (DECL_GC_OFFSET): Delete macro.
3786         (flag_gc): Delete extern decl.
3787         * decl.c (current_function_obstack_index): Delete var decl.
3788         (current_function_obstack_usage): Delete var decl.
3789         (start_function): Delete clearing of current_function_obstack_index
3790         and current_function_obstack_usage.
3791         (init_decl_processing): Delete code relying on -fgc.
3792         Delete call to init_gc_processing.
3793         (cp_finish_decl): Delete calls to build_static_gc_entry and
3794         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
3795         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
3796         and to expand_expr of a __gc_main call.
3797         (maybe_gc_cleanup): Delete var decl.
3798         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
3799         * decl2.c (flag_gc): Delete var decl.
3800         (lang_f_options): Delete offering of -fgc.
3801         (lang_decode_option): Delete -fgc and -fno-gc handling.
3802         (get_temp_regvar): Delete gc code.
3803         * init.c (build_new): Delete gc code.
3804         * lex.c (init_lex): Delete checking of flag_gc.
3805
3806         * typeck.c (convert_arguments): Delete gc code.
3807         (build_component_addr): Delete -fgc warning.
3808         (build_modify_expr): Delete gc code.
3809
3810         * decl2.c (build_push_scope): Delete fn.
3811         * cp-tree.h (build_push_scope): Delete decl.
3812
3813         * search.c (clear_search_slots): Delete fn.
3814         * cp-tree.h (clear_search_slots): Delete decl.
3815
3816         * search.c (tree_needs_constructor_p): Delete fn.
3817         * cp-tree.h (tree_needs_constructor_p): Delete decl.
3818
3819         * tree.c (id_cmp): Delete fn.
3820
3821         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
3822         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
3823
3824         * tree.c (decl_value_member): Delete fn.
3825         * cp-tree.h (decl_value_member): Delete decl.
3826
3827         * tree.c (list_hash_lookup_or_cons): Delete fn.
3828         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
3829
3830         * method.c (cplus_exception_name): Delete fn.
3831         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
3832
3833         * spew.c (shift_tokens): Delete fn.
3834
3835 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
3836
3837         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
3838         to cp_finish_decl.
3839         * parse.y: Likewise.
3840
3841 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3842
3843         * tree.c (build_cplus_staticfn_type): Delete function definition;
3844         never used.
3845         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
3846
3847         * tree.c (virtual_member): Delete function definition; never used.
3848         * cp-tree.h (virtual_member): Delete decl.
3849
3850 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
3851
3852         * typeck.c (build_component_ref): Handle getting vbase pointers
3853         out of complex multiple inheritance better.
3854
3855 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
3856
3857         * typeck.c (build_object_ref): Make sure we use the real type, not
3858         any reference type.
3859
3860 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
3861
3862         * tree.c (build_exception_variant): Don't create new types if we
3863         don't have to, also build new types on the right obstack.
3864
3865 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
3866
3867         * decl.c (store_bindings): Split out from push_to_top_level.
3868         (push_to_top_level): Call it for b->type_shadowed on class binding
3869         levels.
3870
3871 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
3872
3873         * search.c (expand_upcast_fixups): Fix so that offsets stored in
3874         vbase_offsets are always right.  Fixes a problem where virtual base
3875         upcasting and downcasting could be wrong during conversions on this
3876         during virtual function dispatch at ctor/dtor time when dynamic
3877         vtable fixups for deltas are needed.  This only sounds easier than
3878         it is.  :-)
3879         (fixup_virtual_upcast_offsets): Change to reflect new calling
3880         convention for expand_upcast_fixups.
3881
3882 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3883
3884         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
3885         check that it's usable as the bitfield width.
3886
3887 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3888
3889         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
3890         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
3891         only ever used for functions in it.
3892
3893 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
3894
3895         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
3896         (nested_type): Likewise.
3897         (nested_name_specifier): Use lastiddecl.
3898
3899         * decl.c (grokdeclarator): Adjust accordingly.
3900         * init.c (expand_member_init): Likewise.
3901         * parse.y (base_class): Likewise.
3902         * typeck2.c (build_functional_cast): Likewise.
3903
3904         * typeck2.c (build_functional_cast): Fill in name after we've
3905         checked for non-aggr type.
3906
3907 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
3908
3909         * decl2.c (warn_pointer_arith): Default to on.
3910
3911 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
3912
3913         * lex.c (is_rid): New function.
3914         * decl.c (grokdeclarator): Diagnose reserved words used as
3915         declarator-ids.
3916
3917 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
3918
3919         * tree.c (get_decl_list): Don't lose cv-quals.
3920
3921         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
3922         typespecs used as declarator-ids.
3923
3924 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
3925
3926         * decl.c (poplevel): When poping a level, don't give a warning for
3927         any subblocks that already exist.
3928
3929 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
3930
3931         * typeck.c (build_object_ref): Finish what I started.
3932
3933         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
3934
3935         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
3936
3937         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
3938         scope.
3939
3940 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
3941
3942         * decl.c (xref_tag): Handle passing a type in directly.
3943
3944         * parse.y (qualified_type_name): Pull out the type.
3945         (nested_type): Likewise.
3946         Take types directly instead of as identifiers.
3947         * call.c (build_scoped_method_call): Take types directly instead of
3948         as identifiers.
3949         * decl.c (xref_basetypes): Likewise.
3950         * init.c (expand_member_init): Likewise.
3951         (build_member_call): Likewise.
3952         (build_offset_ref): Likewise.
3953         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
3954         * method.c (do_build_assign_ref): Likewise.
3955         * decl.c (grokdeclarator): Handle a type appearing as the
3956         declarator-id for constructors.
3957         * method.c (do_build_copy_constructor): current_base_init_list now
3958         uses the types directly, not their names.
3959         * init.c (sort_base_init): Likewise.
3960         (expand_member_init): Likewise.
3961         * init.c (is_aggr_type): New function, like is_aggr_typedef.
3962
3963 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
3964
3965         * tree.c (layout_basetypes): Call build_lang_field_decl instead
3966         of build_lang_decl if first arg is a FIELD_DECL.
3967
3968 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3969
3970         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
3971         non-empty.
3972         * except.c (expand_start_catch_block): Set TREE_USED to avoid
3973         warnings about the catch handler.
3974
3975 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
3976
3977         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
3978         expand_target_expr.
3979
3980 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
3981
3982         Fix access control to use trees rather than integers.
3983         * class.c (access_{default, public, protected, private,
3984         default_virtual, public_virtual, private_virtual}_node): Add
3985         definitions.
3986         (init_class_processing): Do creation of those nodes.
3987         * cp-tree.h (access_type): Delete enum decl.
3988         (access_{default, public, protected, private, default_virtual,
3989         public_virtual, private_virtual}_node): Add decls.
3990         (compute_access): Change return type.
3991         * search.c (compute_access): Have tree return type, instead of enum.
3992         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
3993         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
3994         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
3995         * parse.y (VISSPEC): Make ttype rather than itype.
3996         (base_class_access_list): Likewise.
3997         * *.[cy]: Change all refs of `access_public' to `access_public_node',
3998         etc.
3999         * call.c (build_method_call): Make ACCESS be a tree.
4000         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
4001         * cvt.c (convert_to_aggr): Likewise.
4002         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
4003         Likewise.
4004         * method.c (hack_identifier): Likewise.
4005         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
4006
4007 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
4008
4009         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
4010         frontend, and make it more consistent with respect to
4011         warn_pointer_arith.
4012
4013 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
4014
4015         * decl.c (pushdecl): Check for duplicate parameter names.
4016
4017 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
4018
4019         * decl.c (expand_static_init): Call assemble_external for atexit.
4020
4021 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
4022
4023         * except.c (do_unwind): Remove some generated dead code.
4024         (eh_outer_context): New routine, factor out some common code from
4025         expand_builtin_throw and end_eh_unwinder.  Add code to do return
4026         address masking for the PA.
4027         (expand_builtin_throw): Use eh_outer_context instead of open coding
4028         it here.
4029         (end_eh_unwinder): Likewise.
4030
4031 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
4032
4033         * except.c (expand_throw): Call assemble_external for __empty, if we
4034         use it.
4035
4036 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
4037
4038         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
4039         NORMAL_RETURN_ADDR_OFFSET.
4040         (end_eh_unwinder): Likewise.
4041
4042 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
4043
4044         * gc.c (build_dynamic_cast): Make sure we don't cast away const
4045         when dealing with references, and make sure we handle dynamic
4046         casting to a cv qualified reference.
4047
4048 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
4049
4050         * except.c (struct eh_context): New structure top hold eh context
4051         information.
4052         (push_eh_context): New routine.
4053         (pop_eh_context): Likewise.
4054         * decl.c (push_cp_function_context): Use them.
4055         (pop_cp_function_context): Likewise.
4056
4057 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
4058
4059         * decl2.c (finish_file): Also prune uninteresting functions in the
4060         inline emission loop.
4061
4062 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
4063
4064         * sig.c (build_signature_table_constructor): Mark functions
4065         in the signature as referenced.
4066
4067 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
4068
4069         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
4070         the inline emission stuff.
4071
4072 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
4073
4074         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
4075         weak symbols.   
4076         * lang-options.h: Add -f{no-,}weak.
4077         * decl.c (init_decl_processing): If the target does not support weak
4078         symbols, don't use them.
4079         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
4080
4081 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
4082
4083         * init.c (expand_member_init): warning for base init after members.
4084
4085 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
4086
4087         * cvt.c (build_expr_type_conversion): Don't convert to a reference
4088         type.
4089
4090 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
4091
4092         * method.c (report_type_mismatch): Improve wording for volatile
4093         mismatches.
4094
4095 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
4096
4097         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
4098         expand_assignment, as the later doesn't handle things that have
4099         copy constructors well.  The compiler would do bitwise copying,
4100         instead of ctor calling in some cases.
4101
4102 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
4103
4104         * g++.c (my_strerror): Return "cannot access" if errno is 0.
4105         (pfatal_with_name, perror_exec): Don't assume that
4106         the returned value from my_strerror contains no '%'s.
4107         (concat): Remove.
4108         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
4109
4110 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
4111
4112         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
4113         TYPE_METHODS/TREE_CHAIN mean what they used to. 
4114         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
4115         instead of TYPE_METHODS.
4116         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
4117         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
4118         * cp-tree.h (CLASSTYPE_METHODS): Lose.
4119         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
4120         TYPE_METHODS.
4121         (struct lang_decl): Lose next_method field.
4122         (DECL_NEXT_METHOD): Lose.
4123         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
4124         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
4125         anymore.
4126         (finish_struct_methods): Don't mess with the TREE_CHAINs in
4127         fn_fields.
4128
4129         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
4130         vector.
4131
4132         * call.c (build_method_call): Synthesize here even when not inlining.
4133         * typeck.c (build_function_call_real): Likewise.
4134
4135 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
4136
4137         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
4138         == DBX_DEBUG, call dbxout_start_new_source_file and
4139         dbxout_resume_previous_source_file when appropriate.
4140
4141 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
4142
4143         * except.c (start_anon_func): Push to the top level.
4144         (end_anon_func): Pop from the top level.
4145
4146 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
4147
4148         * cp-tree.h (build_cleanup): New routine to build cleanups.
4149         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
4150         call at ctor time and use atexit to run it later.
4151         * decl2.c (build_cleanup): New routine, taken from finish_file.
4152         (finish_file): Use build_cleanup instead, and don't put function
4153         local statics in global dtor list.
4154         
4155 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
4156
4157         * except.c (expand_throw): Ensure that we have cleanups, if we try
4158         and expand cleanups.
4159
4160 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
4161
4162         * except.c (expand_throw): Add logic to manage dynamic cleanups for
4163         the EH object.
4164         (expand_end_catch_block): Use the magic of expand_goto, instead of
4165         emit_jump so that we get the cleanup for any catch clause parameter
4166         and the cleanup for the exception object.  Update to reflect label
4167         changes.
4168         (push_eh_cleanup): New routine to register a cleanup for an
4169         exception object.
4170         (empty_fndecl): Used to default cleanup actions to
4171         nothing.
4172         (init_exception_processing): Setup empty_fndecl.  Setup
4173         saved_cleanup.
4174         (expand_start_catch_block): Update to reflect label changes.  Call
4175         push_eh_object to register the cleanup for the EH object.
4176         (start_anon_func): New routine to start building lambda expressions
4177         from trees.
4178         (end_anon_func): New routine to end them.
4179         (struct labelNode): Change so that we can use tree labels, or rtx
4180         labels.
4181         (saved_cleanup): Object to check for dynamic cleanups for the
4182         exception handling object.
4183         (push_label_entry): Change so that we can use tree labels, or rtx
4184         labels.
4185         (pop_label_entry): Likewise.
4186         (top_label_entry): Likewise.
4187         (expand_start_all_catch): Use tree label instead of rtx label, so
4188         that we can get the magic of expand_goto.
4189         (expand_end_all_catch): Update to reflect label changes.
4190
4191         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
4192         use UNSAVE_EXPRs.
4193         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
4194         building_cleanup logic, as we now use UNSAVE_EXPRs.
4195         * cp-tree.h (unsave_expr): Declare it.
4196         * decl.c (building_cleanup): Remove.
4197         (maybe_build_cleanup): Remove building_cleanup logic, and use
4198         UNSAVE_EXPR instead.
4199
4200 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
4201
4202         * gc.c (build_t_desc): Update error message to say <typeinfo>.
4203
4204 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4205
4206         * decl.c (pushdecl): Only warn about shadowing a local variable if
4207         warn_shadow is true.
4208
4209 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
4210
4211         * typeck.c (build_binary_op_nodefault): Added warning about
4212         comparisons between different enum types with -Wall, unless
4213         -fenum-int-equiv set.
4214
4215 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
4216
4217         * class.c (finish_struct_1): Skip down to the inner type in
4218         multidimensional arrays.  Ensures ctors will be made for types that
4219         need constructing.
4220
4221 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
4222
4223         * decl.c (last_dtor_insn): New to track the last compiler generated
4224         insn in a dtor.
4225         (store_parm_decls): Set it.
4226         (finish_function): Use it to see if the dtor is empty.  Avoid doing
4227         vtable setup all the time, if we can.
4228         (struct cp_function): Add last_dtor_insn.
4229         (push_cp_function_context): Save it.
4230         (pop_cp_function_context): Restore it.
4231
4232 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
4233
4234         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
4235         warnings.
4236
4237 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
4238
4239         * typeck.c (expand_target_expr): Make sure targets get put into the
4240         current temp_slot_level, so that the free_temp_slots call will reuse
4241         them.
4242
4243 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
4244
4245         * class.c (finish_struct_1): Delay delta fixups for virtual bases
4246         until after we have done the hard virtuals, to avoid a bogus `every
4247         virtual function must have a unique final overrider' for virtual
4248         functions that are only overridden by hard virtuals.
4249
4250 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
4251
4252         * pt.c (do_function_instantiation): Don't try to find a file-scope
4253         template for a member function.
4254
4255 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
4256
4257         * g++.c (main): Add handling of -nodefaultlibs.
4258
4259 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
4260
4261         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
4262         distinguish between direct bindings of reference variables, and
4263         indirect bindings of reference variables.
4264         * cvt.c (build_up_reference): Use it.
4265         * typeck.c (convert_arguments): Use it to indicate this is an
4266         indirect binding.
4267         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
4268         as they are unused.
4269         (expand_static_init): Likewise.
4270         (cplus_expand_expr_stmt): Likewise.
4271         * decl2.c (finish_file): Likewise.
4272         * init.c (perform_member_init): Likewise.
4273         (emit_base_init): Likewise.
4274         (expand_aggr_vbase_init_1): Likewise.
4275
4276 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4277
4278         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
4279         get a DECL_LANG_SPECIFIC node.
4280         * cp-tree.h (lang_decl_flags): Add new member `level'.
4281         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
4282         decl_flags level member.
4283
4284 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4285
4286         * call.c (build_method_call): Make sure instance has a
4287         TYPE_LANG_SPECIFIC node before we dive into it.  
4288
4289 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
4290
4291         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
4292
4293 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
4294
4295         * decl.c (duplicate_decls): When smashing decls, smash staticness in
4296         the usual way.
4297
4298 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
4299
4300         * decl.c (poplevel): Handle the merging of subblocks of cleanups
4301         when finishing blocks that have already been created (usually due to
4302         the fixup goto code).  Fixes bad debugging information.
4303
4304 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
4305
4306         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
4307         that's not a list of overloaded functions.
4308
4309 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4310
4311         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
4312         before trying to use DECL_ABSTRACT_VIRTUAL_P.
4313
4314 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
4315
4316         * decl2.c (mark_used): New function for hooking into setting of
4317         TREE_USED on decls.
4318         * call.c (build_method_call): Use it.
4319         * class.c (instantiate_type): Likewise.
4320         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
4321         for all like-named functions.
4322         * method.c (hack_identifier): Likewise.
4323         (emit_thunk): Don't call assemble_external.
4324         (make_thunk): Create thunk as a FUNCTION_DECL so that it
4325         gets the right mode and ENCODE_SECTION_INFO works.
4326         
4327         * parse.y: Use mark_used.  Pass operator names to do_identifier.
4328         * lex.c (do_identifier): Handle operator names.
4329
4330         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
4331
4332 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4333
4334         * errfn.c: Include stdio.h.
4335         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
4336
4337 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
4338
4339         * typeck2.c (digest_init): Always convert initializers to the
4340         right type.
4341
4342 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
4343
4344         * init.c (member_init_ok_or_else): Don't allow member initializers
4345         for indirect members, as it is invalid.
4346
4347 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4348
4349         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
4350
4351 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
4352
4353         * parse.y (for.init.statement): Catch compound statements inside for
4354         initializations, if we're being pedantic.
4355
4356 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
4357
4358         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
4359         looking for.
4360
4361 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
4362
4363         * error.c (dump_expr): Don't core dump when a boolean expression is
4364         used as a default argument.
4365
4366 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
4367
4368         * class.c (finish_struct_bits): Check aggregate_value_p instead of
4369         RETURN_IN_MEMORY.
4370
4371 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
4372
4373         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
4374         BLKmode type that would otherwise be returned in registers.
4375
4376 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4377
4378         * g++.c (WITHLIBC): New macro.
4379         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
4380         saw_libc and pass it at the end if it was set.
4381
4382 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4383
4384         * parse.y (fn.def1): Call split_specs_attrs in
4385         declmods notype_declarator case.
4386
4387 Sun Nov 26 14:47:42 1995  Richard Kenner  <kenner@mole.gnu.ai.mit.edu>
4388
4389         * Version 2.7.2 released.
4390
4391 Mon Nov 20 14:05:00 1995  Mike Stump  <mrs@cygnus.com>
4392
4393         * g++.c (pfatal_with_name): Add missing third argument to concat.
4394
4395 Thu Oct 26 13:59:54 1995  Mike Stump  <mrs@cygnus.com>
4396
4397         * init.c (expand_aggr_init): Handle cv qualifiers on the object's
4398         type.
4399
4400 Sat Nov 11 08:25:55 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4401
4402         * Version 2.7.1 released.
4403
4404 Thu Nov  2 17:02:47 1995  Jason Merrill  <jason@yorick.cygnus.com>
4405
4406         * call.c (convert_harshness): Handle references to arrays.
4407
4408 Fri Oct 27 14:20:21 1995  Jason Merrill  <jason@yorick.cygnus.com>
4409
4410         * typeck.c (comp_target_types): Check multi-level pointer
4411         conversions in both directions.
4412
4413 Tue Oct 17 21:39:05 1995  Jason Merrill  <jason@yorick.cygnus.com>
4414
4415         * parse.y (explicit_instantiation): Fix 'extern template' with no
4416         return type.
4417
4418 Mon Oct 16 14:35:20 1995  Jason Merrill  <jason@yorick.cygnus.com>
4419
4420         * parse.y (explicit_instantiation): Support automatic instantiation
4421         of constructors.
4422         (named_class_head_*): Support out-of-class definition of nested
4423         types.
4424
4425 Wed Oct 11 12:20:56 1995  Mike Stump  <mrs@cygnus.com>
4426
4427         * search.c (envelope_add_decl): New routine.  Fix so that
4428         methods are hidden in the same way that other members are.
4429         (dfs_pushdecls): Cleanup and move functionality out of line,
4430         into envelope_add_decl. 
4431
4432 Tue Oct 10 15:46:01 1995  Mike Stump  <mrs@cygnus.com>
4433
4434         * typeck.c (mark_addressable): Only call assemble_external if we
4435         have started the output file.
4436
4437 Tue Oct 10 11:27:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
4438
4439         * decl.c (start_function): Fix earlier cv-quals change.
4440
4441 Mon Oct  9 23:53:05 1995  Mike Stump  <mrs@cygnus.com>
4442
4443         * parse.y (complex_direct_notype_declarator): Only push the class if
4444         we are not already in the class.
4445
4446 Mon Oct  9 11:22:03 1995  Doug Evans  <dje@canuck.cygnus.com>
4447
4448         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
4449         Update olddecl's attributes too.
4450         (grokdeclarator): #if 0 out call to build_decl_attribute_variant.
4451         * typeck.c (common_type): Call merge_machine_type_attributes.
4452
4453 Fri Oct  6 14:44:27 1995  Mike Stump  <mrs@cygnus.com>
4454
4455         * typeck.c (mark_addressable): Add missing call to
4456         assemble_external.
4457
4458 Wed Oct  4 15:06:39 1995  Mike Stump  <mrs@cygnus.com>
4459
4460         * decl.c (store_parm_decls): Make sure the unwinder start comes
4461         before the exception specification start.
4462         * except.c (expand_exception_blocks): Make sure the unwinder end
4463         comes after the terminate protected catch clause region and after
4464         the end of the exception specification region.
4465
4466 Wed Oct  4 12:47:02 1995  Jason Merrill  <jason@yorick.cygnus.com>
4467
4468         * lex.c (real_yylex): Fix identifier case for linemode.
4469         (handle_sysv_pragma): Don't abort when we see a pragma we don't
4470         recognize.
4471
4472 Tue Oct  3 14:09:46 1995  Mike Stump  <mrs@cygnus.com>
4473
4474         * decl.c (store_parm_decls): Add a call to start_eh_unwinder.
4475         * except.c (init_exception_processing): __throw doesn't take any
4476         arguments.
4477         (expand_builtin_throw): Likewise.  Always use Pmode, instead of SImode
4478         for all pointers.  Use expand_builtin_return_addr to unwind the
4479         first level off the stack.
4480         (do_unwind): Always use Pmode, instead of SImode for all pointers.
4481         (expand_exception_blocks): Add a call to end_eh_unwinder.
4482         (start_eh_unwinder, end_eh_unwinder): New routines to build machine
4483         independent stack unwinders for function/method calls.
4484         
4485 Mon Oct  2 17:20:42 1995  Mike Stump  <mrs@cygnus.com>
4486
4487         * tree.c (unsave_expr_now): Make sure we process the argument list
4488         of any called functions.  Fixes incorrect code generation for
4489         cleanups.
4490
4491 Mon Oct  2 13:04:16 1995  Mike Stump  <mrs@cygnus.com>
4492
4493         * typeck.c (get_member_function_from_ptrfunc): Save function if it
4494         needs it.  Cures core dump on things like (this->*(f()))().
4495
4496 Sat Sep 23 22:51:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4497
4498         * decl.c (start_function): Conform to gcc cv-quals convention (no
4499         expression has a cv-qualified type) in RESULT_DECLs.
4500         * method.c (make_thunk): Likewise.
4501
4502 Fri Sep 22 10:21:13 1995  Mike Stump  <mrs@cygnus.com>
4503
4504         * decl.c (pushtag): Add in the namespace name for the tag.
4505
4506 Thu Sep 21 13:11:13 1995  Mike Stump  <mrs@cygnus.com>
4507
4508         * parse.y (maybe_base_class_list, base_class_list, base_class,
4509         base_class_access_list): Make sure we see the typenames for base
4510         classes.
4511         * lex.c (see_typename): Instead of failing to see a typename when
4512         there is no next token, perfer a typename, and get the next token.
4513
4514 Wed Sep 20 12:35:27 1995  Michael Meissner  <meissner@cygnus.com>
4515
4516         * decl.c (init_decl_processing): Add __builtin_expect.
4517
4518 Tue Sep 19 16:48:11 1995  Mike Stump  <mrs@cygnus.com>
4519
4520         * cvt.c (cp_convert_to_pointer): Don't allow leftover conversions to
4521         or from pointer to member functions, they must all be handled before
4522         this point.
4523
4524 Fri Sep 15 17:14:47 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4525
4526         * init.c (resolve_offset_ref): Fix wording of non-static member
4527         being referenced as a static.
4528
4529 Fri Sep 15 12:39:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4530
4531         * typeck.c (build_indirect_ref): Only bash pointer if we actually
4532         call build_expr_type_conversion.
4533
4534 Thu Sep 14 18:24:56 1995  Jason Merrill  <jason@deneb.cygnus.com>
4535
4536         * cvt.c (build_expr_type_conversion): Handle conversion from
4537         reference.
4538         * typeck.c (build_indirect_ref): Avoid infinite recursion.
4539
4540 Thu Sep 14 17:23:28 1995  Mike Stump  <mrs@cygnus.com>
4541
4542         * decl.c (expand_start_early_try_stmts): New routine to start a try
4543         block at the start of the function, for function-try-blocks.
4544         * cp-tree.h (expand_start_early_try_stmts): Declare it.
4545         * parse.y (function_try_block): Use it, instead of doing it here, as
4546         we don't want to include rtl.h here, as that conflicts with RETURN
4547         in the parser.
4548
4549 Wed Sep 13 18:32:24 1995  Mike Stump  <mrs@cygnus.com>
4550
4551         * lex.c (reinit_parse_for_block): Support saving inline
4552         function-try-blocks, uses peekyylex.
4553         * parse.y (eat_saved_input): New rule, permit the parser to see that
4554         END_OF_SAVED_INPUT is ok, as it can see this when parsing the
4555         handlers of a function-try-block.
4556         (fndef): Use it.
4557         (component_decl): Make sure TRY and RETURN can come after fn.def2.
4558         * spew.c (peekyylex): New routine to peek at what will come next.
4559
4560 Wed Sep 13 16:52:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4561
4562         * typeck.c (comptypes): Tighten up comparisons of template type
4563         parms.
4564
4565         * decl.c (duplicate_decls): Turn off whining about virtual functions
4566         redeclared inline for now.
4567
4568 Wed Sep 13 11:13:40 1995  Mike Stump  <mrs@cygnus.com>
4569
4570         * decl.c (store_in_parms): New routine to put things before we
4571         put base inits.
4572         * cp-tree.h (store_in_parms): Declare it.
4573         * decl.c (store_parm_decls): Use it to makr sure the starting of the
4574         eh spec comes before base inits.
4575         (finish_function): Use sequences instead of the obsolete
4576         reorder_insns.
4577         * parse.y (fndef): Enhance readability and maintainability.  Update
4578         to include function_try_block syntax.
4579         (function_try_block): Add.
4580
4581 Tue Sep 12 17:43:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4582
4583         * call.c (convert_harshness): Use comptypes, not ==, to check if
4584         TYPE and PARMTYPE are equivalent on a function type.
4585
4586 Tue Sep 12 17:31:33 1995  Douglas Rupp  <drupp@cs.washington.edu>
4587
4588         * Make-lang.in (cc1plus) : Removed unnecessary $(exeext).
4589
4590 Mon Sep 11 23:24:07 1995  Mike Stump  <mrs@cygnus.com>
4591
4592         * except.c (expand_throw): Never allocate storage for thrown pointer
4593         to objects.
4594
4595 Mon Sep 11 19:36:45 1995  Mike Stump  <mrs@cygnus.com>
4596
4597         * except.c (expand_start_catch_block): Pointers to objects come
4598         back from catch matching already dereferenced, don't dereference
4599         again.
4600
4601 Mon Sep 11 15:46:28 1995  Mike Stump  <mrs@cygnus.com>
4602
4603         * except.c (expand_throw): Only decay the throw expression, don't do
4604         any default conversions.  This is so that one can throw and catch
4605         characters, and not have them match integers.
4606
4607 Mon Sep 11 13:46:45 1995  Mike Stump  <mrs@cygnus.com>
4608
4609         * error.c (dump_aggr_type): Deal with anonymous unions that don't
4610         have a TYPE_NAME.
4611
4612 Fri Sep  8 20:40:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4613
4614         * lex.c (handle_sysv_pragma): Deal with getting a comma from yylex.
4615
4616 Fri Sep  8 15:51:41 1995  Mike Stump  <mrs@cygnus.com>
4617
4618         * except.c (expand_end_eh_spec): Handle empty EH specifications.
4619
4620 Fri Sep  8 15:27:22 1995  Mike Stump  <mrs@cygnus.com>
4621
4622         * cp-tree.h (expand_start_eh_spec): Declare new routine.
4623         (expand_end_eh_spec): Likewise.
4624         * decl.c (store_parm_decls): Call expand_start_eh_spec to process
4625         exception specifications.
4626         * except.c (expand_leftover_cleanups): Remove unused parameter.
4627         (expand_end_catch_block): Likewise.
4628         (expand_exception_blocks): Likewise.
4629         (expand_start_eh_spec): New routine to mark the start of an
4630         exception specification region.
4631         (expand_end_eh_spec): New routine to mark the end of an exception
4632         specification region.
4633         (expand_exception_blocks): Call expand_end_eh_spec to process
4634         exception specifications.
4635
4636 Fri Sep  8 14:40:48 1995  Per Bothner  <bothner@kalessin.cygnus.com>
4637
4638         * lex.c (do_identifier):  Use global binding in preference of
4639         dead for local variable.
4640
4641 Wed Sep  6 19:32:59 1995  Mike Stump  <mrs@cygnus.com>
4642
4643         * cp-tree.h (build_exception_variant): Remove used first argument.
4644         * decl.c (duplicate_decls): Likewise.
4645         (grokfndecl): Likewise.
4646         (revert_static_member_fn): Likewise.
4647         * decl2.c (grok_method_quals): Likewise.
4648         * tree.c (build_exception_variant): Likewise.
4649         * typeck.c (common_type): Likewise.
4650         * decl2.c (grokclassfn): After changing the type, call
4651         build_exception_variant, if necessary.
4652
4653 Tue Sep  5 15:56:27 1995  Mike Stump  <mrs@cygnus.com>
4654
4655         * except.c (expand_throw): Run cleanups for the throw expression.
4656
4657 Wed Aug 30 15:24:38 1995  Stephen L. Favor  <sfavor@tigger.intecom.com>
4658
4659         * except.c (expand_builtin_throw): Moved gen_label_rtx calls beyond
4660         the store_parm_decls call which does initialization in the emit_*
4661         code concerning label numbering.
4662         
4663 Thu Aug 31 09:01:07 1995  Mike Stump  <mrs@cygnus.com>
4664
4665         * except.c (expand_internal_throw): Let the frontend be responsible
4666         for managing all frontend EH parameters, the backend routine only
4667         needs to deal with backend values.  type and value are no longer
4668         passed to __throw.
4669         (init_exception_processing): Likewise.
4670         (expand_start_all_catch): Likewise.
4671         (expand_end_all_catch): Likewise.
4672         (expand_leftover_cleanups): Likewise.
4673         (expand_end_catch_block): Likewise.
4674         (expand_builtin_throw): Likewise.
4675         (expand_throw): Likewise.
4676         
4677 Tue Aug 29 15:04:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4678
4679         * cp-tree.h (DECL_REAL_CONTEXT): Give the real declaration context
4680         for a decl.
4681         * decl.c (cp_finish_decl): Use it.
4682
4683 Tue Aug 29 10:30:27 1995  Mike Stump  <mrs@cygnus.com>
4684
4685         * except.c (expand_internal_throw): Oops, almost forgot type and
4686         value are now trees.
4687
4688 Mon Aug 28 17:57:45 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4689
4690         Fix the attribute handling to make sure they get noted before we
4691         create the function's RTL, in case they can affect that.
4692         * decl.c (grokfndecl): New arg ATTRLIST.  Run
4693         cplus_decl_attributes before creating the decl's rtl.
4694         (grokdeclarator): New arg ATTRLIST, passed down into grokfndecl.
4695         (shadow_tag, groktypename, start_decl, start_method): Pass a
4696         NULL_TREE to grokdeclarator's new last arg.
4697         * decl2.c (grokfield): New arg ATTRLIST, passed into grokdeclarator.
4698         (grokbitfield, grokoptypename): Pass a NULL_TREE to
4699         grokdeclarator's new last arg.
4700         * except.c (expand_start_catch_block): Likewise.
4701         * pt.c (process_template_parm, end_template_decl,
4702         do_function_instantiation): Likewise.
4703         * cp-tree.h (grokfield): Add arg.
4704         (grokdeclarator): Move the prototype from here...
4705         * decl.h: ...to here.
4706         * lex.c (cons_up_default_function): Pass NULL_TREE to grokfield
4707         ATTRLIST argument.
4708         * parse.y: Create a list for the grokfield arg where appropriate,
4709         and pass it down instead of calling cplus_decl_attributes.
4710
4711 Mon Aug 28 15:07:24 1995  Mike Stump  <mrs@cygnus.com>
4712
4713         * except.c: Always allow turning on exception handling.  Allow cross
4714         compilations to use EH.
4715
4716 Thu Aug 24 17:39:24 1995  Mike Stump  <mrs@cygnus.com>
4717
4718         * except.c (saved_pc, saved_throw_type, saved_throw_value): Use
4719         trees, instead of rtxs, and don't depend on using special machine
4720         dependent registers.
4721         (expand_internal_throw): Likewise.
4722         (init_exception_processing): Likewise.
4723         (expand_start_all_catch): Likewise.
4724         (expand_end_all_catch): Likewise.
4725         (expand_start_catch_block): Likewise.
4726         (expand_leftover_cleanups): Likewise.
4727         (expand_end_catch_block): Likewise.
4728         (expand_builtin_throw): Likewise.
4729         (expand_throw): Likewise.
4730
4731 Wed Aug 23 17:25:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4732
4733         * cvt.c (build_expr_type_conversion): Handle conversions to
4734         reference types.
4735
4736 Wed Aug 23 15:33:59 1995  Mike Stump  <mrs@cygnus.com>
4737
4738         * except.c (do_unwind): Work around backend bug with -fpic.
4739
4740 Tue Aug 22 17:20:07 1995  Per Bothner  <bothner@kalessin.cygnus.com>
4741
4742         * decl2.c (flag_new_for_scope):  Add a new mode that follows ANSI
4743         for-scoping, but supports (and warns about) old programs.
4744         Make the new mode (with value 1) the default.
4745         (lang_f_options):  The on-value for flag_new_for_scope is now 2.
4746         * cp-tree.h (DECL_DEAD_FOR_LOCAL, DECL_ERROR_REPORTED): New macros
4747         (DECL_SHADOWED_FOR_VAR):  Likewise.
4748         * decl.c (struct binding_level):  New fields dead_vars_from_for
4749         and is_for_scope.
4750         (note_level_for_for):  New function.
4751         (poplevel):  Special processing if is_for_scope.
4752         (pushdecl):  Warn if for-scope variable shadows local.
4753         * lex.c (do_identifier):  Handle old (non-ANSI) for scoping,
4754         and warn if conflicts.
4755         * parse.y (FOR):  Call note_level_for_for.
4756
4757 Mon Aug 21 10:28:31 1995  Jason Merrill  <jason@deneb.cygnus.com>
4758
4759         * decl2.c (import_export_inline): Class interface hackery does not
4760         apply to synthesized methods.
4761
4762 Sun Aug 20 16:29:00 1995  Mike Stump  <mrs@cygnus.com>
4763
4764         * search.c (virtual_context): Find the right context more often.
4765         Solves a `recoverable compiler error, fixups for virtual function'
4766         problem.
4767
4768 Sun Aug 20 13:53:24 1995  Mike Stump  <mrs@cygnus.com>
4769
4770         * except.c (expand_start_all_catch): Ensure that we always transfer
4771         control to the right EH handler, by rethrowing the end label on the
4772         region, instead of hoping we are nested and falling through.
4773         (expand_leftover_cleanups): Likewise.
4774         (end_protect): Since we now rethrow the end label, put a
4775         nop after it, so that outer regions are recognized.
4776         * init.c (build_vec_delete_1): New routine to handle most of vector
4777         deleting, all code moved here from build_vec_delete.
4778         (build_array_eh_cleanup): Use build_vec_delete_1 to do all the real
4779         work.
4780         (expand_vec_init): If the array needs partial destructing, setup an
4781         EH region to handle it.
4782         (build_vec_delete): Move lots of code to build_vec_delete_1, use
4783         build_vec_delete_1 to do the grunt work.
4784         
4785 Sat Aug 19 14:25:33 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4786
4787         Handle decl attributes properly for function definitions without
4788         previous attribute-loaded declarations.
4789         * decl.c (start_function): New arg ATTRS.  Add a call to
4790         cplus_decl_attributes with it before we create the RTL.
4791         * cp-tree.h (start_function): Update prototype.
4792         * parse.y (fn.def1): Pass ATTRS into start_function instead of
4793         trying to call cplus_decl_attributes too late.  Pass a NULL_TREE
4794         for other use.
4795         * decl2.c (finish_file): Pass NULL_TREE as fourth arg to
4796         start_function.
4797         * method.c (synthesize_method): Likewise.
4798         * except.c (expand_builtin_throw): Likewise for start on __throw.
4799
4800 Sat Aug 19 13:36:08 1995  Mike Stump  <mrs@cygnus.com>
4801
4802         * class.c (set_rtti_entry): Turn on -fvtable-thunk -frtti support.
4803         This changes -fvtable-thunks vtable layout, so a recompile will be
4804         necessary, if you use -fvtable-thunks.
4805         (get_vtable_entry): Use n, instead of i to be consistent with the
4806         rest of the compiler.
4807         (get_vtable_entry_n): Likewise.
4808         (add_virtual_function): Add a slot for the tdesc, if -fvtable-thunks
4809         are being used.
4810         (finish_struct_1): Likewise.
4811         (skip_rtti_stuff): New routine to collapse similar code from many
4812         different parts of the compiler.  I think I got them all.
4813         (modify_one_vtable): Use it.
4814         (fixup_vtable_deltas1): Likewise.
4815         (override_one_vtable): Likewise.
4816         * decl2.c (mark_vtable_entries): Likewise.
4817         * tree.c (debug_binfo): Likewise.
4818         * search.c (expand_upcast_fixups): Likewise.
4819         (get_abstract_virtuals_1): Likewise.  Use virtuals, instead of tmp to
4820         consistent with the rest of the compiler.
4821         (get_abstract_virtuals): Likewise.
4822         * cp-tree.h (skip_rtti_stuff): New routine, declare it.
4823         * gc.c (build_headof): Support -fvtable-thunk and -frtti together.
4824         (build_typeid): Likewise.
4825         (build_classof): Remove old style way of doing rtti.  Remove support
4826         for `classof' and `headof'.
4827         * gxx.gperf: Likewise.
4828         * hash.h: Likewise.
4829         * parse.y: Likewise.
4830
4831 Fri Aug 18 17:31:58 1995  Jason Merrill  <jason@deneb.cygnus.com>
4832
4833         * decl.c (start_function): Clear ctor_label and dtor_label.
4834
4835         * class.c (finish_struct_1): Fix handling of access decls.
4836
4837 Tue Aug 15 19:21:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4838
4839         * class.c (finish_struct): Only do minimal processing here, so it
4840         can be used for class template definitions, as well.
4841         (finish_struct_1): New function with the rest of the code.
4842
4843 Tue Aug 15 09:46:16 1995  Mike Stump  <mrs@cygnus.com>
4844
4845         * class.c (prepare_fresh_vtable): On second though, always build the
4846         offset (see Aug 10 change), unless -fvtable-thunks is given.  It
4847         does this by calling the new routine set_rtti_entry.
4848         (finish_struct): Likewise.
4849         (set_rtti_entry): New routine to update the rtti information at the
4850         start of the vtable.
4851
4852 Mon Aug 14 12:21:22 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
4853
4854         * error.c (dump_decl, case IDENTIFIER_NODE): Only work on a dtor
4855         if it's declared in the C++ language spec.
4856         (dump_function_decl): Likewise.
4857         (dump_function_name): Likewise.
4858         (ident_fndecl): Make sure we got something back from lookup_name.
4859         * decl.c (start_function): Likewise.
4860
4861 Fri Aug 11 16:52:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4862
4863         * call.c (build_method_call): Don't call build_new when calling a
4864         constructor without an instance.
4865
4866 Thu Aug 10 20:00:17 1995  Mike Stump  <mrs@cygnus.com>
4867
4868         * class.c (prepare_fresh_vtable): Always build the offset to the
4869         complete object, as it doesn't cost much.  This allows dynamic_cast
4870         to void * to work when -frtti isn't given.
4871         (finish_struct): Likewise.
4872
4873 Thu Aug 10 16:31:28 1995  Mike Stump  <mrs@cygnus.com>
4874
4875         * except.c (build_eh_type): Split out some functionality to new
4876         routine named build_eh_type_type.
4877         (build_eh_type_type): New routine.
4878         (expand_start_catch_block): Use build_eh_type_type, as we never want
4879         the dynamic type of the catch parameter, just the static type.
4880         Fixes core dumps when -frtti is used and one catchs pointers to
4881         classes.
4882
4883 Thu Aug 10 14:55:29 1995  Mike Stump  <mrs@cygnus.com>
4884
4885         * except.c (expand_builtin_throw): Since we now use normal calling
4886         conventions for __throw, we have to remove the first layer off the
4887         stack, so that the next context we search for handlers is the outer
4888         context instead of the context that had the call to __throw, if we
4889         don't immediately find the desired context.
4890
4891 Tue Aug  8 17:44:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4892
4893         * tree.c (cp_expand_decl_cleanup): Returns int, not tree.
4894         * cp-tree.h: Update.
4895
4896         * parse.y (template_type_parm): Add support for `typename'.
4897
4898 Tue Aug  8 12:06:31 1995  Mike Stump  <mrs@cygnus.com>
4899
4900         * except.c (expand_internal_throw): New internal routine to throw a
4901         value.
4902         (expand_end_all_catch, expand_leftover_cleanups): All throwers
4903         changed to use `expand_internal_throw' instead of jumping to throw
4904         label.
4905         (expand_end_catch_block, expand_throw): Likewise.
4906         (throw_label): Removed.
4907         (expand_builtin_throw): Changed so that EH parameters are passed by
4908         normal function call conventions.  Completes Aug 4th work.
4909
4910 Fri Aug  4 17:17:08 1995  Mike Stump  <mrs@cygnus.com>
4911
4912         * cp-tree.h (expand_builtin_throw): Declare it.
4913         * decl2.c (finish_file): Call expand_builtin_throw.
4914         * except.c (make_first_label): Remove.
4915         (init_exception_processing): Don't use a LABEL_REF for throw_label,
4916         instead use a SYMBOL_REF, this is so that we don't use LABEL_REFs in
4917         other functions that don't really appear in those functions.  This
4918         solves a problem where cc1plus consumed exponential amounts of
4919         memory when -Wall was used.
4920         (expand_end_all_catch, expand_leftover_cleanups,
4921         expand_end_catch_block, expand_throw): Change all uses of
4922         throw_label to match new style.
4923         (do_unwind): Rename parameter to inner_throw_label, as it is now
4924         different from throw_label.  Also, assume that our caller will wrap
4925         the passed label with a LABEL_REF, if needed.
4926         (expand_builtin_throw): Make external, change so that the generated
4927         throw is now a real function.
4928         (expand_exception_blocks): Never generate throw code inside another
4929         function.
4930
4931 Fri Aug  4 12:20:02 1995  Mike Stump  <mrs@cygnus.com>
4932
4933         * decl.c (grokdeclarator): Move checking of mutable const objects
4934         and mutable static objects down, as we might decide during parsing
4935         to unset staticp or constp (for example, when const is part of the
4936         object being pointed to).
4937
4938 Thu Aug  3 17:13:43 1995  Mike Stump  <mrs@cygnus.com>
4939
4940         * except.c (output_exception_table_entry): Enhance portability to
4941         weird machines.
4942         (emit_exception_table): Likewise.
4943
4944 Thu Aug  3 16:41:38 1995  Mike Stump  <mrs@cygnus.com>
4945
4946         * typeck.c (build_ptrmemfunc): Handle casting of pointer to
4947         non-virtual member functions.
4948
4949 Wed Aug  2 11:58:25 1995  Mike Stump  <mrs@cygnus.com>
4950
4951         * gc.c (build_typeid): Strip cv qualifiers so that const T&, T&, T
4952         and const T all match.
4953
4954 Wed Aug  2 11:25:33 1995  Mike Stump  <mrs@cygnus.com>
4955
4956         * except.c (build_eh_type): Strip cv qualifiers so that const T&,
4957         T&, T and const T all match.
4958
4959 Tue Aug  1 14:20:16 1995  Mike Stump  <mrs@cygnus.com>
4960
4961         * except.c: Fix up comments, cleanup code and eliminate exceptNode,
4962         exceptStack, exceptstack, push_except_stmts, pop_except_stmts,
4963         new_except_stack, push_last_insn, pop_last_insn, insn_save_node and
4964         InsnSave.  Also, numerous speed improvements, and correctness
4965         improvements.  Double faulting in all situations should now be
4966         handled correctly.
4967         (expand_start_all_catch): Instead of having many terminate protected
4968         regions, just have one.
4969         (expand_start_catch_block): No longer have to protect
4970         false_label_rtx, as it isn't used for EH region marking.
4971         (expand_end_catch_block): Expand out EH cleanups here by using
4972         expand_leftover_cleanups.
4973         (expand_end_all_catch): Use sequences instead of playing with insn
4974         links directly.
4975         (expand_exception_blocks): Likewise.  Also protect all catch clauses
4976         with one terminate region.
4977
4978 Mon Jul 31 13:24:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4979
4980         * method.c (report_type_mismatch): Don't talk about an object
4981         parameter for non-methods.
4982
4983 Sun Jul 30 13:13:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4984
4985         * class.c (finish_struct): Catch private and protected members of
4986         anonymous unions here.
4987         * decl2.c (finish_anon_union): And here.
4988         * parse.y: Instead of here.
4989
4990         * errfn.c (ARGSLIST): Support passing four args.
4991         * error.c (cv_as_string): New function.
4992         (cp_printers): Add it.
4993         * call.c (build_method_call): Report 'const' at end of pseudo-decl.
4994
4995         * method.c (report_type_mismatch): Deal with a bad_arg of 0.
4996
4997         * init.c (expand_aggr_init): Handle volatile objects, too.
4998
4999 Sat Jul 29 13:42:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5000
5001         * decl.c (struct binding_level): Keep list of incomplete decls.
5002         (print_binding_level): Use list_length to count them.
5003         (pushdecl): Build up the list.
5004         (hack_incomplete_structures): Walk it and prune completed decls.
5005
5006 Fri Jul 28 15:26:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5007
5008         * typeck.c (comp_target_types): Don't check const and volatile for
5009         function types.
5010         (comp_ptr_ttypes_real): Likewise.
5011
5012 Thu Jul 27 15:40:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5013
5014         * typeck.c (comp_target_types): Fix.
5015
5016 Thu Jul 27 15:10:48 1995  Mike Stump  <mrs@cygnus.com>
5017
5018         * cp-tree.h (unsave_expr_now, build_unsave_expr,
5019         cp_expand_decl_cleanup): Declare new routines.
5020         * decl.c (cp_finish_decl, store_parm_decls,
5021         hack_incomplete_structures): Change all cals from
5022         expand_decl_cleanup to cp_expand_decl_cleanup.
5023         * gc.c (protect_value_from_gc): Likewise.
5024         * expr.c (cplus_expand_expr): Handle UNSAVE_EXPRs.
5025         * tree.c (unsave_expr): New routine to build an UNSAVE_EXPR.
5026         (unsave_expr_now): Backend routine used by tree expander.
5027         (cp_expand_decl_cleanup): Wrap second argument in an UNSAVE_EXPR to
5028         work around a limitation in the backend.  The backend uses the
5029         cleanups multiple times, on disjoint control flows, so we cannot
5030         pass unsaved SAVE_EXPRs to the backend.
5031         * tree.def (UNSAVE_EXPR): New tree code.
5032         * typeck.c (c_expand_return): Move goto/return code up inside
5033         conditional, as we don't always want to do this, we only want to do
5034         this when we don't otherwise finish with this control flow.
5035
5036 Thu Jul 27 10:38:43 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5037
5038         * parse.y (typespec): Only complain about typeof if we're not
5039         getting it from a system header.
5040
5041 Thu Jul 27 10:26:23 1995  Doug Evans  <dje@canuck.cygnus.com>
5042
5043         Clean up prefix attribute handling.
5044         * parse.y (reserved_declspecs): Link prefix attributes with declspecs.
5045         (declmods): Likewise.
5046         (all rules that reference typed_declspecs and declmods): Call
5047         split_specs_attrs or strip_attrs to separate declspecs and attrs.
5048         (lang_extdef): Delete resetting of prefix_attributes.
5049         (template_def, notype_declarator rule): Use NULL_TREE for
5050         prefix_attributes.
5051         (condition): Use NULL_TREE for prefix_attributes.
5052         (setattrs): Deleted.
5053         (nomods_initdcl0): Set prefix_attributes to NULL_TREE.
5054         (component_decl): Delete resetting of prefix_attributes.
5055         (component_decl_1, notype_components rule): Use NULL_TREE for
5056         prefix_attributes.
5057         (simple_stmt): Delete resetting of prefix_attributes.
5058
5059 Mon Jul 24 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5060
5061         * call.c (convert_harshness): Deal with reference conversions before
5062         others.  Actually do array->pointer decay.  Call comp_target_types
5063         with pointer types rather than their targets.
5064
5065         * typeck.c (comp_target_types): Avoid assigning D const * to B *.
5066
5067 Mon Jul 24 08:54:46 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5068
5069         * pt.c (to_be_restored): Move decl to global scope.
5070
5071 Sat Jul 22 12:22:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5072
5073         * decl.c (start_decl): Put back clearing of DECL_IN_AGGR_P.
5074
5075 Fri Jul 21 17:09:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5076
5077         * decl.c (grokdeclarator): Downgrade error about 'extern int A::i'
5078         to pedwarn.
5079
5080         * pt.c (instantiate_template): Also avoid instantiation if the
5081         function has already been declared to be a specialization.
5082
5083         * decl2.c (check_classfn): Ignore cname argument, and return the
5084         matching function.
5085
5086         * decl.c (start_decl): Handle declarations of member functions
5087         outside of the class (i.e. specialization declarations).
5088
5089 Thu Jul 20 10:34:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5090
5091         * class.c (finish_struct): Don't mess with the type of bitfields.
5092
5093         * various.c: s/TYPE_POINTER_TO/build_pointer_type/.
5094
5095 Thu Jul 20 01:43:10 1995  Mike Stump  <mrs@cygnus.com>
5096
5097         * init.c (expand_aggr_init): Assume LOOKUP_ONLYCONVERTING if init
5098         is not a parameter list (TREE_LIST).
5099         (expand_default_init): If LOOKUP_ONLYCONVERTING is set, then set
5100         LOOKUP_NO_CONVERSION so that we don't allow two-level conversions,
5101         but don't set it otherwise.
5102
5103 Wed Jul 19 20:32:01 1995  Mike Stump  <mrs@cygnus.com>
5104
5105         * init.c (expand_default_init): Don't allow two-level conversions
5106         during construction.
5107
5108 Wed Jul 19 18:06:37 1995  Mike Stump  <mrs@cygnus.com>
5109
5110         * gc.c (build_headof): The type of dyncasting to a pointer to cv
5111         void, should be pointer to cv void.
5112
5113 Wed Jul 19 17:25:43 1995  Mike Stump  <mrs@cygnus.com>
5114
5115         * gc.c (build_dynamic_cast): Allow casting in const.
5116
5117 Wed Jul 19 16:34:27 1995  Mike Stump  <mrs@cygnus.com>
5118
5119         * typeck.c (build_const_cast): If we are passed error_mark_node,
5120         return it.
5121
5122 Wed Jul 19 15:24:48 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5123
5124         * class.c (push_nested_class): Make sure TYPE is non-nil.
5125
5126         * cvt.c (type_promotes_to): Watch for error_mark_node on the
5127         incoming TYPE.
5128
5129 Wed Jul 19 13:23:12 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
5130
5131         * cp-tree.h (SIGTABLE_VT_OFF_NAME): Renamed from SIGTABLE_OFFSET_NAME.
5132         (SIGTABLE_VB_OFF_NAME): New macro.
5133         (vt_off_identifier): Renamed from offset_identifier.
5134         (vb_off_identifier): Added extern declaration.
5135
5136         * decl.c (vt_off_identifier): Renamed from offset identifier.
5137         (vb_off_identifier): New variable to hold the identifier for the
5138         sigtable field vb_off.
5139         (init_decl_processing): Initialize vb_off_identifier.
5140         Renamed vt_off_identifier from offset_identifier.
5141         * sig.c (build_signature_method_call): Renamed offset_identifier and
5142         local variable offset to vt_off_identifer and vt_off, respecitively.
5143         * sig.c (build_signature_table_constructor): Renamed offset to vt_off.
5144
5145         * decl.c (init_decl_processing): Add vb_off field to
5146         sigtable_entry_type.  Reorder fields so that pfn gets properly
5147         aligned at a 64 bit boundary on the Alpha.
5148         * sig.c (build_signature_table_constructor): Build the constructor
5149         according to the new layout.  Set the vb_off field to -1 for now.
5150
5151         * decl.c (init_decl_processing): Align sigtable_entry_type on word
5152         boundaries instead of double word boundaries to save space.
5153
5154 Tue Jul 18 16:58:37 1995  Mike Stump  <mrs@cygnus.com>
5155
5156         * cvt.c (cp_convert): Always call build_cplus_new for a ctor.
5157
5158 Tue Jul 18 14:24:53 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5159
5160         * parse.y (opt.component_decl_list): Only forbid private/protected
5161         in anonymous unions.  We need to make this know when the type is
5162         defined for an object, to not give the error.
5163
5164 Mon Jul 17 14:22:44 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5165
5166         * parse.y (opt.component_decl_list): Don't allow access control
5167         as private or protected for union members.
5168
5169 Sun Jul 16 14:01:00 1995  Jim Wilson  <wilson@chestnut.cygnus.com>
5170
5171         * lex.c (check_newline): For 'p' case, move goto skipline line to
5172         before end brace for 'pragma'.
5173
5174 Fri Jul  7 13:55:58 1995  Mike Stump  <mrs@cygnus.com>
5175
5176         * g++.1: Tiny updates.
5177
5178 Fri Jul  7 13:05:20 1995  Mike Stump  <mrs@cygnus.com>
5179
5180         * decl.c (cp_finish_decl): Only destruct local static variables if
5181         they are constructed, and only construct the first time control
5182         passes completely through its declaration (if not initialized with a
5183         constant-expression).
5184         (expand_static_init): Likewise.
5185
5186 Wed Jul  5 14:05:04 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5187
5188         * typeck.c (comptypes, case OFFSET_REF): If either offset basetype
5189         is a TEMPLATE_TYPE_PARM, give a match.
5190
5191 Fri Jun 30 15:42:57 1995  Mike Stump  <mrs@cygnus.com>
5192
5193         * method.c (build_overload_value): Handle encoding of null pointer
5194         constants (or any pointer with a constant numeric value) for
5195         templates.
5196
5197 Fri Jun 30 13:45:51 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5198
5199         * call.c (convert_harshness): Add QUAL_CODE when we're faced with
5200         const vs non-const for void conversions.
5201
5202 Fri Jun 30 10:19:52 1995  Mike Stump  <mrs@cygnus.com>
5203
5204         * except.c (expand_start_all_catch): Fix problem with finding an
5205         outer nested try block when there is no code to separate it from an
5206         inner try block.
5207
5208 Fri Jun 30 02:22:26 1995  Mike Stump  <mrs@cygnus.com>
5209
5210         * search.c (dfs_pushdecls): Consume 2 or 3 orders of magnitude less
5211         memory please when virtual bases are used.
5212
5213 Thu Jun 29 19:03:47 1995  Mike Stump  <mrs@cygnus.com>
5214
5215         * class.c (build_vbase_path): Avoid testing things that cannot be
5216         null to see if they are null.
5217         * cvt.c (convert_pointer_to_vbase): Remove code that doesn't work.
5218         * decl.c (finish_function): Pass a type into the new
5219         convert_pointer_to_vbase instead of a binfo.
5220         * search.c (convert_pointer_to_vbase): Rewritten to use get_vbase
5221         and convert_pointer_to_real.
5222         (expand_indirect_vtbls_init): Use convert_pointer_to_vbase instead
5223         of the more cryptic call to get_vbase.
5224
5225 Thu Jun 29 09:35:05 1995  Mike Stump  <mrs@cygnus.com>
5226
5227         * decl.c (BOOL_TYPE_SIZE): Fix broken SLOW_BYTE_ACCESS check.
5228
5229 Thu Jun 29 03:43:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5230
5231         * pt.c (instantiate_template): Don't strip 'this' twice.
5232
5233         * pt.c (coerce_template_parms): Allow null pointer constants.
5234
5235         * decl.c (revert_static_member_fn): But only if DECL_ARGUMENTS is
5236         set.
5237
5238 Wed Jun 28 18:39:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5239
5240         * decl.c (revert_static_member_fn): Also remove 'this' from
5241         DECL_ARGUMENTS.
5242         * decl2.c (check_classfn): Don't revert this function until we get a
5243         match.
5244
5245 Wed Jun 28 14:07:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5246
5247         * parse.y (component_decl): Clear PREFIX_ATTRIBUTES here.
5248
5249 Wed Jun 28 11:05:13 1995  Mike Stump  <mrs@cygnus.com>
5250
5251         * decl2.c (finish_file): Handle global vector news.
5252         * init.c (build_new): Encode vector news so that later we will know
5253         how many elements there are.
5254
5255 Mon Jun 26 13:38:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5256
5257         * expr.c (cplus_expand_expr): Don't mess with temp slots.
5258
5259         * decl2.c (warn_if_unknown_interface): Don't crash if tinst_for_decl
5260         returns null.
5261
5262         * decl2.c (check_classfn): Use revert_static_member_fn.
5263         * decl.c (revert_static_member_fn): Diagnose static member functions
5264         declared const or volatile.
5265
5266         * decl2.c (grokfield): Check for missing default args here, too.
5267         (check_default_args): Function to do the checking.
5268         * decl.c (pushdecl): Use it.
5269
5270         * decl.c (pushdecl): Don't warn about shadowing a member of `this'
5271         if there is no `this'.
5272
5273 Sun Jun 25 11:34:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5274
5275         * call.c (build_method_call): Downgrade 'called before definition'
5276         to a warning, as it ought to go away after Monterey.
5277
5278 Sat Jun 24 14:18:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5279
5280         * pt.c (coerce_template_parms): Don't do extra checking on pointer
5281         to member arguments.
5282
5283         * class.c (finish_struct): const and reference members don't prevent
5284         a class from being an aggregate.
5285
5286         * class.c (finish_struct): Signatures are always aggregates.
5287
5288 Fri Jun 23 17:20:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5289
5290         * decl2.c (check_classfn): Improve error message.
5291
5292         * pt.c (tsubst): Handle PROMOTE_PROTOTYPES.
5293
5294 Thu Jun 22 01:50:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5295
5296         * typeck.c (comptypes): Don't ignore method quals.
5297
5298         * class.c (finish_struct): Non-abstract virtuals are always USED.
5299
5300         * decl.c (build_ptrmemfunc_type): The underlying union type isn't
5301         IS_AGGR_TYPE, either.
5302         * class.c (finish_struct): Use CLASSTYPE_NON_AGGREGATE instead.
5303         * cp-tree.h: Likewise.
5304
5305         * cp-tree.h (lang_type): Add aggregate.
5306         (CLASSTYPE_AGGREGATE): New macro.
5307         (TYPE_NON_AGGREGATE_CLASS): Likewise.
5308         * class.c (finish_struct): Determine whether a class is an
5309         aggregate.
5310         * decl.c (cp_finish_decl): Check TYPE_NON_AGGREGATE_CLASS instead of
5311         TYPE_NEEDS_CONSTRUCTING.
5312         * typeck2.c (digest_init): Check TYPE_NON_AGGREGATE_CLASS for
5313         subobjects, too.
5314
5315         * pt.c (tsubst, PARM_TYPE): Propagate DECL_ARTIFICIAL.
5316
5317         * decl.c (start_function): For pre-parsed functions, layout all of
5318         the parm decls again.
5319         (grokvardecl): TREE_PUBLIC depends on DECL_THIS_EXTERN, not
5320         DECL_EXTERNAL.
5321
5322         * pt.c (coerce_template_parms): Improve checking for invalid
5323         template parms.
5324
5325 Wed Jun 21 12:01:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5326
5327         * decl.c (grokdeclarator): Forbid declaration of a static member
5328         with the same name as its enclosing class.
5329
5330 Mon Jun 19 10:28:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5331
5332         * decl.c (finish_function): Clear current_class_decl.
5333
5334         * typeck.c (build_conditional_expr): Use convert (boolean_type_node
5335         instead of truthvalue_conversion.
5336
5337         * class.c (finish_struct): A data member with the same name as the
5338         class doesn't suppress constructors.
5339
5340 Fri Jun 16 18:11:39 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
5341
5342         * decl.c (start_function): If current_class_decl is a signature
5343         pointer, don't dereference it but set C_C_D to current_class_decl.
5344
5345 Fri Jun 16 17:06:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5346
5347         * decl.c (duplicate_decls): Complain about virtual functions
5348         redeclared to be inline.
5349
5350 Fri Jun 16 13:20:38 1995  Mike Stump  <mrs@cygnus.com>
5351
5352         * decl.c (get_unique_name): New routine to name unnamed namespaces.
5353         (push_namespace): Use get_unique_name for naming unnamed namespaces.
5354
5355 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5356
5357         * parse.y: Call cplus_decl_attributes with prefix_attributes where
5358         appropriate.
5359
5360 Wed Jun 14 19:24:49 1995  Mike Stump  <mrs@cygnus.com>
5361
5362         * search.c (get_vbase): New routine to switch hierarchies from the
5363         CLASSTYPE_VBASECLASSES to the normal one.
5364         (expand_indirect_vtbls_init): Use get_vbase to figure out how we
5365         want to convert to a vbase pointer.
5366
5367 Mon Jun 12 17:50:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5368
5369         * pt.c (instantiate_class_template): Add the new instantiation to
5370         template_classes.
5371         (do_pending_expansions): Call instantiate_member_templates on all of
5372         the classes in template_classes.
5373
5374 Mon Jun 12 12:36:59 1995  Mike Stump  <mrs@cygnus.com>
5375
5376         * decl.c (complete_array_type): Fill in the TYPE_DOMAIN of our
5377         TYPE_MAIN_VARIANT if it is not filled in.
5378         * init.c (build_delete): If the TYPE_DOMAIN is not set, give an
5379         error instead of core dumping.
5380
5381 Mon Jun 12 10:41:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5382
5383         * call.c (can_convert): Also check for distance > 0.
5384         (can_convert_arg): Likewise.
5385         (user_harshness): Likewise.
5386
5387 Fri Jun  9 19:17:21 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5388
5389         * g++.c (MATH_LIBRARY): Provide default.
5390         (main): Always link with the math library if we link with libstdc++.
5391
5392         * decl.c (start_function): Complain about redefinition of a function
5393         even when the pending_inline version is compiled after the other
5394         version.
5395
5396 Thu Jun  8 15:44:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5397
5398         * gc.c (build_dynamic_cast): Build up a reference to a parameter of
5399         aggregate type.
5400
5401 Wed Jun  7 15:31:57 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5402
5403         * init.c (build_vec_delete): Resolve an offset ref before we try to
5404         use it.
5405
5406 Wed Jun  7 14:19:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5407
5408         * typeck.c (build_modify_expr): If the class lacks a constructor or
5409         assignment operator, return error_mark_node.
5410         (common_type): Use build_cplus_array_type.
5411
5412 Tue Jun  6 09:41:27 1995  Mike Stump  <mrs@cygnus.com>
5413
5414         * class.c (dont_allow_type_definitions): New variable set when types
5415         cannot be defined.
5416         (finish_struct): Use it.
5417         * cp-tree.h (dont_allow_type_definitions): Define it.
5418         * parse.y (primary, handler_seq): Set it.
5419
5420 Mon Jun  5 18:49:38 1995  Mike Stump  <mrs@cygnus.com>
5421
5422         * method.c (build_opfncall): Use DECL_CHAIN, not TREE_CHAIN for
5423         results from lookup_fnfields.  Always give warning/error on bad
5424         code.
5425
5426 Mon Jun  5 11:39:37 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5427
5428         * init.c (member_init_ok_or_else): Don't allow initialization of
5429         an ancestor's member from within a constructor.
5430
5431 Mon Jun  5 11:20:34 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
5432
5433         * sig.c (build_signature_table_constructor): Use DECL_CONTEXT
5434         instead of DECL_CLASS_CONTEXT for calculating the vfield offset so
5435         abstract virtual functions are handled correctly.
5436
5437         * sig.c (build_signature_table_constructor): Store the correct
5438         delta in signature table entries.  It does not yet work for
5439         classes with virtual base classes as implementations of signatures.
5440         (build_signature_method_call): Add the delta to the object_ptr
5441         before generating the function call.
5442
5443         * call.c (build_method_call): Make instance_ptr the signature
5444         pointer itself instead of dereferencing the optr.
5445         * sig.c (build_signature_method_call): Dereference the optr for the
5446         direct and virtual calls.
5447
5448         * sig.c (build_signature_table_constructor): Make the tag for
5449         default implementations -1 instead of 2.
5450         (build_signature_method_call): Change the generated conditional
5451         expression correspondingly.
5452
5453         * sig.c (build_signature_pointer_constructor): Deleted the sorry
5454         message that said we can't handle multiple inheritance for
5455         implementations of signatures
5456         (build_signature_method_call): Use the offset from the sigtable
5457         entry instead of the vptr field from the signature pointer for
5458         building a virtual function call.
5459
5460         * class.c (build_vfn_ref): Deleted signature specific code, we don't
5461         call this function anymore from build_signature_method_call.
5462
5463         * cp-tree.h (SIGNATURE_VPTR_NAME): Deleted.  We use the right vptr
5464         field in the object now instead of in the signature pointer/ref. 
5465         (build_vptr_ref): Deleted extern declaration.
5466         * sig.c (build_vptr_ref): Deleted.
5467         (build_signature_pointer_or_reference_type): Deleted construction of
5468         the vptr field.
5469         (build_signature_pointer_constructor): Deleted initialization of/
5470         assignment to the vptr field.
5471
5472         * sig.c (build_signature_table_constructor): Convert the signature
5473         table entry fields to their correct types.
5474
5475         * sig.c (build_signature_table_constructor): Don't call digest_init
5476         for the fields of a sigtable entry, it's wasted time.
5477
5478         * sig.c (build_signature_table_constructor): Correctly set the
5479         offset and index fields of a sigtable entry.  Build the constructor
5480         the way digest_init does, digest_init can't handle initializing an
5481         anonymous union inside a struct.
5482         (build_signature_method_call): Use the index field instead of the
5483         delta field to get the vtable index.
5484
5485         * decl.c (init_decl_processing): Fix number of fields for building
5486         sigtable_entry_type.
5487
5488         * cp-tree.h (tag_identifier, offset_identifier): Added extern decls.
5489         (SIGTABLE_CODE_NAME): Renamed to SIGTABLE_TAG_NAME.
5490         (SIGTABLE_PFN_NAME): Deleted, we'll use VTABLE_PFN_NAME instead.
5491         * decl.c (tag_identifier, offset_identifier): New variables to
5492         hold the identifiers for the sigtable fields tag and offset.
5493         (init_decl_processing): Initialize these variables.
5494         (init_decl_processing): Use these variables to build the
5495         sigtable_entry_type structure.  Rename the code and offset fields
5496         to tag and delta, respectively; add offset and index fields. Changed
5497         types of fields from short_integer_type_node to delta_type_node.
5498         * sig.c (build_signature_table_constructor): Rename code and offset
5499         to tag and delta, respectively.
5500         (build_signature_method_call): Likewise.  Use above variables.
5501
5502 Thu Jun  1 17:03:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5503
5504         * decl.c (lookup_name_real): Don't try to look anything up in an
5505         erroneous object.
5506
5507 Fri Jun  2 10:30:14 1995  Mike Stump  <mrs@cygnus.com>
5508
5509         * method.c (build_overload_int): New routine.  Break out
5510         functionality from build_overload_value so we can reuse it.
5511         (build_overload_value): Handle pointer to member functions as value
5512         parameters for templates.
5513         (build_overload_identifier): Since template parameters are shared
5514         among all instantiations, we have to substitute in the real types
5515         in TREE_TYPE (parm).
5516         pt.c (coerce_template_parms): Likewise.
5517         (push_template_decls): Likewise.
5518         (grok_template_type): Deleted as template parameters are shared
5519         among all instantiations.
5520
5521 Wed May 31 19:10:32 1995  Mike Stump  <mrs@cygnus.com>
5522
5523         * decl.c (grokdeclarator): Always give errors on constant overflow
5524         for array indices.
5525
5526 Wed May 31 11:39:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5527
5528         * typeck.c (commonparms): Don't abort if simple_cst_equal returns < 0.
5529         (build_c_cast): Don't tack on a NON_LVALUE_EXPR when casting to
5530         reference type.
5531         (build_indirect_ref): Fix check for *&.
5532
5533 Fri Jun 16 06:54:03 1995  Mike Stump  <mrs@cygnus.com>
5534
5535         * Version 2.7.0 released.
5536
5537 Fri Jun 16 15:07:29 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5538
5539         * Make-lang.in (DEMANGLER_PROG): Add LIBS.
5540
5541 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5542
5543         * decl.c (define_function): Don't set DECL_INTERFACE_KNOWN.
5544
5545 Wed Jun  7 20:00:31 1995  Mike Stump  <mrs@cygnus.com>
5546
5547         * *.[chy]: Change all callers of finish_decl to cp_finish_decl.
5548         * decl.c (finish_decl): New routine to handle call backs from the
5549         mid end (declare_hidden_char_array).
5550
5551 Wed Jun  7 19:02:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5552
5553         * decl.c (start_function): Handle setting C_C_D here.
5554         (set_C_C_D): Removed.
5555         (struct saved_scope): Remove class_decl.
5556         (push_to_top_level): Don't save current_class_decl.
5557         (pop_from_top_level): Don't restore current_class_decl or C_C_D.
5558         (struct cp_function): Add C_C_D.
5559         (push_cp_function_context): Save C_C_D.
5560         (pop_cp_function_context): Restore C_C_D.
5561
5562 Fri Jun  2 11:05:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5563
5564         * decl.c (set_C_C_D): New function.  suspend_momentary before
5565         building C_C_D.
5566         (pop_from_top_level): Call it.
5567         (start_function): Likewise.
5568         (pop_cp_function_context): Likewise.
5569
5570         * class.c, cp-tree.h, decl.c, decl2.c, parse.y: Lose all references
5571         to current_vtable_decl, CLASSTYPE_INST_VAR and CLASSTYPE_VTBL_PTR.
5572
5573         * decl.c (push_cp_function_context): Save current_class_decl.
5574         (pop_cp_function_context): Restore current_class_decl and set C_C_D.
5575         (pop_from_top_level): Don't use CLASSTYPE_INST_VAR to set C_C_D.
5576         (start_function): Likewise.
5577
5578         * class.c (popclass): Don't mess with current_class_decl,
5579         current_vtable_decl, or C_C_D.
5580
5581 Mon May 29 12:45:10 1995  Paul Eggert  <eggert@twinsun.com>
5582
5583         * Make-lang.in (c++.mostlyclean): Remove $(DEMANGLER_PROG).
5584
5585 Wed May 24 15:55:18 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5586
5587         * decl.c (duplicate_decls): Check simple_cst_equal result against 0.
5588         * decl2.c (finish_anon_union): Likewise.
5589         * method.c (largest_union_member): Likewise.
5590
5591 Wed May 24 14:41:11 1995  H.J. Lu  <hjl@nynexst.com>
5592
5593         * Make-lang.in (cxxmain.o): Replace single quotes with backslashes.
5594
5595 Mon May 22 17:38:48 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5596
5597         * Make-lang.in (g++, g++-cross, cc1plus, DEMANGLER_PROG):
5598         Use $@ instead of output name so works even if have .exe.
5599         (cxxmain.o): Use cp if ln -s fails.
5600         (c++.install-man): Use $(exeext) in executable names.
5601         (c++.mostlyclean, stage[1-4]): Use $(objext) in object file names.
5602         * Makefile.in (../cc1plus): Use $(exeext) in name of executable.
5603
5604 Wed May 24 01:39:03 1995  Jason Merrill  <jason@deneb.cygnus.com>
5605
5606         * call.c (build_method_call): parms can be null, duh.
5607
5608 Tue May 23 01:32:09 1995  Jason Merrill  <jason@deneb.cygnus.com>
5609
5610         * call.c (build_method_call): If convert_arguments failed, just bail.
5611
5612 Fri May 19 10:31:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5613
5614         * cvt.c (convert_force): Pass LOOKUP_NORMAL to cp_convert.
5615
5616         * tree.c (copy_to_permanent): Oops.
5617
5618 Fri May 19 10:01:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
5619
5620         * cp-tree.h (break_out_target_exprs): Add decl.
5621
5622 Thu May 18 13:02:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5623
5624         * decl.c (start_function): Move *all* interface handling stuff after
5625         the pushdecl.
5626
5627         * tree.c (mapcar): Renamed from make_deep_copy and generalized.
5628         (perm_manip): Return t if permanent, otherwise 0.
5629         (copy_to_permanent): Use them.
5630         (bot_manip): Helper for break_out_target_exprs.
5631         (break_out_target_exprs): New function.  Uses mapcar.
5632
5633         * typeck.c (convert_arguments): Use it.
5634
5635         * method.c (hack_identifier): Use convert_from_reference to
5636         dereference a reference.
5637
5638 Wed May 17 17:54:54 1995  Mike Stump  <mrs@cygnus.com>
5639
5640         * call.c (convert_harshness): Move reference bashing before pointer
5641         to member bashing.
5642
5643 Wed May 17 16:57:53 1995  Mike Stump  <mrs@cygnus.com>
5644
5645         * cvt.c (convert_to_reference): Only complain, if complaints are
5646         wanted.
5647         * typeck.c (build_function_call_real): Likewise.  If
5648         LOOKUP_SPECULATIVELY is set and something won't work, return
5649         NULL_TREE.
5650         * cvt.c (cp_convert): Likewise.  Pass flags down to build_method_call.
5651         (convert): Pass LOOKUP_NORMAL to cp_convert.
5652         * typeck.c (convert_for_assignment): Likewise.
5653         (convert_force): Pass LOOKUP_COMPLAIN to cp_convert.
5654         (convert_arguments): Get out early if we get an error_mark_node.
5655         (convert_for_initialization): Use cp_convert instead of convert so
5656         that we can pass flags down.
5657         * cp-tree.h (LOOKUP_SPECULATIVELY): Added documentation.
5658
5659 Wed May 17 01:43:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5660
5661         * typeck2.c (store_init_value): Don't take the MAIN_VARIANT of the
5662         decl type.
5663
5664         * class.c (finish_struct): Don't complain about a class with no
5665         user-defined constructors but with a member that has no default
5666         constructor, as this is OK for aggregates.
5667
5668         * expr.c (cplus_expand_expr, NEW_EXPR): If this is an explicit
5669         constructor call, mark slot addressable.
5670
5671 Tue May 16 18:37:51 1995  Douglas Rupp  <drupp@cs.washington.edu>
5672
5673         * g++.c: Changed WINNT to _WIN32.
5674
5675 Tue May 16 12:40:16 1995  Jason Merrill  <jason@lisa.cygnus.com>
5676
5677         * lex.c (handle_sysv_pragma): Don't use token_buffer.
5678
5679 Tue May 16 12:05:26 1995  Mike Stump  <mrs@cygnus.com>
5680
5681         * call.c (resolve_scope_to_name): Add initial semantic support for
5682         namespaces.
5683         * class.c (finish_struct): Likewise.
5684         * cp-tree.h (NAMESPACE_LEVEL): Likewise.
5685         * cvt.c (build_up_reference, convert_to_reference): Likewise. 
5686         * decl.c (binding_level::namespace_p, suspend_binding_level): Likewise.
5687         (resume_binding_level, toplevel_bindings_p): Likewise
5688         (namespace_bindings_p, declare_namespace_level): Likewise.
5689         (resume_level, push_namespace, pop_namespace): Likewise.
5690         (pop_everything, pushtag, duplicate_decls, pushdecl): Likewise.
5691         (implicitly_declare, lookup_namespace_name): Likewise.
5692         (lookup_name_real, start_decl, make_temporary_for_reference): Likewise.
5693         (obscure_complex_init, finish_decl, expand_static_init): Likewise.
5694         (grokvardecl, grokdeclarator, parmlist_is_exprlist): Likewise.
5695         (store_parm_decls, hack_incomplete_structures): Likewise.
5696         * decl2.c (get_temp_name, finish_anon_union): Likewise.
5697         (current_namespace, push_namespace, pop_namespace): Likewise.
5698         (do_namespace_alias, do_toplevel_using_decl): Likewise.
5699         (do_class_using_decl): Likewise.
5700         * error.c (dump_decl): Likewise.
5701         * init.c (build_member_call, build_offset_ref): Likewise.
5702         * lex.c (identifier_type): Likewise.
5703         * parse.y (lang_extdef, using_decl, extdef): Likewise.
5704         (component_decl_1, nested_name_specifier_1): Likewise.
5705         * spew.c (yylex): Likewise.
5706         * tree.def (NAMESPACE_DECL): Likewise.
5707
5708 Tue May 16 11:55:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5709
5710         * decl.c (push_overloaded_decl): Return the new decl even if it
5711         can't be pushed.
5712
5713 Tue May 16 11:00:37 1995  Jason Merrill  <jason@lisa.cygnus.com>
5714
5715         * typeck.c (decay_conversion): Split out from default_conversion.
5716         (default_conversion): Call it.
5717         (build_binary_op): Likewise.
5718         (build_binary_op_nodefault): Use decay_conversion for truth ops.
5719
5720 Mon May 15 12:47:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5721
5722         * decl.c (warn_extern_redeclared_static): This is a pedwarn.
5723         (duplicate_decls): Always use the old decl's linkage info.  Don't
5724         play with linkage of consts.
5725         (pushdecl): Don't play with linkage of consts.
5726         (redeclaration_error_message): Don't complain about an old public
5727         decl and a new non-public decl here.
5728         (grokvardecl): Handle linkage of consts here.
5729         (grokdeclarator): An 'extern inline' is public.  Pass constp to
5730         grokvardecl.
5731         (start_function): Wait until after the pushdecl to do some linkage
5732         stuff.
5733
5734         * decl2.c (import_export_vtable): Make duplicates weak rather than
5735         static if supported.
5736         (import_export_inline): Likewise.
5737         * pt.c (do_pending_expansions): Likewise.
5738
5739         * class.c (build_vbase_path): flag_assume_nonnull_objects only
5740         affects reference conversion.
5741
5742         * init.c (emit_base_init): Build up an RTL_EXPR and add it to
5743         rtl_expr_chain.
5744         * decl.c, decl2.c: s/base_init_insns/base_init_expr/.
5745
5746 Tue May 16 07:06:28 1995  Paul Eggert  <eggert@twinsun.com>
5747
5748         * method.c (numeric_output_need_bar): Renamed from misspelling.
5749
5750         * typeck.c (build_ptrmemfunc): Fix misspellings in messages.
5751
5752 Sun May 14 10:26:22 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5753
5754         * lang-options.h, lang-specs.h: New files.
5755
5756 Thu May 11 00:31:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5757
5758         * typeck.c (default_conversion): Don't check for BLKmode before
5759         pulling out the decl_constant_value.
5760
5761         * decl.c (start_function): Clear named_labels and shadowed_labels.
5762
5763         * typeck.c (build_function_call_real): Also synthesize methods here.
5764
5765 Wed May 10 00:55:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5766
5767         * decl2.c (finish_file): Synthesize exported methods before the
5768         reconsider loop.
5769
5770         * parse.y: Move declaration of flag_new_for_scope to file scope.
5771
5772 Tue May  9 19:10:33 1995  Mike Stump  <mrs@cygnus.com>
5773
5774         * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
5775         * parse.y (FOR): Conditionalize the pushing and poping of scope for
5776         the for-init-statement upon the new flag_new_for_scope.
5777         * parse.y (try_block): Simplify and use compstmt.
5778
5779 Mon May  8 12:41:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5780
5781         * decl.c (define_function): Mark function decl artificial.
5782
5783 Sun May  7 00:51:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5784
5785         * parse.y (simple_stmt, FOR): Put back push/pop for condition scope.
5786
5787         * decl2.c (grokclassfn): DECLs don't have cv-qualified types.
5788         * tree.c (build_cplus_method_type): Likewise.
5789
5790         * cp-tree.h (SET_DECL_ARTIFICIAL): Just set DECL_ARTIFICIAL to 1.
5791
5792         * typeck.c (build_function_call_real): If convert_arguments failed,
5793         just bail.
5794         (convert_arguments): If one of the arguments is error_mark_node,
5795         just bail.
5796
5797 Sat May  6 02:39:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5798
5799         * decl.c (duplicate_decls): Don't check DECL_NOT_REALLY_EXTERN for
5800         decls that don't include it.
5801
5802 Fri May  5 14:23:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5803
5804         * decl.c (duplicate_decls): Decls that have DECL_INTERFACE_KNOWN or
5805         DECL_NOT_REALLY_EXTERN set aren't extern decls.
5806
5807         * typeck.c (build_indirect_ref): Don't call default_conversion for a
5808         parameter of reference_type.
5809         * cvt.c (convert_from_reference): Just use build_indirect_ref.
5810
5811         * pt.c (do_type_instantiation): Only instantiate member functions
5812         that actually come from templates.
5813
5814 Fri May  5 09:46:05 1995  Mike Stump  <mrs@cygnus.com>
5815
5816         * parse.y: Generalized cleanup of poplevels, and compound statements
5817         and compound statements in try blocks.  Rewritten `for' rule so that
5818         the scope of variables declared in the for clause is shortened to
5819         span just to the end of the statement, instead of the whole
5820         containing block.
5821
5822 Fri May  5 00:37:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5823
5824         * call.c (convert_harshness): Handle pointers to members better.
5825
5826 Thu May  4 16:00:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5827
5828         * decl2.c (delete_sanity): Do access control here.
5829         * init.c (build_delete): Instead of here.
5830
5831         * Make-lang.in: Build c++filt.
5832
5833 Wed May  3 02:59:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5834
5835         * decl2.c (cplus_decl_attributes): If we just modified a TYPE_DECL,
5836         update our IDENTIFIER_TYPE_VALUE.
5837
5838 Fri Apr 28 07:58:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5839
5840         * lex.c (cons_up_default_function): Fix linkage of #pragma
5841         implemented functions.
5842
5843 Thu Apr 27 16:56:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5844
5845         * method.c (build_overload_name): Simplify and fix repeated type
5846         folding.
5847
5848         * decl.c (grokdeclarator): Prohibit pointers to void or reference
5849         members.
5850
5851 Thu Apr 27 09:49:07 1995  Mike Stump  <mrs@cygnus.com>
5852
5853         * typeck2.c (process_init_constructor): Make sure initializers are
5854         fully digested.
5855
5856 Thu Apr 27 01:11:55 1995  Jason Merrill  <jason@python.cygnus.com>
5857
5858         * lex.c (cons_up_default_function): Always defer synthesis.
5859
5860 Thu Apr 27 00:20:37 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5861
5862         * decl2.c (mark_inline_for_output): Don't play with pending_inline
5863         stuff.
5864
5865 Wed Apr 26 17:48:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5866
5867         * call.c (user_harshness): New function; like build_type_conversion,
5868         but doesn't actually build anything.
5869         (compute_conversion_costs): Use it instead of build_type_conversion.
5870
5871 Wed Apr 26 17:11:25 1995  Jason Merrill  <jason@deneb.cygnus.com>
5872
5873         * typeck.c (build_function_call_real): Improve error message for
5874         calling a non-function.
5875
5876         * method.c (hack_identifier): Lose check for calling a data member.
5877
5878 Wed Apr 26 16:59:13 1995  Mike Stump  <mrs@cygnus.com>
5879
5880         * typeck2.c (build_functional_cast): Remove very old cruft.
5881         Seems like good code is generated without it.
5882
5883 Wed Apr 26 00:47:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5884
5885         * method.c (do_build_assign_ref): Fix handling of anonymous unions.
5886         (do_build_copy_constructor): Likewise.
5887
5888         * parse.y (simple_stmt, SWITCH): Call {push,pop}_switch.
5889
5890         * decl.c (push_switch): New function.
5891         (pop_switch): Likewise.
5892         (define_case_label): Check for jumping over initialization.
5893
5894         * call.c (build_method_call): Check for an inline function being
5895         called before its definition has been seen.
5896         * typeck.c (build_function_call_real): Likewise.
5897
5898         * decl.c (duplicate_decls): Check for a function being redeclared
5899         inline after its address has been taken.
5900
5901         * typeck.c (build_conditional_expr): Handle related class lvalues.
5902
5903 Tue Apr 25 13:20:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5904
5905         * pt.c (do_pending_expansions): Don't expand unused templates.
5906
5907         * parse.y (component_decl): Accept a lone semicolon.
5908
5909 Tue Apr 25 00:25:56 1995  Jason Merrill  <jason@rtl.cygnus.com>
5910
5911         * call.c (build_method_call): Don't allow an RTL_EXPR to serve as the
5912         object parameter anymore.
5913
5914         * expr.c (cplus_expand_expr): Don't create RTL_EXPRs with no insns.
5915
5916 Mon Apr 24 12:35:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5917
5918         * parse.y (simple_stmt, decl case): Clear prefix_attributes.
5919         (lang_extdef): Likewise.
5920
5921         * parse.y (maybe_parmlist): New rule for use in declarators where
5922         this could either be a list of expressions or parameters.  Calls
5923         suspend_momentary before deciding which.
5924         (direct_after_type_declarator): Use it.
5925         (complex_direct_notype_declarator): Use it.
5926
5927         * pt.c (tsubst): Propagate attributes const and noreturn.
5928
5929         * typeck.c (build_modify_expr): If warn_synth, call build_opfncall
5930         before doing the default thing.
5931
5932 Thu Apr 27 21:49:36 1995  Doug Evans  <dje@cygnus.com>
5933
5934         * typeck.c (common_type): Call lookup_attribute instead of
5935         value_member.
5936
5937 Tue Apr 25 18:07:43 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5938
5939         * Make-lang.in: Change "realclean" to "maintainer-clean".
5940
5941 Sun Apr 23 12:32:38 1995  Mike Stump  <mrs@cygnus.com>
5942
5943         * decl2.c (finish_file): Fix broken linked list handling.
5944
5945 Fri Apr 21 18:08:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5946
5947         * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF
5948         as often.
5949         (finish_struct): Likewise.
5950
5951         * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*.
5952
5953         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro.
5954         (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro.
5955
5956 Fri Apr 21 15:52:22 1995  Jason Merrill  <jason@python.cygnus.com>
5957
5958         * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if
5959         it is of the same type as the return value.
5960
5961 Fri Apr 21 03:01:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5962
5963         * decl2.c (finish_file): Reconsider if synthesizing a method wrote
5964         out its assembly.
5965
5966         * typeck.c (convert_for_initialization): Don't call a trivial copy
5967         constructor.
5968
5969         * typeck2.c (store_init_value): Only abort if the type has a
5970         non-trivial copy constructor.
5971
5972         * typeck.c (c_expand_return): If we're returning in a register and
5973         the return value is a TARGET_EXPR, expand it.  Only do
5974         expand_aggr_init if we're returning in memory.
5975         (expand_target_expr): Function to expand a TARGET_EXPR.
5976         (build_modify_expr): Use it.
5977
5978         * tree.c (build_cplus_new): Layout the slot.
5979
5980         * expr.c (cplus_expand_expr): Use expand_call to expand the call
5981         under a NEW_EXPR, so the target is not discarded.
5982
5983 Thu Apr 20 14:59:31 1995  Mike Stump  <mrs@cygnus.com>
5984
5985         * gc.c (build_dynamic_cast): Tighten error checking.
5986
5987 Thu Apr 20 11:23:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5988
5989         * expr.c (cplus_expand_expr): Only abort if the returned target is
5990         different from what we expected if the type has a non-trivial copy
5991         constructor.
5992
5993         * decl2.c (cplus_decl_attributes): Attributes applied to a template
5994         really apply to the template's result.
5995
5996         * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE
5997         to decide whether to consider a CALL_EXPR an lvalue.
5998
5999         * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the
6000         type has a non-trivial copy constructor.
6001
6002         * decl.c (start_function): If interface_known, unset
6003         DECL_NOT_REALLY_EXTERN on the function.
6004
6005 Wed Apr 19 16:53:13 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6006
6007         * pt.c (do_function_instantiation): Handle explicit instantiation of
6008         member functions.
6009         (do_type_instantiation): Handle 'inline template class foo<int>',
6010         meaning just spit out the vtable.
6011
6012         * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on
6013         the consed functions.
6014
6015         * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN.
6016
6017 Wed Apr 19 16:28:17 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6018
6019         * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c,
6020         typeck.c: Include output.h.
6021
6022 Wed Apr 19 14:57:21 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
6023
6024         * call.c (build_method_call): Allow a signature member functions to
6025         be called from a default implementation.
6026
6027 Wed Apr 19 10:21:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6028
6029         * repo.c (finish_repo): Remember what directory we are in.
6030
6031         * search.c (expand_upcast_fixups): Don't mess with abort_fndecl.
6032
6033         * repo.c: Use obstacks instead of fixed-size buffers.  Don't spit
6034         out the second copy of the symbol name.  Don't remember COLLECT_GCC.
6035
6036 Wed Apr 19 02:32:40 1995  Mike Stump  <mrs@cygnus.com>
6037
6038         * search.c (virtual_context): New function to get the virtual
6039         context of a function.
6040         (expand_upcast_fixups): New function to generate runtime vtables.
6041         (fixup_virtual_upcast_offsets): Likewise.
6042         (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to
6043         ensure that the this offsets for upcasts from virtual bases into
6044         other virtual bases or non-virtual bases are correct at construction
6045         time and destruction time.
6046         * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all
6047         vtables in all virtual bases, instead of just one vtable in each
6048         virtual base.
6049         (fixup_vtable_deltas1): Likewise.
6050
6051 Tue Apr 18 03:57:35 1995  Michael Meissner  <meissner@cygnus.com>
6052
6053         * Makefile.in (lex.o): Add dependency on c-pragma.h.
6054
6055         * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as
6056         appropriate, instead of 0.
6057
6058 Mon Apr 17 12:28:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6059
6060         * decl.c (pushdecl): Use decls_match, not duplicate_decls, for
6061         comparing local and global decls.
6062
6063 Fri Apr 14 01:46:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6064
6065         * typeck.c (convert_arguments): Only prohibit passing to ... of
6066         types with non-trivial copy constructors.
6067
6068         * repo.c (repo_template_used): Don't try to mess with no id.
6069
6070 Fri Apr 14 23:32:50 1995  Per Bothner  <bothner@rtl.cygnus.com>
6071
6072         * decl.c (duplicate_decls):  Use cp_warning_at for redundant-decls.
6073
6074 Thu Apr 13 15:37:42 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6075
6076         * cp-tree.h (current_tinst_level): Delete declaration, since it's
6077         static inside pt.c.
6078
6079         * typeck.c (build_modify_expr): Catch incompatible array assignment.
6080
6081         * parse.y (attribute_list, attrib): Rewrite actions to feed the
6082         right stuff to decl_attributes.
6083
6084 Thu Apr 13 11:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6085
6086         * search.c (dfs_debug_mark): Check for magic virtual like
6087         import_export_vtable.
6088
6089         * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with
6090         four args.
6091
6092 Wed Apr 12 12:02:57 1995  Jason Merrill  <jason@deneb.cygnus.com>
6093
6094         * decl2.c (finish_file): Move prevtable pass before needs_messing_up
6095         decision.
6096
6097 Tue Apr 11 11:20:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6098
6099         * decl.c (finish_decl): If we're writing out a static data member of
6100         a class, we want the debug info for that class.
6101
6102         * gc.c (build_t_desc): Check linkage of a class properly.
6103
6104         * class.c (finish_struct): Set the 'headof' offset for the main
6105         vtable properly.
6106         (prepare_fresh_vtable): Fix typeinfo pointer here.
6107         (modify_one_vtable): Instead of here.
6108
6109 Mon Apr 10 12:15:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6110
6111         * repo.c (repo_get_id): New function to return the interesting
6112         identifier for a repo entity.
6113         (repo_template_used): Use it.
6114         (repo_template_instantiated): Mark the id as chosen.
6115         (init_repo): Record whether or not the id was chosen.
6116         (finish_repo): Note if an id was newly chosen.
6117
6118         * pt.c (do_function_instantiation): Call repo_template_instantiated.
6119         (do_type_instantiation): Likewise.  Don't diagnose multiple
6120         instantiation.
6121
6122         * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding
6123         whether or not to synthesize a method.
6124
6125         Undo these changes:
6126         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
6127         * class.c (modify_all_direct_vtables): ditto.
6128         * init.c (expand_direct_vtbls_init): expand more vtables if
6129         flag_rtti is on.
6130
6131 Sat Apr  8 17:45:41 1995  Mike Stump  <mrs@cygnus.com>
6132
6133         * gc.c (build_headof): Use ptrdiff_type_node instead of
6134         integer_type_node on pointer arithmetic.
6135
6136 Sat Apr  8 11:57:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6137
6138         * typeck.c (build_modify_expr): Undo previous change.
6139
6140 Thu Apr  6 01:23:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6141
6142         * Makefile.in (compiler): Remove ../cc1plus before rebuilding it.
6143
6144         * repo.c (get_base_filename): Put the .rpo file in the directory
6145         with the object file, not the source.
6146
6147         * typeck.c (build_conditional_expr): Handle pmf's better.
6148
6149         * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out
6150         the name of the symbol.
6151
6152 Wed Apr  5 15:24:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6153
6154         * repo.c (open_repo_file): Make repo filename DOS-compliant.
6155         (*): Also write a new repo file if some previously-used
6156         templates are no longer used.  Only remember the identifier.
6157
6158         * lex.c (cons_up_default_function): If this function belongs to a
6159         template class, call repo_template_used for it.
6160
6161         * repo.c (repo_template_used): Using a class means using its vtable,
6162         if any.
6163         (finish_repo): Likewise.
6164
6165         * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs
6166         if the type has a complex copy constructor.
6167
6168         * decl2.c (lang_decode_option): -frepo implies
6169         -fno-implicit-templates.
6170
6171         * decl.c (start_function): Clear current_{base,member}_init_list.
6172
6173         * lex.c (init_lex): Also unset *_eq if ! flag_operator_names.
6174
6175 Tue Apr  4 16:11:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6176
6177         * decl.c (struct cp_function): Add {base,member}_init_list.
6178         (push_cp_function_context): Save current_{base,member}_init_list.
6179         (pop_cp_function_context): Restore them.
6180
6181 Mon Apr  3 16:55:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6182
6183         * repo.c (get_base_filename): Take filename parm, fix logic bug.
6184
6185         * typeck.c (build_compound_expr): Do not warn about a compound expr
6186         in which the first expression has no side effects.
6187         (build_x_compound_expr): Warn here instead.
6188         (build_conditional_expr): Don't warn about a conditional expression
6189         between an enum and the type it promotes to.
6190
6191         * init.c (build_new): Handle initialization of arrays of builtins
6192         properly.
6193
6194 Mon Apr  3 15:08:04 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6195
6196         * repo.c: Include config.h to get definitions of bcopy and rindex
6197         on systems that don't have them (e.g., SVR4).
6198
6199 Mon Apr  3 14:41:55 1995  Mike Stump  <mrs@cygnus.com>
6200
6201         * decl2.c (finish_table): Pass NULL_TREE instead of init to
6202         finish_decl so that it won't try and do error checking on the
6203         initializer.
6204
6205 Mon Apr  3 10:45:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6206
6207         * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to
6208         determine whether this compile used -c -o.
6209         (open_repo_file): Use get_base_filename.  Remove the extension.
6210         (finish_repo): Spit out the values of main_input_filename,
6211         COLLECT_GCC and COLLECT_GCC_OPTIONS.
6212
6213         * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name.
6214
6215 Sun Apr  2 23:43:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6216
6217         * search.c (compute_access): Don't try to do access control on
6218         nested types.
6219
6220 Fri Mar 31 10:14:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6221
6222         * repo.c: New file to handle things repo.
6223
6224         * pt.c (instantiate_template): Call repo_template_used if the
6225         definition is accessible.
6226         (mark_function_instantiated): Split out from
6227         do_function_instantiation.
6228         (mark_class_instantiated): Split out from do_type_instantiation.
6229
6230         * parse.y (template_instantiate_once): Call repo_template_used.
6231
6232         * lex.c (lang_init): Call init_repo.
6233
6234         * decl2.c: Handle flag_use_repository.
6235         (finish_file): Call finish_repo.
6236
6237         * decl.c (start_method): Call repo_template_used if this is a
6238         template method.
6239
6240         * Makefile.in (CXX_OBJS): Add repo.o.
6241         (repo.o): Add dependencies.
6242
6243         * Make-lang.in (CXX_SRCS): Add repo.c.
6244
6245         * decl.c (start_function): If DECL_INTERFACE_KNOWN and
6246         DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL.
6247
6248         * typeck.c (build_binary_op_nodefault): Identify the invalid operand
6249         types used.
6250
6251         * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN.
6252
6253 Thu Mar 30 17:54:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6254
6255         * typeck.c (build_binary_op_nodefault): Tidy up use of build_type
6256         and result_type.  When checking for comparison between signed
6257         and unsigned, use result_type rather than the (possibly shortened)
6258         type of op0.  Also, don't warn about equality comparison of a
6259         signed operand to an unsigned constant that fits in the signed
6260         type.
6261
6262         * method.c (do_build_copy_constructor): Reverse
6263         current_base_init_list after we've built it up.
6264
6265 Thu Mar 30 14:35:18 1995  Mike Stump  <mrs@cygnus.com>
6266
6267         * except.c (build_throw): Never warn about the value of throw not
6268         being used.
6269
6270 Thu Mar 30 13:16:54 1995  Mike Stump  <mrs@cygnus.com>
6271
6272         * except.c (expand_start_catch_block): Check for bad catch parameter
6273         declarations.
6274
6275 Thu Mar 30 13:06:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6276
6277         * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if
6278         DECL_EXTERNAL is not already set.
6279
6280 Thu Mar 30 11:26:24 1995  Mike Stump  <mrs@cygnus.com>
6281
6282         * method.c (emit_thunk): Let poplevel know that the last level is
6283         for a function so it can create a BLOCK_NODE and set DECL_INITIAL.
6284
6285 Thu Mar 30 11:15:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6286
6287         * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN
6288         here.
6289
6290         * decl.c (grokdeclarator): OK, don't abort if we see a decl with
6291         METHOD_TYPE.
6292         (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on
6293         all deferred inlines.
6294
6295 Wed Mar 29 19:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6296
6297         * cp-tree.h (DECL_THIS_INLINE): New macro.
6298         (DECL_NOT_REALLY_EXTERN): New macro.
6299         (DECL_THIS_STATIC): New macro.
6300
6301         * decl.c: Lose all references to current_extern_inline.  Break
6302         inline semantics into DECL_INLINE for actual inlining and
6303         DECL_THIS_INLINE for the linkage wierdness.  Use DECL_THIS_STATIC.
6304         * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to
6305         emit an inline here.  Associated changes.
6306         * lex.c: Likewise.
6307         * pt.c: Likewise.
6308         * typeck.c: Likewise.
6309
6310         * call.c (build_method_call): Don't bother trying to handle inlines
6311         specially.
6312         * cvt.c (convert_to_aggr): Likewise.
6313
6314         * pt.c (do_function_instantiation): Handle instantiation of
6315         public inlines, too.
6316
6317 Wed Mar 29 16:04:25 1995  Mike Stump  <mrs@cygnus.com>
6318
6319         * except.c (init_exception_processing): Change the interface for
6320         __throw_type_match and add decl for new rtti matching routine
6321         __throw_type_match_rtti.
6322         (build_eh_type): New routine to build a run time descriptor for the
6323         expression given. 
6324         (expand_start_catch_block): Update to use new calling convention for
6325         the matcher.
6326         (expand_throw): Update to use build_eh_type.
6327
6328 Mon Mar 27 07:14:33 1995  Warner Losh   <imp@village.org>
6329
6330         * g++.c: Removed __NetBSD__ from conditional.
6331         Declare strerror if HAVE_STRERROR is defined; otherwise
6332         declare sys_errlist and sys_nerr.
6333         (my_strerror): New function.
6334
6335 Tue Mar 28 14:16:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6336
6337         * search.c (get_binfo): Don't try to be so clever.
6338
6339         * tree.c (copy_to_permanent): Also suspend_momentary().
6340
6341         * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
6342         if the types are the same.
6343
6344         * decl.c (start_function): Handle extern inlines more like C++ says
6345         we should.
6346
6347         * init.c (build_member_call): Hand constructor calls off to
6348         build_functional_cast.
6349
6350         * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
6351         the name of the type.
6352
6353 Tue Mar 28 13:13:56 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6354
6355         * decl.c (grokdeclarator): Check for the decl returned by
6356         grokfndecl to be null before using build_decl_attribute_variant.
6357
6358 Mon Mar 27 18:04:41 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6359
6360         * init.c (build_new): Use build_pointer_type instead of
6361         TYPE_POINTER_TO.
6362
6363 Fri Mar 24 12:11:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6364
6365         * typeck.c (build_conditional_expr): Handle pmfs.
6366         (convert_for_assignment): Fix pmf support.
6367
6368         * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
6369         (cp_convert_to_pointer): Handle pmfs.
6370         (cp_convert): Pass pmfs to cp_convert_to_pointer.
6371
6372         * typeck.c (common_type): Handle inheritance for pmfs.
6373
6374         * typeck2.c (build_m_component_ref): Do access control.
6375
6376         * typeck.c (comp_target_types): Check for conversion to void *
6377         before checking trickier conversions.
6378
6379         * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
6380
6381         * pt.c (push_tinst_level): Complain if template instantiation depth
6382         is greater than max_tinst_depth.
6383
6384         * typeck.c (common_type): Assume that we can call common_type to
6385         unify the target type of a pointer.
6386
6387 Thu Mar 23 00:48:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6388
6389         * decl2.c (finish_file): Don't synthesize methods at
6390         finish_vtable_prevardecl time.  Do synthesize methods that are not
6391         used, but are public and not external.
6392
6393         * cvt.c (build_type_conversion): Only give an error if for_sure.
6394
6395         * typeck.c (comp_target_types): Only support pointer conversions if
6396         nptrs > 0.
6397
6398 Wed Mar 22 19:30:15 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6399
6400         * init.c (build_new): Catch use of an initializer list where it
6401         shouldn't be.
6402
6403 Wed Mar 22 16:21:07 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6404
6405         * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
6406         non-constant.
6407
6408         * decl2.c: temp_name_counter is now public.
6409
6410         * decl.c (struct cp_function): Add temp_name_counter field.
6411         (push_cp_function_context): Save it.
6412         (pop_cp_function_context): Restore it.
6413
6414         * typeck.c (common_type): Handle unifying function types, and unify
6415         unmatched things to void* with a compiler_error, rather than
6416         silently like before.
6417
6418 Wed Mar 22 15:10:34 1995  Mike Stump  <mrs@cygnus.com>
6419
6420         * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
6421         Brendan's last change and fix latent problem that causes TD entries
6422         to not come out when the things that need them has yet to be
6423         expanded.
6424
6425 Wed Mar 22 15:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6426
6427         * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
6428         and type1, since we might have changed op0 or op1.
6429
6430 Wed Mar 22 13:33:45 1995  Jason Merrill  <jason@python.cygnus.com>
6431
6432         * typeck.c (common_type): Don't mess up templates.
6433
6434 Wed Mar 22 04:56:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6435
6436         * typeck.c (common_type): Handle ptms properly.  Also handle 
6437         T* -> void*.
6438         (build_binary_op_nodefault): New variable build_type controls what
6439         type is given to the expression when it is created.  Set this to
6440         boolean_type_node for comparison ops instead of using result_type.
6441         (comp_target_types): Allow T * -> void *.
6442
6443         * cvt.c (cp_convert_to_pointer): Do access control when converting
6444         ptms, too.
6445
6446 Tue Mar 21 17:25:06 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6447
6448         * parse.y (extern_lang_string): Catch use of linkage specs that
6449         aren't all naming the same language.
6450
6451         * class.c (finish_struct): Delete accidental duplicate code.
6452
6453 Tue Mar 21 14:00:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6454
6455         * typeck.c (build_binary_op_nodefault): Disable pedwarns about
6456         comparing functions and incomplete types.
6457
6458         * decl.c (finish_function): Only unset current_function_decl if
6459         !nested.
6460         (duplicate_decls): Last change went too far; we only want to stop
6461         checking for value/reference ambiguity.
6462
6463 Tue Mar 21 01:26:39 1995  Mike Stump  <mrs@cygnus.com>
6464
6465         * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
6466         out fresh, as the new type may be larger.
6467
6468 Mon Mar 20 19:01:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6469
6470         * expr.c (extract_init): Try to expand the RTL for the
6471         initialization and figure out what it will look like so we can avoid
6472         run-time initialization.  Disabled for now.
6473         (extract_scalar_init): Helper for scalar initialization.
6474         (extract_aggr_init): Helper for aggregate initialization.
6475
6476         * decl.c (duplicate_decls): Don't complain about ambiguous
6477         declarations.
6478         (obscure_complex_init): Now returns a tree.  Call extract_init if
6479         we're optimizing and this is a toplevel decl.
6480         (finish_decl): Update accordingly.
6481
6482         * lex.c (check_newline): If we're just changing files (not pushing
6483         or popping), update input_file_stack->name.
6484
6485 Mon Mar 20 17:55:04 1995  Mike Stump  <mrs@cygnus.com>
6486
6487         * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
6488         in the transitive unification code.
6489
6490 Mon Mar 20 16:07:50 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6491
6492         * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
6493         non-functions.
6494         (grokdeclarator): Don't allow friends to be defined in local classes.
6495
6496 Sat Mar 18 04:03:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6497
6498         * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
6499         rather than DECL_SAVED_INSNS to decide whether or not this method
6500         was declared inline.
6501
6502         * method.c (synthesize_method): Turn off DECL_INLINE if
6503         function_cannot_inline_p thinks we're too large.
6504
6505         * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
6506
6507 Fri Mar 17 17:47:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6508
6509         * class.c (instantiate_type): Handle pmfs.
6510
6511         * typeck.c (convert_for_assignment): Check types when assigning one
6512         pmf to another.
6513
6514         * decl.c (define_label): Fix logic for printing out the name of the
6515         label in an error message.
6516
6517         * error.c (dump_expr): Support ARRAY_REF.
6518
6519 Fri Mar 17 17:43:02 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6520
6521         * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
6522         (finish_prevtable_vardecl): Instead of here.
6523
6524 Fri Mar 17 14:40:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6525
6526         * decl.c (expand_static_init): Also use expand_aggr_init if the
6527         initializer is a TREE_LIST.     
6528         (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
6529
6530         * pt.c (unify): Fix unification of return type.
6531
6532         * expr.c (fixup_result_decl): Use store_expr, rather than
6533         emit_move_insn, to move the return value into the place where
6534         callers will expect it.
6535
6536 Thu Mar 16 22:05:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6537
6538         * init.c (build_offset_ref): Call assmble_external on functions.
6539         * typeck.c (build_component_ref): Likewise.
6540
6541 Thu Mar 16 20:28:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6542
6543         * decl.c (struct saved_scope): Add members base_init_list and
6544         member_init_list.
6545         (push_to_top_level): Save current_base_init_list and
6546         current_member_init_list to them.
6547         (pop_from_top_level): Put it back.
6548
6549 Thu Mar 16 19:21:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6550
6551         * pt.c (instantiate_template): Call assemble_external.  
6552
6553 Thu Mar 16 18:07:54 1995  Brendan Kehoe  <brendan@phydeaux.cygnus.com>
6554
6555         * class.c: Include rtl.h, to get NULL_RTX.
6556         (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
6557         on hosts with different sizes for each part of the union.
6558         * tree.c: Also include rtl.h.
6559         (layout_basetypes): Same change for DECL_SAVED_INSNS.
6560
6561 Thu Mar 16 13:57:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6562
6563         * pt.c (unify): Fix array domain unification for 64-bit targets.
6564
6565         * decl2.c (finish_file): Push bizarre type decl before walking the
6566         vtables the first time.
6567         (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
6568         with TREE_CHAIN (prev).
6569
6570         * init.c (emit_base_init): Use convert_pointer_to_real instead of
6571         convert_pointer_to when converting to a direct base.
6572
6573 Wed Mar 15 20:26:29 1995  Mike Stump  <mrs@cygnus.com>
6574
6575         * pt.c (type_unification): Handle transitive unification better.
6576
6577 Wed Mar 15 13:56:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6578
6579         * decl2.c (walk_vtables): Always set prev to vars.
6580         (mark_vtable_entries): Call assemble_external on the vtable entries.
6581
6582         * class.c (finish_struct): Set the vtable's size to NULL_TREE before
6583         calling layout_decl, so that it gets updated properly.
6584
6585         Finally re-enable dynamic synthesis.  This time it works.
6586         * method.c (synthesize_method): Pass decl_function_context (fndecl)
6587         to {push,pop}_cp_function_context.
6588         * decl.c (push_cp_function_context): Now takes a tree argument.
6589         (pop_cp_function_context): Likewise.
6590         * call.c (build_method_call): Enable synthesis.
6591         * lex.c (cons_up_default_function): Likewise.
6592
6593 Tue Mar 14 19:14:19 1995  Doug Evans  <dje@chestnut.cygnus.com>
6594
6595         * parse.y (setattrs): Chain onto prefix_attributes rather than
6596         setting it.
6597
6598 Wed Mar 15 13:00:00 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6599
6600         * decl.c (pushdecl): Check if the type of the VAR_DECL is an
6601         error_mark_node before trying to read TYPE_LANG_SPECIFIC. 
6602
6603 Mon Mar 13 21:00:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6604
6605         * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
6606         and convert the size and integer_one_node to the index type.
6607
6608 Mon Mar 13 08:01:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6609
6610         * typeck.c (get_member_function_from_ptrfunc): Save the instance
6611         argument, and tack it onto the front of the COND_EXPR to make the
6612         semantics come out right.  Grab the instance argument from
6613         '*instance_ptrptr', rather than having it passed in separately.
6614         
6615         * various: Change various consed-up comparison operations to have
6616         boolean type.  Remove the instance argument in calls to
6617         get_member_function_from_ptrfunc.
6618
6619         * error.c (dump_expr): Dump true and false as "true" and "false".
6620
6621         * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
6622         global init function.
6623
6624         * decl.c (finish_function): Only set DECL_EXTERNAL here if the
6625         inline function is public.
6626
6627 Sat Mar 11 00:58:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6628
6629         * init.c (is_friend): Be more careful about checking
6630         DECL_CLASS_CONTEXT on non-member functions.
6631
6632         * decl2.c (finish_vtable_vardecl): Don't bother calling
6633         assemble_external here.
6634         (prune_vtable_vardecl): New function that just splices out the
6635         vtable decl from the top-level decls.
6636         (import_export_inline): Unset DECL_EXTERNAL at first.
6637         (finish_file): Don't bother calling assemble_external here.  Do
6638         splice out all of the vtables.
6639
6640 Fri Mar 10 14:42:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6641
6642         * decl.c (finish_function): If we're not emitting the function yet,
6643         call assemble_external for it.
6644
6645         * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
6646         here.
6647         (finish_vtable_vardecl): Don't do the linkage deduction thing here.
6648         Also don't splice out the current vtable if it is unused.
6649         (finish_file): Move the second walk_vtables and the synthesis check
6650         inside the 'reconsider' loop.  Move thunk emission after the
6651         'reconsider' loop.
6652
6653 Thu Mar  9 16:28:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6654
6655         * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
6656         was passing bogus values for readonly and volatile from the original
6657         template decl, not the resultant type of the tsubst call.
6658
6659         * class.c (duplicate_tag_error): Use cp_error_at to point out the
6660         previous definition of the tag.
6661
6662 Thu Mar  9 10:46:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6663
6664         * decl.c (start_function): Clear base_init_insns and protect_list.
6665         (struct cp_function): Add base_init_insns field.
6666         (push_cp_function_context): Also save base_init_insns.
6667         (pop_cp_function_context): Also restore base_init_insns.
6668
6669 Wed Mar  8 13:31:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6670
6671         * init.c (member_init_ok_or_else): Check for initializing a static
6672         member here.
6673         (emit_base_init): Instead of here.
6674
6675 Tue Mar  7 16:03:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6676
6677         * call.c (build_method_call): Disable synthesis as needed.
6678         * lex.c (cons_up_default_function): Likewise.
6679
6680 Tue Mar  7 10:14:29 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6681
6682         * parse.y: New rules to allow attributes in a prefix position.
6683         (prefix_attributes): New variable.  Pass it into cplus_decl_attributes.
6684         (setattr): New rule.
6685         (reserved_declspecs, declmods): Catch attributes here.
6686         * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
6687         * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
6688         descendent typedef.
6689         (grokdeclarator): Added code to support machine attributes.
6690         * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
6691
6692 Mon Mar  6 15:07:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6693
6694         * call.c (build_method_call): Don't synthesize methods outside of a
6695         function.
6696
6697         Make base initialization more re-entrant so that synthesis on the
6698         fly will work (and, eventually, template instantation on the fly).
6699         * init.c (sort_member_init): Don't bother with members that can't be
6700         initialized.  Reorganize a bit.  Don't initialize base members here.
6701         (sort_base_init): New function, like sort_member_init, but for base
6702         classes.  Steals some code from emit_base_init.
6703         (emit_base_init): Simplify.  Call sort_{member,base}_init before
6704         doing any initialization, so we don't have to save
6705         current_{member,base}_init_list in push_cp_function_context.
6706         (expand_aggr_vbase_init_1): Adjust for sort_base_init.
6707         (expand_aggr_vbase_init): Simplify.
6708         * decl.c (struct cp_function): Add protect_list field.
6709         (push_cp_function_context): Also save protect_list.
6710         (pop_cp_function_context): Also restore protect_list.
6711         * call.c (build_method_call): Enable synthesis at point of call.
6712         * lex.c (cons_up_default_function): Likewise.
6713
6714         * parse.y: Turn -ansi checks back into -pedantic checks.
6715
6716         * init.c (build_new): Fix -fcheck-new for array new.
6717
6718 Sat Mar  4 15:55:42 1995  Fergus Henderson  <fjh@cs.mu.oz.au>
6719
6720         * typeck.c (build_compound_expr): warn if left-hand operand of
6721         comma expression has no side-effects.
6722
6723 Fri Mar  3 15:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6724
6725         * parse.y (primary): Change 'object qualified_id *' rules to 'object
6726         overqualified_id *'.
6727
6728 Fri Mar  3 12:48:17 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6729
6730         * parse.y (unary_expr): Catch doing sizeof an overloaded function.
6731         Make the error look the same as the one we issue in c_sizeof.
6732
6733         * typeck.c (build_binary_op_nodefault): Give an error for trying
6734         to compare a pointer-to-member to `void *'.
6735
6736 Fri Mar  3 11:28:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6737
6738         * typeck.c (build_unary_op): Handle bool increment with smoke and
6739         mirrors here, rather than in expand_increment where it belongs,
6740         because Kenner doesn't agree with me.
6741
6742 Fri Mar  3 00:08:10 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6743
6744         * decl.c (grokparms): Catch a PARM_DECL being used for a default
6745         argument as well.
6746
6747 Thu Mar  2 20:05:54 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6748
6749         * init.c (build_new): Don't allow new on a function type.
6750
6751         * parse.y (primary): Avoid a crash when seeing if the arg is of
6752         the same type as that given for the typespec in an explicit dtor call.
6753
6754 Thu Mar  2 00:49:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6755
6756         * decl.c (finish_function): Change test for calling
6757         mark_inline_for_output.
6758
6759 Wed Mar  1 11:23:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6760
6761         * typeck.c (build_modify_expr): Complain if
6762         build_default_binary_type_conversion fails.
6763
6764         * init.c (expand_default_init): Handle arguments of unknown type
6765         properly.
6766
6767         * cvt.c (build_expr_type_conversion): Only complain about ambiguity
6768         if 'complain'.
6769         * various: Pass 'complain'.
6770
6771         * typeck.c (comptypes): Be more picky about comparing UPTs.
6772
6773 Wed Mar  1 11:03:41 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6774
6775         * decl.c (grokdeclarator): If declarator is null, say that the
6776         type used has an incomplete type.
6777
6778 Wed Mar  1 10:06:20 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6779
6780         * pt.c (instantiate_template): Copy the template arguments to the
6781         permanent_obstack.  Also use simple_cst_equal to compare them when
6782         looking for a previous instantiation.
6783
6784         * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
6785         they are array domain types).
6786
6787 Tue Feb 28 23:24:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6788
6789         * cp-tree.h: Define WANT_* constants for passing to
6790         build_expr_type_conversion.
6791         * cvt.c (build_expr_type_conversion): New function to build
6792         conversion to one of a group of suitable types.
6793         (build_default_binary_type_conversion): Use it.
6794         * decl2.c (grok_array_decl): Likewise.
6795         * typeck.c (build_unary_op): Likewise.
6796         (build_array_ref): Tidy up a bit.
6797         (build_binary_op): Likewise.
6798
6799 Tue Feb 28 19:57:31 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6800
6801         * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
6802
6803 Tue Feb 28 17:23:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6804
6805         * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
6806         reserved_declspecs' rule.
6807
6808         * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
6809         (direct_notype_declarator): Likewise.
6810         (complex_direct_notype_declarator): Add notype_qualified_id rule.
6811
6812         * lex.c (real_yylex): Handle :> digraph properly.
6813
6814 Tue Feb 28 12:26:29 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6815
6816         * decl.c (grokdeclarator): Check if it's a friend, not if it's
6817         non-virtual, that's being initialized.  Move the check up to
6818         before FRIENDP would get cleared.  Catch an unnamed var/field
6819         being declared void.  Say just `field' instead of `structure field'
6820         in the error message.  Only go for the operator name if DECLARATOR
6821         is non-null.
6822
6823 Tue Feb 28 00:08:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6824
6825         * decl.c (start_function): Complain about abstract return type.
6826         (grokdeclarator): Complain about declaring constructors and
6827         destructors to be const or volatile.  Complain about declaring
6828         destructors to be static.
6829
6830         * pt.c (uses_template_parms): Handle pmfs.
6831
6832         * decl.c (grokdeclarator): Don't call variable_size for array bounds
6833         that only depend on template constant parameters.
6834
6835 Mon Feb 27 15:38:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6836
6837         * error.c (dump_decl): Only look to see if it's a vtable if we
6838         actually have a name to check out.
6839
6840 Mon Feb 27 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6841
6842         * cvt.c (convert_to_aggr): Lose misleading shortcut.
6843
6844 Sun Feb 26 17:27:32 1995  Doug Evans  <dje@canuck.cygnus.com>
6845
6846         * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
6847         not just for dwarf.
6848
6849 Sun Feb 26 00:10:18 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6850
6851         * decl.c (grokdeclarator): Don't allow a static member to be
6852         declared `register'.
6853
6854         * init.c (make_friend_class): Move up to a pedwarn for the warning
6855         about a class declaring friends with itself.
6856
6857         * decl.c (grokdeclarator): You can't do `volatile friend class foo'
6858         or `inline friend class foo'.  Only try to make a friend out of
6859         TYPE if we didn't already reset it to integer_type_node.
6860
6861 Sat Feb 25 22:32:03 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6862
6863         * decl.c (grokdeclarator): Don't allow initialization of a
6864         non-virtual function.
6865
6866         * decl.c (start_function): Do a pedwarn if we're changing `main'
6867         to have an int return type.
6868
6869 Sat Feb 25 00:02:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6870
6871         * typeck.c (build_modify_expr): Handle simple assignment from
6872         TARGET_EXPRs by building up an RTL_EXPR to force expansion.  Whew.
6873
6874 Fri Feb 24 18:27:14 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6875
6876         * decl.c (grokdeclarator): Also don't allow virtual outside of a
6877         class decl for a scope method definition performed at global binding.
6878
6879         * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
6880         of a bitfield.
6881
6882         * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
6883
6884         * typeck.c (build_binary_op): Return an error_mark_node if either
6885         one of the args turned into an error_mark_node when we tried to
6886         use default_conversion.
6887
6888         * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
6889
6890         * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
6891         used on `__wchar_t'.
6892
6893 Fri Feb 24 13:59:53 1995  Mike Stump  <mrs@cygnus.com>
6894
6895         * except.c (end_protect_partials): Do it the right way.
6896
6897 Wed Feb 22 15:42:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6898
6899         * typeck.c (build_binary_op_nodefault): Upgrade warning about
6900         comparing distinct pointer types to pedwarn.
6901
6902         * typeck2.c (digest_init): Cope with extra braces.
6903
6904         * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
6905         of INT_CST_LT (..., interger_zero_node).
6906
6907 Wed Feb 22 14:45:52 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6908
6909         * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
6910         function for systems that don't have EH.
6911
6912 Tue Feb 21 19:18:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6913
6914         * call.c (can_convert_arg): Like can_convert, but takes an arg as
6915         well.
6916
6917         * pt.c (type_unification): Allow implicit conversions for parameters
6918         that do not depend on template parameters.
6919
6920 Tue Feb 21 18:43:48 1995  Douglas Rupp  <drupp@cs.washington.edu>
6921
6922         * Make-lang.in, config-lang.in: ($exeext): New macro.
6923         * Make-lang.in: Try a "cp" if "ln" fails.
6924         * cp-tree.h (decl_attributes): Added argument.
6925         * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
6926         * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
6927         Modified spawnvp to have to correct number of arguments for OS/2, NT.
6928
6929 Tue Feb 21 18:36:55 1995  Mike Stump  <mrs@cygnus.com>
6930
6931         * decl.c (finish_function): Add calls to end_protect_partials to end
6932         the exception region that protects constructors so that partially
6933         constructed objects can be partially destructed when the constructor
6934         throws an exception.
6935         * init.c (perform_member_init, sort_member_init, emit_base_init):
6936         Added support for partially constructed objects.
6937         * init.c (build_partial_cleanup_for): New routine to do partial
6938         cleanups of a base class.
6939         * decl2.c (finish_file): Move the emitting of the exception table
6940         down, after we emit all code that might have exception regions in
6941         them.
6942         * except.c (end_protect_partials, might_have_exceptions_p): New
6943         routines.
6944         (emit_exception_table): Always output table if called.
6945         * cp-tree.h (protect_list, end_protect_partials,
6946         might_have_exceptions_p, emit_exception_table): Added.
6947
6948 Tue Feb 21 16:05:59 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
6949
6950         * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
6951         address of a local variable.
6952         * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
6953         were given a non-null PTR_TO_INSTPTR.
6954
6955 Tue Feb 21 01:53:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6956
6957         * decl.c (duplicate_decls): Always lay out the merged decl.
6958
6959         * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
6960         (finish_prevtable_vardecl): Likewise.
6961
6962         * method.c (synthesize_method): Set interface_{unknown,only}
6963         according to the settings for our class, not the file where it comes
6964         from.
6965
6966 Sat Feb 18 12:26:48 1995  Mike Stump  <mrs@cygnus.com>
6967
6968         * except.c: Handle systems that define __i386__ but not __i386.
6969
6970 Fri Feb 17 15:31:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6971
6972         * decl2.c (reparse_decl_as_expr): Support being called without a
6973         type argument.
6974
6975         * parse.y (primary): Add '(' expr_or_declarator ')'.  Adds 4 r/r
6976         conflicts.  Sigh.
6977
6978 Fri Feb 17 12:02:06 1995  Mike Stump  <mrs@cygnus.com>
6979
6980         * parse.y (template_def, fndef, fn.def1, return_init, condition,
6981         initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
6982         component_decl_1, after_type_component_declarator0,
6983         notype_component_declarator0, after_type_component_declarator,
6984         notype_component_declarator, after_type_component_declarator,
6985         full_parm, maybe_raises, exception_specification_opt): Fix up,
6986         include exception_specification_opt maybeasm maybe_attribute and
6987         maybe_init if missing.  Rename maybe_raises to
6988         exception_specification_opt to match draft wording.  Use maybe_init
6989         to simplify rules.
6990
6991 Fri Feb 17 01:54:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6992
6993         * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
6994         built for news of scalar types.
6995
6996 Thu Feb 16 17:48:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
6997
6998         * typeck.c (build_binary_op_nodefault): Update code for warning
6999         about signed/unsigned comparisons from C frontend.  Realize that the
7000         code in the C frontend is, if anything, even more bogus.  Fix it.
7001         (build_binary_op): Undo default_conversion if it wasn't useful.
7002
7003         * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
7004         PRE*CREMENT_EXPR.
7005
7006         * decl2.c (import_export_vtable): Don't try the vtable hack
7007         if the class doesn't have any real non-inline virtual functions.
7008         (finish_vtable_vardecl): Don't bother trying to find a non-inline
7009         virtual function in a non-polymorphic class.
7010         (finish_prevtable_vardecl): Likewise.
7011
7012         * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
7013
7014         * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
7015
7016         * init.c (expand_virtual_init): Always call assemble_external.
7017
7018         * class.c (build_vfn_ref): Always call assemble_external.
7019         (build_vtable): Always call import_export_vtable.
7020         (prepare_fresh_vtable): Likewise.
7021         (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
7022
7023 Thu Feb 16 03:28:49 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7024
7025         * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
7026         whether an enumerated type fits in a bitfield.
7027
7028 Wed Feb 15 15:38:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7029
7030         * class.c (grow_method): Update method_vec after growing the class
7031         obstack.
7032
7033 Wed Feb 15 13:42:59 1995  Mike Stump  <mrs@cygnus.com>
7034
7035         * parse.y (handler_seq): Push a level for the catch parameters.
7036
7037 Wed Feb 15 12:42:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7038
7039         * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
7040         bases, in case they've been clobbered.
7041
7042 Wed Feb 15 12:07:29 1995  Mike Stump  <mrs@cygnus.com>
7043
7044         * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
7045         so that one day it will always be valid.
7046         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Likewise.
7047
7048         * cp-tree.h (copy_binfo): Removed, unused.
7049         * tree.c (copy_binfo): Likewise.
7050
7051 Wed Feb 15 00:05:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7052
7053         * init.c (build_new): Save the allocation before calling
7054         expand_vec_init on it.
7055
7056         * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
7057         match the TYPE_PRECISION of the underlying type for constant folding
7058         to work.
7059
7060 Tue Feb 14 15:31:25 1995  Mike Stump  <mrs@cygnus.com>
7061
7062         * except.c (push_eh_entry, expand_start_all_catch,
7063         expand_leftover_cleanups, expand_end_catch_block): Keep track of
7064         the context in which the exception region occurs.
7065         (build_exception_table): If the region was not output, don't output
7066         the entry in the eh table for it.
7067
7068 Tue Feb 14 02:15:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7069
7070         * init.c (expand_default_init): Only use a previous constructor call
7071         if it's a call to our constructor.  Does the word "Duh" mean
7072         anything to you?
7073
7074         * decl.c (grokparms): Fine, just don't call
7075         convert_for_initialization at all.  OK?  Happy now?
7076
7077 Mon Feb 13 02:23:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7078
7079         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
7080         method vector has a second element before returning it.
7081
7082         * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
7083         convert_for_initialization.
7084
7085 Sun Feb 12 03:57:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7086
7087         * typeck.c (build_modify_expr): Compare function name to
7088         constructor_name (current_class_type) instead of current_class_name.
7089
7090         * decl.c (grokparms): Don't do anything with the return value of
7091         convert_for_initialization.
7092
7093         * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
7094
7095         * decl.c (duplicate_decls): Tweak error message.
7096
7097         * typeck.c (build_const_cast): Implement checking.
7098         (build_reinterpret_cast): Implement some checking.
7099
7100         * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
7101         converting to the same aggregate type.
7102         (CONV_STATIC_CAST): Include it.
7103         (CONV_C_CAST): Likewise.
7104         * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
7105         (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
7106
7107 Fri Feb 10 16:18:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7108
7109         * typeck.c (build_c_cast): Use non_lvalue to tack something on
7110         where necessary.
7111
7112         * decl.c (auto_function): Now a function.
7113         * except.c (init_exception_processing): terminate, unexpected,
7114         set_terminate, and set_unexpected have C++ linkage.
7115
7116         * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
7117         truthvalue_conversion for converting to bool, as it handles
7118         user-defined conversions properly.
7119         (condition_conversion): Likewise.
7120
7121         * except.c (expand_throw): Don't call convert_to_reference.
7122         Pass the correct parameters to build_new.
7123
7124         * method.c (do_build_assign_ref): Don't use access control when
7125         converting to a base reference here.
7126         (do_build_copy_constructor): Or here.
7127
7128         * init.c (build_new): Unset TREE_READONLY on the dereferenced
7129         pointer before assigning to it.
7130
7131         * decl.c (maybe_build_cleanup): Don't bother stripping const here.
7132
7133         * decl2.c (delete_sanity): You can now delete pointer to const.
7134
7135 Fri Feb 10 13:28:38 1995  Jason Merrill  <jason@python.cygnus.com>
7136
7137         * decl.c (finish_function): Don't rely on actual parameters being
7138         evaluated left-to-right.
7139         * except.c (expand_end_catch_block): Likewise.
7140
7141 Fri Feb 10 00:52:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7142
7143         * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
7144         considered lvalues.
7145         * cvt.c (convert_to_reference): Use real_lvalue_p instead of
7146         lvalue_p.
7147
7148         * cvt.c (build_type_conversion_1): Don't call convert on aggregate
7149         types.
7150         (convert_to_reference): Fix erroneous text substitution.
7151
7152         * typeck2.c (initializer_constant_valid_p): Update from C frontend.
7153         Add new argument to all callers.
7154
7155         * typeck.c (convert_arguments): Check for error_mark_node before
7156         trying to do anything with the actual parameter.
7157
7158         * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
7159         fold it.
7160         (bool_truthvalue_conversion): Remove.  Fix all callers to call
7161         truthvalue_conversion instead.
7162         (various): Fold CLEANUP_POINT_EXPRs.
7163
7164         * parse.y (conditions): Call condition_conversion rather than
7165         building up a CLEANUP_POINT_EXPR.
7166
7167         * pt.c (end_template_decl): Don't warn_if_unknown_interface here
7168         under -falt-external-templates.
7169
7170 Thu Feb  9 05:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7171
7172         * init.c (build_new): Complain about new of const type without
7173         initializer.  Other cleanup.
7174
7175         * call.c (compute_conversion_costs): Don't call
7176         build_type_conversion with a reference type; convert to the target
7177         type and check its lvaluetude.
7178         * cvt.c (convert_to_reference): Likewise.
7179
7180         * cvt.c (build_type_conversion_1): There will never be any need to
7181         dereference references here now.
7182
7183 Thu Feb  9 00:37:47 1995  Mike Stump  <mrs@cygnus.com>
7184
7185         * except.c (expand_builtin_throw): Make sure we only `use' the
7186         value of return_val_rtx.
7187
7188 Wed Feb  8 15:45:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7189
7190         * parse.y (structsp): Don't complain about declaring a type being
7191         defined to be a friend.
7192
7193         * decl2.c (warn_if_unknown_interface): Note the template in question
7194         and the point of instantiation, for -falt-external-templates.
7195         * lex.c (reinit_parse_for_method): Pass the decl to
7196         warn_if_unknown_interface.
7197         * pt.c (instantiate_template): Likewise.
7198         (end_template_decl): Likewise.
7199
7200         * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
7201         nested name again, to make local classes work a bit better.
7202
7203         * typeck.c (build_function_call_real): Dereference reference after
7204         checking for incomplete type.
7205
7206         * init.c (build_new): Accept new of const and volatile types.
7207
7208 Wed Feb  8 14:04:16 1995  Jason Merrill  <jason@deneb.cygnus.com>
7209
7210         * decl.c (grokdeclarator): Fix error message.
7211
7212 Wed Feb  8 03:16:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7213
7214         * typeck.c (convert_for_initialization): Do bash arrays when
7215         converting to a reference to non-array.
7216
7217 Tue Feb  7 15:50:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7218
7219         * cvt.c (cp_convert): Don't call convert_to_reference, or
7220         automatically dereference references.  Do pass reference conversions
7221         to cp_convert_to_pointer.
7222         (cp_convert_to_pointer): Support references.
7223
7224         * call.c (build_method_call): Don't build up a reference to the
7225         parameter here; let build_overload_call handle that.
7226
7227         * typeck.c (build_c_cast): Call convert_to_reference directly if
7228         converting to a reference type.
7229         * method.c (do_build_copy_constructor): Likewise.
7230         * method.c (do_build_copy_constructor): Likewise.
7231         (do_build_assign_ref): Likewise.
7232
7233         * call.c (build_method_call): Dereference a returned reference.
7234         * typeck.c (build_function_call_real): Likewise.
7235
7236         * decl.c (xref_basetypes): Check for unions with basetypes here.
7237         (xref_tag): Instead of here.
7238
7239         * pt.c (process_template_parm): Template type parm decls are
7240         artificial.
7241
7242 Mon Feb  6 04:32:09 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7243
7244         * parse.y (typed_declspecs): Add missing semicolon.
7245         (do_xref_defn): Resurrect.
7246         (named_class_head_sans_basetype): Move template specialization
7247         definition cases to named_class_head_sans_basetype_defn.
7248
7249         * decl2.c (grokfield): Call pushdecl_class_level after setting the
7250         TYPE_NAME, not before.
7251
7252 Sun Feb  5 02:50:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7253
7254         * call.c (convert_harshness): Don't call sorry here.  Don't allow
7255         conversions between function pointer types if pedantic.
7256
7257         * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
7258
7259         * lex.c (cons_up_default_function): Use the full name for the return
7260         type of op=.
7261
7262         * decl.c (set_nested_typename): Don't worry about anonymous types,
7263         as they already have a unique name.
7264         (pushdecl): Remove redundant set_nested_typename
7265         (xref_tag): Split out base handling into xref_basetypes.
7266
7267         * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
7268         not considered incomplete even though their definition is unknown.
7269
7270         * decl.c (xref_defn_tag): Lose.
7271         (xref_tag): xref_next_defn = ! globalize.
7272         (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls.  The
7273         ones that should have it set will have it set by pushtag.
7274         (pushdecl_class_level): Likewise.
7275         (pushtag): Tidy up a bit.
7276         (set_nested_typename): Push a decl for the nested typename from
7277         here, rather than from xref_defn_tag.
7278
7279         * parse.y (do_xref): Lose.
7280         (named_class_head): If we see 'class foo:' we know it's a
7281         definition, so don't worry about base lists for non-definitions.
7282
7283         * pt.c (push_template_decls): Template parm decls are artificial.
7284
7285         * decl.c (duplicate_decls): Restore check for qualifier
7286         disagreement for non-functions.
7287         (decls_match): Remove check for qualifier disagreement.
7288
7289 Fri Feb  3 14:58:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7290
7291         * decl.c (grok_reference_init): Convert initializer from
7292         reference.
7293         * typeck.c (convert_for_initialization): Likewise.
7294
7295         * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
7296
7297         * cvt.c (cp_convert): Don't convert to the same class type by just
7298         tacking on a NOP_EXPR.
7299         (convert_to_reference): Use comp_target_types instead of comptypes
7300         so that we don't allow conversions two levels down.
7301
7302 Thu Feb  2 15:07:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7303
7304         * class.c (build_vbase_path): Bash types to make the backend happy.
7305         * cvt.c (build_up_reference): Bash the types bashed by
7306         build_vbase_path to be reference types instead of pointer types.
7307         (convert_to_reference): Likewise.
7308
7309         * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
7310         reference type.
7311
7312         * parse.y (structsp): Put back error for 'struct B: public A;'.
7313
7314 Wed Feb  1 23:02:06 1995  Mike Stump  <mrs@cygnus.com>
7315
7316         * except.c: Add support for mips systems that don't define __mips
7317         but do define mips, like Ultrix.
7318
7319 Wed Feb  1 22:39:07 1995  Mike Stump  <mrs@cygnus.com>
7320
7321         * except.c: Add support for exception handling on the Alpha.
7322
7323 Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
7324
7325         * decl2.c (finish_file): Fix bug in Jan 31st change.
7326
7327 Tue Jan 31 16:59:15 1995  Gerald Baumgartner  <gb@lorenzo.cs.purdue.edu>
7328
7329         * sig.c (build_signature_pointer_or_reference_type): Don't set
7330         IS_AGGR_TYPE for signature pointers/reference so expand_default_init
7331         doesn't expect to find a copy constructor.
7332         * call.c (build_method_call): Treat signature pointers/reference
7333         as if IS_AGGR_TYPE were set.
7334
7335 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
7336
7337         * gc.c (get_typeid): Pawn off error messages to build_t_desc.
7338         (build_t_desc): Inform the user here if they try and build
7339         with -frtti and don't include <typeinfo.h>.
7340
7341         * decl2.c (finish_prevtable_vardecl): Support rescanning.
7342         (finish_file): Move finish_prevtable_vardecl up to before the global
7343         initializers are done as tdecls are initialized in the global
7344         initializer.  Also Pick up any new tdecls or vtables needed by
7345         synthesized methods.
7346
7347         * class.c (finish_struct): Simplify.  We have to do rtti scanning at
7348         end, so we might as well do all of it there.
7349
7350 Tue Jan 31 05:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7351
7352         * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
7353         targets, too.
7354
7355 Tue Jan 31 00:11:04 1995  Mike Stump  <mrs@cygnus.com>
7356
7357         * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
7358         finish_vtable_vardecl.  It has the first half functionality from
7359         that routine.
7360         * decl2.c (finish_vtable_vardecl): Update to not include stuff not
7361         in  finish_prevtable_vardecl.
7362         * decl2.c (finish_file): Call finish_prevtable_vardecl.
7363         * gc.c (build_generic_desc): Allow it to be called when not at the
7364         global binding layer, but behave as if we were.
7365         (build_t_desc): Rearrange a bit so that it really works and is
7366         easier to follow.
7367         * class.c (finish_struct): Don't decide on tdecls here, as we have
7368         to wait until the end of the file in general to decide whether or
7369         not they come out.
7370
7371 Mon Jan 30 01:00:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7372
7373         * init.c (build_delete): Check access to operator delete before
7374         calling the destructor.
7375         * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
7376         return error_mark_node.
7377         * call.c (build_method_call): Use the one-argument op delete even if
7378         it's an error.
7379
7380         * init.c (build_new): Fix -fthis-is-variable support.
7381         * call.c (build_method_call): Likewise.
7382
7383         * call.c (convert_harshness): Make conversion from a pointer to bool
7384         worse than conversion to another pointer.
7385
7386 Sat Jan 28 16:46:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7387
7388         * init.c (build_new): Check new return value if -fcheck-new.
7389
7390         * lex.c (check_newline): Clear end_of_file when we're done, too.
7391
7392 Sat Jan 28 10:38:39 1995  Mike Stump  <mrs@cygnus.com>
7393
7394         * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
7395         vtables whereever they go.
7396
7397         * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
7398         right.
7399
7400 Sat Jan 28 09:10:44 1995  Mike Stump  <mrs@cygnus.com>
7401
7402         * decl2.c (finish_vtable_vardecl): Now set the
7403         interface/implementation of vtables on the first virtual function,
7404         if one exists, otherwise we use the old method.  This is a major win
7405         in terms of cutting down the size of objects and executables in
7406         terms of text space and data space.  Now most of the savings that
7407         #pragma interface/implementation gives is automatic in a fair number
7408         of cases.
7409
7410 Sat Jan 28 04:57:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7411
7412         * decl.c (grokdeclarator): Discard the template parameters in a
7413         template constructor declaration so that the function is always
7414         named constructor_name (ctype).
7415
7416         * lex.c (check_newline): Use ungetc to put back the character before
7417         calling HANDLE_PRAGMA.
7418
7419 Fri Jan 27 17:23:47 1995  Mike Stump  <mrs@cygnus.com>
7420
7421         * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
7422         make sure we still match them.
7423
7424 Fri Jan 27 16:32:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7425
7426         * parse.y: Add END_OF_LINE token.
7427
7428         * lex.c (check_newline): Set linemode when we see a # directive, and
7429         unset it when we're done.  Turn all 'return's into 'goto skipline'.
7430         Fix all uses of '\n', since we won't see it anymore.  Put back the
7431         character we read before checking for a sysv or target pragma.
7432         (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
7433         (handle_sysv_pragma): Don't look at the input stream; quit when we
7434         see an END_OF_LINE token.
7435
7436         * input.c (getch): Return EOF if we're in line mode and at the end
7437         of a line.
7438         (put_back): Don't put back an EOF.
7439
7440 Thu Jan 26 19:26:34 1995  Mike Stump  <mrs@cygnus.com>
7441
7442         * except.c (expand_throw): Do the newing of the exception object
7443         before we load the type descriptor or the address so that we don't
7444         wipe any of the values out.
7445
7446 Thu Jan 26 19:20:00 1995  Mike Stump  <mrs@cygnus.com>
7447
7448         * except.c (init_exception_processing): Don't use r12 on the rs6000.
7449
7450 Tue Jan 24 16:36:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7451
7452         * decl.c (grokparms): Don't try to build up a reference at this point.
7453
7454         * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
7455         will suffice to convert from integer_zero_node.
7456
7457 Wed Jan 25 15:02:09 1995  David S. Miller  <davem@nadzieja.rutgers.edu>
7458
7459         * class.c (instantiate_type): Change error message text.
7460         * typeck2.c (store_init_value): Likewise.
7461
7462 Mon Jan 23 21:57:14 1995  Mike Stump  <mrs@cygnus.com>
7463
7464         * pt.c (tsubst): When we copy a node, don't forget to copy
7465         TREE_CHAIN, we use it later.
7466
7467 Mon Jan 23 03:33:47 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7468
7469         * typeck.c (convert_for_assignment): Initialize variable before use.
7470
7471 Fri Jan 20 01:17:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7472
7473         * g++.c (main): Link with both libstdc++ and libg++ if called as
7474         something ending with "g++", otherwise only libstdc++.  Move -lm to
7475         the end of the line.
7476
7477 Thu Jan 19 15:43:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7478
7479         * call.c (build_method_call): Don't mess with 'this' before calling
7480         compute_conversion_costs.
7481
7482 Wed Jan 18 15:40:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7483
7484         * search.c (get_matching_virtual): Give line number for previous
7485         declaration.
7486
7487         * call.c (convert_harshness): Handle conversions to references
7488         better.
7489
7490         * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
7491
7492 Wed Jan 18 15:21:38 1995  Mike Stump  <mrs@cygnus.com>
7493
7494         * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
7495         as the TREE_CHAIN for methods will take us to the next differently
7496         named function, DECL_CHAIN won't.
7497
7498 Wed Jan 18 14:26:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7499
7500         * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
7501
7502         * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
7503         warn_parentheses defaults to 0.
7504
7505         * decl.c (grokparms): Put back call to require_instantiated_type.
7506
7507 Tue Jan 17 19:56:15 1995  Mike Stump  <mrs@cygnus.com>
7508
7509         * except.c (exception_section): Use the data section on the rs6000.
7510         Change calling convention for named_section.
7511
7512 Wed Jan 17 18:20:57 1994  Fergus Henderson <fjh@munta.cs.mu.oz.au>
7513
7514         * cp-tree.h : Make if (x=0) warn with wall
7515         * parse.y : Make if (x=0) warn with wall
7516
7517 Tue Jan 17 14:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7518
7519         * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
7520         BITS_PER_UNIT otherwise.
7521
7522         * search.c (get_matching_virtual): Don't check the binfo if the
7523         types are the same.
7524
7525         * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
7526         bool.
7527
7528 Mon Jan 16 13:28:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7529
7530         * various: Use boolean_type_node, boolean_true_node,
7531         boolean_false_node.
7532
7533         * search.c (get_matching_virtual): Allow covariant returns that
7534         don't require pointer adjustment.
7535
7536         * typeck.c (build_conditional_expr): Don't call default_conversion
7537         on ifexp.
7538
7539         * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
7540
7541         * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
7542
7543 Sun Jan 15 22:17:32 1995  David Binderman  <dcb@lovat.fmrco.COM>
7544
7545         * pt.c (do_function_instantiation): Free targs once we're done.
7546
7547 Sun Jan 15 22:17:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7548
7549         * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
7550         (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
7551         for bool.
7552
7553 Sat Jan 14 05:33:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7554
7555         * decl2.c (finish_file): We need to mess up if there are any
7556         variables in the list, not just if there is one with a constructor.
7557
7558 Fri Jan 13 14:42:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7559
7560         * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
7561         (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
7562         (finish_function): Trust rest_of_compilation.
7563
7564         * decl2.c (finish_file): Also call functions designated as static
7565         constructors/destructors.
7566
7567         * decl.c (grokdeclarator): Allow access decls of operator functions.
7568         (grokparms): Only do convert_for_initialization if the initializer
7569         has a type.
7570         (duplicate_decls): Put back push_obstacks_nochange call.
7571
7572         * lex.c (real_yylex): Downgrade complaint about the escape sequence
7573         being too large from pedwarn to warning.
7574
7575         * decl.c (grokdeclarator): Don't complain about long long in system
7576         headers.
7577
7578         * lex.c (real_yylex): Handle digraphs.
7579
7580 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7581
7582         * decl.c (init_decl_processing): -f{no-,}strict-prototype only
7583         affects C linkage declarations now.
7584
7585         * typeck.c (comp_target_types): Grok simple contravariant conversions.
7586         (common_type): t1 and t2 are interchangeable.
7587
7588         * various: Test return value of comp_target_types differently in
7589         different places; it now returns -1 for a contravariant conversion
7590         (which is fine in symmetric cases).
7591
7592         (common_type): Prefer long double to double even when
7593         they have the same precision.
7594
7595         * decl.c (grokparms): Call convert_for_initialization to check
7596         default arguments.
7597
7598         * init.c (build_new): void_type_node has a size (of 0).
7599
7600         * decl.c (decls_match): Also check for agreement of TREE_READONLY
7601         and TREE_THIS_VOLATILE.
7602         (push_class_level_binding): Properly handle shadowing of
7603         nested tags by fields.
7604
7605         * search.c (dfs_pushdecls): Likewise.
7606
7607         * decl2.c (finish_file): Don't second-guess self-initialization.
7608
7609         * cvt.c (convert_to_reference): Work with expr directly, rather than
7610         a copy.
7611
7612         * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
7613
7614         * init.c (add_friend): Downgrade duplicate friend message from
7615         pedwarn to warning.
7616
7617         * decl.c (duplicate_decls): Push obstacks before calling common_type.
7618
7619 Thu Jan 12 17:15:21 1995  Michael Ben-Gershon  <mybg@cs.huji.ac.il>
7620
7621         * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
7622         exception table labels.
7623         (expand_start_all_catch): Likewise.
7624         (expand_leftover_cleanups): Likewise.
7625         (expand_end_catch_block): Likewise.
7626         * except.c (make_first_label): new function.
7627         (expand_start_all_catch): add a call to make_first_label() before
7628         using a label as a jump destination.
7629         (expand_end_all_catch): Likewise.
7630         (expand_leftover_cleanups): Likewise.
7631         (expand_end_catch_block): Likewise.
7632         (expand_builtin_throw): Likewise.
7633         (expand_throw): Likewise.
7634         * except.c: Add ARM processor support for exception handling.
7635
7636 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7637
7638         (complete_array_type): Copy code from C frontend.
7639
7640         * lex.c (real_yylex): Don't multiply the length of a wide string
7641         literal by WCHAR_BYTES.
7642
7643         * decl.c (pushdecl): Check for redeclaration of wchar_t here.
7644         (duplicate_decls): Instead of here.
7645         (define_label): Complain about a label named wchar_t.
7646         (grokdeclarator): Complain about declarations of
7647         operator-function-ids as non-functions.
7648
7649         * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
7650         COMPOUND_EXPRs.
7651         (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
7652
7653         * lex.c (real_yylex): Don't skip whitespace when reading the next
7654         character after ->.
7655
7656 Wed Jan 11 16:32:49 1995  Mike Stump  <mrs@cygnus.com>
7657
7658         * except.c: Allow cc1plus to be built with native compiler on rs6000.
7659         (expand_start_all_catch): Add assemble_external calls for various
7660         routines we call.
7661         (expand_leftover_cleanups): Likewise.
7662         (expand_start_catch_block): Likewise.
7663         (do_unwind): Likewise.
7664         (expand_builtin_throw): Likewise.
7665
7666 Wed Jan 11 01:05:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7667
7668         * decl.c (pushtag): Only look for a previous decl in the current
7669         binding level.  Use explicit global scope in DECL_NESTED_TYPENAME.
7670
7671         * gxx.gperf: Add __signature__ and __sigof__ keywords.
7672
7673         * decl2.c (lang_decode_option): -ansi does not set flag_no_asm.  It
7674         does set flag_no_gnu_keywords and flag_operator_names.
7675
7676         * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
7677         Unset extension keywords if -fno-gnu-keywords.
7678         Allow operator names ('bitand') if -foperator-names.
7679         Never unset 'asm'; -fno-asm only affects 'typeof'.
7680
7681         * decl.c (lookup_name_real): The got_object special lookup only
7682         applies to types.
7683
7684 Tue Jan 10 18:07:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7685
7686         * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
7687
7688         * parse.y (primary): Unset got_object after all rules that use the
7689         'object' nonterminal.
7690         (object): Set got_object.
7691
7692         * lex.h: Declare got_object.
7693
7694         * decl.c (lookup_name_real): Also lookup names in the context of an
7695         object specified.
7696
7697 Tue Jan 10 14:30:30 1995  Mike Stump  <mrs@cygnus.com>
7698
7699         * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
7700         for things that have to be added to pointers, not size_type.  Cures
7701         problems with pointer to members on Alphas.
7702         (build_binary_op_nodefault): Likewise.
7703         (get_delta_difference_: Likewise.
7704         (build_ptrmemfunc): Likewise.
7705
7706 Tue Jan 10 01:49:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7707
7708         * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
7709         it.
7710
7711         * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
7712         when dealing with overloaded member functions; just act like
7713         build_offset_ref.
7714         (commonparms): Remove misleading comment.
7715
7716         * decl.c (duplicate_decls): Complain about repeated default
7717         arguments here.
7718         (redeclaration_error_message): Instead of here.
7719         (pushdecl): Complain about missing default arguments here.
7720         (grokparms): Instead of here.
7721         (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
7722         (grok_reference_init): Do not complain about missing initializer if
7723         declared 'extern'.
7724
7725         * search.c (lookup_field): Don't return a TYPE_DECL if there is a
7726         function alternative and want_type is not set.
7727
7728 Mon Jan  9 18:16:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7729
7730         * decl.c (pushtag): Don't set TYPE_NAME to an identifier.  Do push
7731         the decl when the type has no TYPE_NAME.
7732         (lookup_nested_type): Don't assume that type has TYPE_NAME set.
7733         (lookup_name_real): Call lookup_field with want_type =
7734         prefer_type.
7735
7736         * search.c (lookup_field): Handle want_type properly in the presence
7737         of fields with the same name.
7738
7739         * decl.c (set_nested_typename): Set nested name for file-scope types
7740         to include leading ::.
7741         (pushdecl): Set the nested typename if the decl doesn't have one,
7742         rather than if the type's canonical decl doesn't have one.
7743
7744 Mon Jan  9 03:44:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7745
7746         * typeck.c (convert_for_assignment): Complain about contravariance
7747         violation here.
7748         (comp_target_types): Instead of here.
7749         (build_unary_op): resolve_offset_ref before checking for a valid
7750         type.
7751
7752         * spew.c (yylex): Decrement looking_for_typename after we see a
7753         _DEFN.
7754
7755         * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
7756         IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
7757
7758         * typeck.c (convert_for_assignment): Converting pointers to bool
7759         does not need a cast.
7760
7761 Sun Jan  8 18:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7762
7763         * class.c (instantiate_type): Initialize nsubsts parm.
7764
7765         * pt.c (do_function_instantiation): Likewise.
7766
7767 Sat Jan  7 14:37:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7768
7769         * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
7770         DECL_SAVED_INSNS to determine whether or not we've seen a definition
7771         of this function.
7772         (instantiate_template): Likewise.
7773
7774         * call.c (convert_harshness): Allow const reference binding when
7775         called from the overloading code, but not when called from
7776         can_convert (since it isn't a conversion).
7777         (convert_harshness): Put back some disabled code.
7778
7779 Fri Jan  6 14:10:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7780
7781         * call.c (convert_harshness): There is no implicit conversion from
7782         void* to other pointer types (unless the parameter is (void*)0).
7783         (convert_harshness): Non-lvalues do not convert to reference types.
7784
7785         * class.c (finish_struct_methods): Still set
7786         TYPE_HAS_{INT,REAL}_CONVERSION.
7787
7788         * call.c (can_convert): Don't use aggregate initialization.
7789
7790         * cp-tree.h: Declare lookup_conversions.
7791
7792 Thu Jan  5 21:08:00 1995  Mike Stump  <mrs@cygnus.com>
7793
7794         * parse.y (simple_stmt): Fix duplicate case value error messages to
7795         be more readable.
7796
7797 Wed Jan  4 16:44:19 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7798
7799         * cvt.c (build_type_conversion): Total rewrite to use
7800         convert_harshness instead of reproducing conversion logic here.  Now
7801         much shorter.
7802
7803         * call.c (convert_harshness): Support conversions to bool.
7804         (can_convert): Checks whether a conversion is less harsh
7805         than USER_CODE, for build_type_conversion.
7806
7807         * search.c (add_conversions): Function for passing to dfs_walk which
7808         adds all the type conversion operators in the current type to a list.
7809         (lookup_conversions): Calls dfs_walk with add_conversions and return
7810         the list.
7811         (dfs_walk): Don't require a qfn.
7812
7813         * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
7814         (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
7815
7816         * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
7817         (grow_method): A separate function for building onto the growing
7818         method vector.
7819         (finish_struct_methods): Use it.  Put all type conversion operators
7820         right after the constructors.  Perhaps we should sort the methods
7821         alphabetically?
7822
7823 Mon Jan  2 14:42:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
7824
7825         * call.c (build_method_call): Lose another misleading shortcut.
7826
7827 Fri Dec 30 17:57:30 1994  Mike Stump  <mrs@cygnus.com>
7828
7829         * gc.c (build_bltn_desc): Handle bool as a built-in type.
7830
7831 Fri Dec 30 14:20:21 1994  Mike Stump  <mrs@cygnus.com>
7832
7833         * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
7834         on the complete type because of small virtual bases.
7835
7836 Fri Dec 30 12:22:29 1994  Mike Stump  <mrs@cygnus.com>
7837
7838         * decl.c (n_incomplete): Bump n_incomplete up to int to match C
7839         front end.
7840         (pushdecl): Also count decls pushed that are of a type being defined
7841         as incomplete things.
7842         * class.c (finish_struct): Move hack_incomplete_structures up to
7843         just after we set it as not being defined, so that the decls we
7844         build for RTTI don't count as incomplete.
7845
7846 Thu Dec 29 18:20:57 1994  Mike Stump  <mrs@cygnus.com>
7847
7848         * pt.c (tsubst): Fix problem with defining constructors in templated
7849         classes with virtual bases.
7850
7851 Wed Dec 28 08:31:00 1994  Mike Stump  <mrs@cygnus.com>
7852
7853         * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
7854         expressions.
7855         * gc.c (build_typeid): Likewise.
7856
7857 Thu Dec 22 17:26:33 1994  Mike Stump  <mrs@cygnus.com>
7858
7859         * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
7860         don't assert on complex AGGR inits.
7861
7862 Thu Dec 22 14:32:31 1994  Mike Stump  <mrs@cygnus.com>
7863
7864         * method.c (build_overload_value): Handle pointer to members as
7865         template arguments.
7866
7867 Thu Dec 22 13:09:07 1994  Mike Stump  <mrs@cygnus.com>
7868
7869         * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
7870         to do take the address of a data member for a pointer to data
7871         member.
7872
7873 Thu Dec 22 10:04:19 1994  Mike Stump  <mrs@cygnus.com>
7874
7875         * decl.c (grokdeclarator): Use the typedef name for linkage if the
7876         type doesn't otherwise have a name.
7877
7878         * decl2.c (grokfield): Likewise.
7879
7880         * class.c (finish_struct): Since we reuse the TYPE_DECL for the
7881         DECL_NAME of enums, structs and classes, we have to avoid trying to
7882         put it in the TYPE_FIELDS again.
7883
7884 Wed Dec 21 11:07:05 1994  Mike Stump  <mrs@cygnus.com>
7885
7886         * decl2.c (check_classfn): Ignore this parameter on static functions
7887         when checking to see if we match.
7888
7889 Tue Dec 20 17:47:02 1994  Mike Stump  <mrs@cygnus.com>
7890
7891         * typeck.c (unary_complex_lvalue): Handle address of non-left most
7892         pointers to members by calling get_delta_difference.
7893
7894 Mon Dec 19 22:40:53 1994  Mike Stump  <mrs@cygnus.com>
7895
7896         * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
7897         static functions to early.
7898
7899 Thu Dec 19 22:37:48 1994  Mike Stump  <mrs@cygnus.com>
7900
7901         * method.c (make_thunk): Handle encoding of positive thunk offsets.
7902
7903 Sat Dec 17 13:29:50 1994  Doug Evans  <dje@canuck.cygnus.com>
7904
7905         * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
7906
7907 Thu Dec 15 16:32:12 1994  Mike Stump  <mrs@cygnus.com>
7908
7909         * decl2.c (check_classfn): Use decls_match to check if this has
7910         already been declared, as the DECL_ASSEMBLER_NAME may have been
7911         changed via asm("new_name").
7912         * decl.c (decls_match): Make public.
7913
7914 Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
7915
7916         * *.[chy] (expand_aggr_init) Add fourth argument to handle
7917         distinction between = init and (init) style of initializations.
7918         * *.[chy] (finish_decl): Add fifth argument to to handle
7919         distinction between = init and (init) style of initializations.
7920
7921 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
7922
7923         Fix some random `explicit' bugs.
7924
7925         * cvt.c (convert_to_reference): Add third parameter to
7926         convert_force.
7927         (convert_force): Likewise.
7928         * call.c (build_method_call): Likewise.
7929         * decl2.c (setup_vtbl_ptr): Likewise.
7930         * init.c (expand_virtual_init): Likewise.
7931         (build_member_call): Likewise.
7932         (build_delete): Likewise.
7933         (build_vbase_delete): Likewise.
7934         * typeck.c (build_component_addr): Likewise.
7935         (build_c_cast): Likewise.
7936         (build_modify_expr): Likewise.
7937         * cp-tree.h (CONV_NONCONVERTING): Likewise. Add so that we can
7938         distinguish the context in which the conversion appears.  Add thrid
7939         argument to build_c_cast.
7940         * cvt.c (cp_convert): Pass whether or not we want to consider
7941         non-converting constructors down to build_method_call.
7942         * decl2.c (reparse_absdcl_as_casts): Add third argument to
7943         build_c_cast.
7944         * gc.c (build_m_desc): Likewise.
7945         * init.c (build_new): Likewise.
7946         * parse.y (expr_no_commas): Likewise.
7947         (primary): Likewise.
7948         * typeck.c (build_x_function_call): Likewise.
7949         (build_static_cast): Likewise.
7950         (build_reinterpret_cast): Likewise.
7951         (build_const_cast): Likewise.
7952         (build_c_cast): Likewise.
7953         (build_ptrmemfunc): Likewise.
7954         * typeck2.c (build_functional_cast): Likewise.
7955         * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
7956         expand_aggr_init_1 as inits are converted to the destination type.
7957
7958 Tue Dec 13 16:18:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
7959
7960         * Make-lang.in (cc1plus): Depends on c-pragma.o.
7961
7962         * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
7963
7964         * lex.c (check_newline): If the #pragma is not recognized by g++,
7965         try machine-specific ones too.
7966         (handle_sysv_pragma): Copied from c-lex.c.
7967
7968 Mon Dec 12 23:53:06 1994  Mike Stump  <mrs@cygnus.com>
7969
7970         * except.c (expand_throw): Fix Dec 6th change, build_new likes a
7971         reference better.
7972
7973 Mon Dec 12 18:01:00 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
7974
7975         * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
7976         IS_AGGR_TYPE, since now they will not both be set on the same type.
7977
7978         * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
7979         instantiations controlled by -fexternal-templates.
7980
7981         * decl.c (duplicate_decls): Don't complain about different values of
7982         __attribute__ ((const)) and ((noreturn)).
7983
7984 Fri Dec  9 18:17:37 1994  Doug Evans  <dje@cygnus.com>
7985
7986         * Makefile.in (BISONFLAGS): Delete --yacc.
7987         (PARSE_H): Depend on $(PARSE_C), for parallel makes.
7988         (PARSE_C): Undo last patch.
7989
7990 Fri Dec  2 10:44:36 1994  Mike Stump  <mrs@cygnus.com>
7991
7992         * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
7993         y.tab.c.
7994
7995 Thu Dec  8 17:39:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
7996
7997         * decl.c (finish_decl): Don't call obscure_complex_init for decls
7998         of indeterminate size.
7999
8000 Wed Dec  7 16:49:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8001
8002         * decl.c (obscure_complex_init): Function to tweak the decl to
8003         prevent expand_decl from tring to initialize it.
8004         (finish_decl): Use it rather than writing the same code in three
8005         different places.
8006
8007         * parse.y (bad_parm): Stop trying to support parms without types.
8008
8009 Wed Dec  7 12:06:56 1994  Mike Stump  <mrs@cygnus.com>
8010
8011         * decl2.c (grokfield): Make asm specs on static member functions
8012         work.
8013
8014 Tue Dec  6 15:43:20 1994  Mike Stump  <mrs@cygnus.com>
8015
8016         * except.c (expand_throw): Make a copy of the thrown object.
8017
8018 Tue Dec  6 14:16:34 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8019
8020         * parse.y: : has lower precedence than =.
8021
8022 Tue Dec  6 12:46:17 1994  Mike Stump  <mrs@cygnus.com>
8023
8024         * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
8025         manglings.
8026         (grokvardecl): Add namespace into variable name.
8027
8028 Tue Dec  6 11:26:55 1994  Mike Stump  <mrs@cygnus.com>
8029
8030         * decl2.c (current_namespace_id): New routine to transform a simple
8031         name into a name in a namespace.
8032         * decl.c (grokdeclarator): Use it.
8033         * decl2.c (get_namespace_id): Find the name of the current
8034         namespace.
8035         (push_namespace, pop_namespace): Complete out missing
8036         functionality.
8037
8038 Mon Dec  5 17:11:51 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8039
8040         * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
8041         not be defined.  Fix warning message for enums and restore warning
8042         for non-enums.
8043
8044         * decl2.c (push_namespace): Dummy function.
8045         (pop_namespace): Likewise.
8046         (do_namespace_alias): Likewise.
8047         (do_using_decl): Likewise.
8048         (do_using_directive): Likewise.
8049
8050         * parse.y: New token NSNAME for namespace names.
8051         (extdef): Add namespace, using definitions.
8052         (using_decl): New rule for using declarations.
8053         (any_id): New rule for identifiers with any degree of scoping.
8054         (identifier): Add NSNAME.
8055         (notype_identifier): Likewise.
8056         (component_decl): Add using_decl.
8057         (nested_name_specifier): Add NSNAME SCOPE.
8058
8059         * typeck.c (convert_for_assignment): Handle conversions between
8060         enums and bool.
8061
8062         * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
8063         FUNCTION_DECLs.
8064
8065 Mon Dec  5 13:03:16 1994  Mike Stump  <mrs@cygnus.com>
8066
8067         * class.c (finish_struct): Give an error if one tries to declare a
8068         bit-field's size greater than a long long, as the backend will dump.
8069         It is not an error to declare an enum bit-field greater than its
8070         precision.  Warn if an enum bit-field is too small to hold all
8071         its values.
8072
8073 Mon Dec  5 11:41:50 1994  Mike Stump  <mrs@cygnus.com>
8074
8075         * typeck.c (convert_for_assignment): Use cp_convert instead of
8076         convert so that we don't get static casts.
8077
8078 Sun Dec  4 11:59:01 1994  Mike Stump  <mrs@cygnus.com>
8079
8080         * cvt.c (cp_convert): Don't complain about int->enum conversion if
8081         we are doing static casts.
8082
8083 Fri Dec  2 18:32:41 1994  Mike Stump  <mrs@cygnus.com>
8084
8085         * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
8086         when dumping expressions in error messages.
8087
8088 Fri Dec  2 17:04:27 1994  Mike Stump  <mrs@cygnus.com>
8089
8090         * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
8091         the return type is the right type, and make references work.
8092
8093 Fri Dec  2 16:36:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8094
8095         * decl.c (poplevel): Don't be confused by function-scope
8096         declarations of non-nested functions.
8097         (duplicate_decls): Propagate DECL_MAIN_VARIANT.
8098         (pushdecl): Use duplicate_decls to copy info from old decl into new
8099         function-scope one rather than doing it here.
8100
8101         * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
8102         of this decl, in case this is a function-scope declaration.
8103
8104         * decl.c (finish_enum): Make sure that the type has the right
8105         precision when we call fixup_*_type.
8106
8107 Tue Nov 29 19:12:07 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8108
8109         * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
8110         want to build up references to rvalues if possible.
8111         (cp_convert): Stick on a NOP_EXPR when converting to the same type.
8112
8113 Tue Nov 29 11:28:59 1994  Mike Stump  <mrs@cygnus.com>
8114
8115         * parse.y (maybe_raises): Handle throw ().
8116         * parse.y (ansi_raise_identifier): grok type-ids in exception
8117         specifications.
8118         * tree.c (build_exception_variant): Use list compare to check if
8119         two exception specifications match.
8120         * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
8121         messages.
8122         * call.c (build_method_call): Remove TREE_RAISES.
8123         * cvt.c (convert_to_aggr): Likewise.
8124         * typeck.c (build_function_call_real, convert_arguments): Likewise.
8125         * init.c (expand_aggr_init_1): Likewise.
8126
8127 Tue Nov 29 09:50:39 1994  Mike Stump  <mrs@cygnus.com>
8128
8129         * except.c: Add support for m68k and mips exception handling
8130         support.
8131
8132 Tue Nov 29 08:48:33 1994  Mike Stump  <mrs@cygnus.com>
8133
8134         * except.c (expand_end_all_catch): Throw into outer context, if we
8135         fall off end of catch handlers.
8136
8137 Mon Nov 28 16:44:41 1994  Mike Stump  <mrs@cygnus.com>
8138
8139         * Makefile.in: Make is easier to decide where parse.[ch] will be
8140         built.
8141
8142 Thu Nov 17 20:11:24 1994  Doug Evans  <dje@cygnus.com>
8143
8144         * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
8145         (GXX_INSTALL_NAME) Likewise.
8146         (CXX_CROSS_NAME) Use program_transform_cross_name.
8147         (GXX_CROSS_NAME) Likewise.
8148         (c++.install-man): Use program_transform_name on g++.1.
8149         (c++.uninstall): Likewise.
8150
8151 Mon Nov 28 13:53:03 1994  Mike Stump  <mrs@cygnus.com>
8152
8153         * parse.y (THROW): Fix precedence of throw expressions.
8154
8155 Mon Nov 28 13:15:16 1994  Mike Stump  <mrs@cygnus.com>
8156
8157         * typeck.c (build_unary_op): Allow promotions from bool to int on
8158         unary ~.
8159
8160 Sun Nov 27 00:16:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8161
8162         * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
8163         classes when appropriate.
8164         (build_overload_nested_name): When dealing with a function context,
8165         use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
8166         avoid conflicts between local classes of the same name.
8167
8168 Wed Nov 23 17:59:42 1994  Mike Stump  <mrs@cygnus.com>
8169
8170         * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
8171         (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
8172         `explicit'.
8173         * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
8174         build_type_conversion): Use LOOKUP_ONLYCONVERTING in
8175         build_method_calls so that non-converting constructors are not used.
8176         * call.c (build_method_call): If we shouldn't use a non-converting
8177         constructor, then don't.
8178
8179 Wed Nov 23 14:46:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8180
8181         * call.c (build_method_call): Don't try to synthesize methods yet.
8182
8183 Tue Nov 22 12:45:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8184
8185         * pt.c (push_template_decls): Create CONST_DECLs for template
8186         constant parameters, not VAR_DECLs.
8187
8188 Sat Nov 19 15:28:31 1994  Jim Wilson  <wilson@chestnut.cygnus.com>
8189
8190         * typeck.c (build_binary_op_nodefault): Can shorten shift only if
8191         shift count is less than size in bits of arg0.
8192
8193 Thu Nov 17 15:30:50 1994  Mike Stump  <mrs@cygnus.com>
8194
8195         * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
8196         ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
8197         not_eq, or, or_eq, typename, using, xor, xor_eq to g++.  Still need
8198         to add support for explicit, namespace, typename, and using, support
8199         for the rest is already in.
8200
8201 Fri Nov  4 19:04:18 1994  Mike Stump  <mrs@cygnus.com>
8202
8203         * gc.c (get_bad_cast_node): New routine to support compile time
8204         throws of bad_cast.
8205         * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
8206         time.
8207
8208 Fri Nov  4 11:12:00 1994  Mike Stump  <mrs@cygnus.com>
8209
8210         * except.c: Add hppa support.
8211
8212 Fri Nov  4 10:50:50 1994  Mike Stump  <mrs@cygnus.com>
8213
8214         * except.c: Add rs6000 support.
8215
8216 Thu Nov  3 14:24:23 1994  Mike Stump  <mrs@cygnus.com>
8217
8218         * except.c (do_unwind): Add i[34]86 support.
8219
8220 Thu Nov  3 00:10:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8221
8222         * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
8223         instantiations.
8224
8225 Wed Nov  2 15:08:24 1994  Kung Hsu  <kung@mexican.cygnus.com>
8226
8227         * decl.c (finish_function): Emit types used in method parameters
8228         into symbol table.
8229
8230 Wed Nov  2 15:05:47 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8231
8232         * pt.c (process_template_parm): Allow pointer to member function
8233         template parameter types.
8234         (uses_template_parms): Handle pointer to member function
8235         CONSTRUCTORs.
8236
8237         * g++.c (main): Cast first argument of bzero to (char *).
8238         Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
8239
8240 Mon Oct 31 14:50:48 1994  Kung Hsu  <kung@mexican.cygnus.com>
8241
8242         * gc.c (build_dynamic_cast): rewrite to make it work.
8243         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
8244         * class.c (modify_all_direct_vtables): ditto.
8245         * init.c (expand_direct_vtbls_init): expand more vtables if
8246         flag_rtti is on.
8247         * decl.c (init_type_desc): add default return.
8248
8249 Tue Oct 25 17:13:09 1994  Kung Hsu  <kung@mexican.cygnus.com>
8250
8251         * tree.c (debug_binfo): get rid of the initial size entry of
8252         vtable.
8253         * cp-tree.h: change flag_dossier to flag rtti, define type
8254         descriptor type nodes.
8255         * decl.c (init_type_desc): new function to initialize type
8256         descriptor type nodes.
8257         * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
8258         * lex.c (init_lex): ditto.
8259         * decl.c : change variable flag_dossier to flag_rtti.
8260         * decl.c (duplicate_decls): get rid initial size entry of vtable.
8261         * decl.c (hack_incomplete_structures): take out assert 164.
8262         * search.c (get_abstract_virtuals_1): ditto.
8263         * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
8264         CLASSTYPE_RTTI.
8265         * parse.y: ditto.
8266         * class.c (prepare_fresh_vtable): for virtual bases, get right
8267         offset.
8268         * class.c (add_virtual_function): change flag_dossier to
8269         flag_rtti.
8270         * class.c (modify_one_vtable): modify the right rtti entry.
8271         * class.c (override_one_vtable): get rid of size entry.
8272         * class.c (finish_struct): change flag_dossier to flag_rtti, and
8273         build extra vtables, build type descriptors for polymorphic
8274         classes.
8275         * gc.c (build_headof): make headof() works correctly with new
8276         rtti.
8277         * gc.c (build_typeid): make this function work with new rtti.
8278         * gc.c (get_typeid): make this function work with new rtti.
8279         * gc.c (build_bltn_desc): new function for new rtti.
8280         * gc.c (build_user_desc): ditto.
8281         * gc.c (build_class_desc): ditto.
8282         * gc.c (build_ptr_desc): ditto.
8283         * gc.c (build_attr_desc): ditto.
8284         * gc.c (build_func_desc): ditto.
8285         * gc.c (build_ptmf_desc): ditto.
8286         * gc.c (build_ptmd_desc): ditto.
8287         * gc.c (build_t_desc): ditto.
8288         * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
8289
8290 Tue Oct 25 13:37:41 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8291
8292         * call.c (convert_harshness): Check for TREE_UNSIGNED differences
8293         after checking for integral conversions.
8294
8295 Wed Nov 30 19:13:50 1994  Mike Stump  <mrs@cygnus.com>
8296
8297         * Version 2.6.3 released.
8298
8299 Thu Nov 17 10:56:50 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8300
8301         * typeck2.c (build_m_component_ref): Check the basetype of the
8302         member pointer against the main variant of the object type.
8303
8304 Mon Nov 14 14:21:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8305
8306         * cvt.c (convert_to_reference): Make sure that the original expr
8307         gets its type back when converting a reference.
8308
8309         * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
8310         (build_decl_overload): Instead of here.
8311
8312 Tue Nov  8 17:11:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8313
8314         * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
8315         function.
8316
8317         * typeck.c (convert_for_initialization): Handle initialization from
8318         a TARGET_EXPR.
8319
8320 Sun Nov  6 01:34:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8321
8322         * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
8323         (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
8324         TYPE_READONLY and TYPE_VOLATILE from the argument.
8325         (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
8326         present in parm from arg.
8327         (type_unification): Strip REFERENCE_TYPE from the argument type.
8328         (unify): Don't strip REFERENCE_TYPE from the argument type.
8329
8330 Sat Nov  5 22:42:15 1994  Greg McGary  <gkm@magilla.cichlid.com>
8331
8332         * pt.c (do_type_instantiation): Check to see if there's a
8333         IDENTIFIER_TEMPLATE on a class before calling
8334         instantiate_member_templates().
8335
8336 Sat Nov 12 06:35:42 1994  Mike Stump  <mrs@cygnus.com>
8337
8338         * Version 2.6.2 released.
8339
8340 Thu Nov  3 18:48:19 1994  Paul Eggert  <eggert@twinsun.com>
8341
8342         * Makefile.in (spew.o, lex.o, pt.o):
8343         Depend on $(srcdir)/parse.h, not parse.h.
8344
8345 Tue Nov  1 19:19:41 1994  Mike Stump  <mrs@cygnus.com>
8346
8347         * Version 2.6.1 released.
8348
8349 Sun Oct 23 13:19:55 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8350
8351         * decl2.c: Declare flag_access_control.
8352         (struct lang_f_options): Add access-control.
8353         * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
8354         for the call to expand_aggr_init to copy the object out of the
8355         pcc_struct_return slot.
8356         * search.c (compute_access): if (!flag_access_control) return
8357         access_public.
8358
8359 Fri Oct 21 00:32:54 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8360
8361         * lex.c (cons_up_default_function): Don't try to defer method
8362         synthesis now.
8363
8364         * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
8365         instead of abort, since the OSF/1 dynamic linker doesn't like to see
8366         relocation entries for abort.
8367
8368         * tree.c (array_type_nelts_total): Use sizetype, not
8369         integer_type_node.
8370         (array_type_nelts_top): Likewise.
8371
8372 Thu Oct 20 15:48:27 1994  Mike Stump  <mrs@cygnus.com>
8373
8374         * decl.c (grokdeclarator): Added handling for catch parameters
8375         (CATCHPARM).
8376         * except.c (expand_start_catch_block): Use the new CATCHPARM context
8377         instead of NORMAL.
8378         * except.c (expand_throw): Don't let convert_to_reference complain
8379         about what we are doing.
8380
8381 Thu Oct 20 12:55:24 1994  Jim Wilson  <wilson@cygnus.com>
8382
8383         * method.c (emit_thunk): Call instantiate_virtual_regs.
8384
8385 Wed Oct 19 14:15:33 1994  Mike Stump  <mrs@cygnus.com>
8386
8387         * except.c (expand_exception_blocks): Make sure throw code doesn't
8388         get put in function that won't be output.
8389
8390 Mon Oct 17 18:03:15 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8391
8392         * decl.c (init_decl_processing): Make alloca a builtin.
8393
8394 Thu Oct 27 21:10:25 1994  Craig Burley  <craig@burley>
8395
8396         * g++.c (main): Only decrement "added" and set "library" to
8397         NULL when "library" != NULL (just like 940829 fix).
8398
8399 Mon Oct 17 15:56:11 1994  Mike Stump  <mrs@cygnus.com>
8400
8401         * except.c (expand_start_catch_block): Make sure the false label
8402         gets onto the permanent obstack, as it is used for the exception
8403         table.
8404
8405 Fri Oct 14 18:54:48 1994  Mike Stump  <mrs@cygnus.com>
8406
8407         * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
8408         be set just below, use current_fndecl instead.
8409
8410 Fri Oct 14 15:12:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8411
8412         * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
8413         with LOOKUP_SPECULATIVELY.
8414         (expand_default_init): Abort if build_method_call returns NULL_TREE.
8415
8416         * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
8417         the rhs is a TARGET_EXPR.
8418
8419         * parse.y (left_curly): Anonymous types are not affected by #pragma
8420         interface/implementation.
8421
8422         * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
8423         default constructor if it isn't needed.
8424
8425         * lex.c (cons_up_default_function): Do synthesize methods for
8426         anonymous types if necessary.
8427
8428 Thu Oct 13 17:44:55 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8429
8430         * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
8431
8432 Wed Oct 12 13:27:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8433
8434         * typeck.c (build_modify_expr): Understand how to copy an aggregate.
8435
8436         * init.c (expand_default_init): Likewise.  Also remove some of the
8437         crufty code that assumes methods will not be synthesized properly.
8438
8439         * lex.c (cons_up_default_function): If the containing type has no
8440         name, these functions should never need to be called, so just
8441         declare them.
8442
8443         * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
8444         bitmask for lexing character constants.
8445
8446         * call.c (build_method_call): Disable code that tries to do tricky
8447         stuff with a default parameter that is a constructor call, but
8448         actually does other tricky stuff that breaks things.
8449
8450 Wed Oct 12 16:14:01 1994  Benoit Belley  <belley@cae.ca>
8451
8452         * decl.c (finish_enum): Disable code which forces enums to be signed,
8453         since this conflicts with their use as bitfields. type_promotes_to
8454         handles promotion of enums of underlying unsigned types to signed
8455         integer types.
8456
8457 Wed Oct 12 13:24:03 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8458
8459         * cvt.c (type_promotes_to): Also promote enums to long if
8460         appropriate.
8461
8462         * typeck.c (default_conversion): Don't expect type_promotes_to to
8463         return a main variant.
8464
8465 Wed Oct 12 12:19:45 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8466
8467         * call.c (build_scoped_method_call): Don't lose side effects in the
8468         object expression when calling a non-existent destructor.
8469
8470 Fri Sep  2 19:05:21 1994  Rohan Lenard  <rjl@iassf.easams.com.au>
8471
8472         * call.c (build_scoped_method_call): Remove erroneous error message
8473         when destructor call is written as a scoped call.
8474
8475 Tue Oct 11 23:48:31 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8476
8477         * various: Cast pointer arguments to bzero and bcopy to char *.
8478
8479 Tue Oct 11 19:34:32 1994  Mike Stump  <mrs@cygnus.com>
8480
8481         * class.c (get_derived_offset): Added a type parameter to limit how
8482         far up the CLASSTYPE_VFIELD_PARENT chain we search.
8483         * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
8484         offset to put into the vtable for the this parameter, make sure we
8485         don't offset from a parent of the DECL_CONTEXT of the function.
8486
8487 Tue Oct 11 16:10:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8488
8489         * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
8490         TREE_STATIC when setting DECL_INTERFACE_KNOWN.
8491         (do_type_instantiation): Likewise.
8492
8493         * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
8494         DECL_EXTERNAL and TREE_STATIC as appropriate.
8495
8496         * decl2.c (finish_file): Also synthesize methods that don't have
8497         DECL_EXTERNAL set.  Set interface_unknown before doing so.
8498
8499         * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
8500         function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
8501
8502 Mon Oct 10 00:56:53 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8503
8504         * lex.c (cons_up_default_function): Mark methods in a template class
8505         as template instances.  Store the values of interface_unknown and
8506         interface_only for do_pending_inlines.
8507         (do_pending_inlines): Use them.
8508
8509         * decl2.c (finish_file): If we haven't seen a definition of a
8510         function declared static, make the decl non-PUBLIC so compile_file
8511         can give an error.
8512
8513 Sun Oct  9 02:42:29 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8514
8515         * method.c (do_build_copy_constructor): Handle anonymous unions.
8516         (do_build_assign_ref): Likewise.
8517         (largest_union_member): Move from lex.c.
8518
8519 Sat Oct  8 14:59:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8520
8521         Re-implement g++'s vague linkage independent of TREE_PUBLIC.
8522         * pt.c (instantiate_member_templates): Lose redundant
8523         -fexternal-templates handling.
8524         (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls.  Don't set
8525         TREE_STATIC or DECL_INTERFACE_KNOWN.
8526         (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
8527         of DECL_EXTERNAL for explicit instantiations.
8528         (do_function_instantiation): Do the new thing.
8529         (do_type_instantiation): Likewise.
8530         (instantiate_template): Deal with member templates defined in a .cc
8531         file with -fexternal-templates.
8532         * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
8533         decide whether to stick builtin_throw here.
8534         * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
8535         rather than TREE_PUBLIC.  Generally fix rules.
8536         (finish_file): Use DECL_INITIAL to determine whether or not a method
8537         has been synthesized, rather than TREE_ASM_WRITTEN.
8538         * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
8539         TREE_PUBLIC.
8540         (pushdecl): Likewise.
8541         (duplicate_decls): Likewise.  Deal with DECL_DECLARED_STATIC and
8542         DECL_INTERFACE_KNOWN. 
8543         (redeclaration_error_message): Fix checking for conflicting linkage.
8544         (define_function): Set DECL_INTERFACE_KNOWN.
8545         (grokfndecl): Function decls are PUBLIC until we are sure about
8546         their linkage.  Set DECL_DECLARED_STATIC as needed.
8547         (start_function): Deal with linkage.  Move pushdecl after linkage
8548         magic.
8549         (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
8550         * cp-tree.h (lang_decl_flags): Add interface_known and
8551         declared_static.
8552         (DECL_INTERFACE_KNOWN): New macro.
8553         (DECL_DECLARED_STATIC): New macro.
8554         (DECL_PUBLIC): New macro.
8555
8556         Clean up bogus use of TREE_PUBLIC.
8557         * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
8558         doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
8559         * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
8560
8561 Wed Oct  5 13:44:41 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8562
8563         * call.c (build_overload_call_real): Don't immediately do
8564         array->pointer conversion.
8565
8566         * pt.c (type_unification): If not passing to a reference, strip
8567         cv-quals.  Also handle array->pointer conversion.
8568
8569 Tue Oct  4 17:45:37 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8570
8571         * decl.c (grokdeclarator): Don't warn about applying const to a
8572         const typedef or template type parameter.
8573
8574         * decl2.c (finish_file): Also synthesize methods after walking the
8575         vtables.  Ugly ugly ugly.
8576
8577 Mon Oct  3 15:02:41 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8578
8579         * various: Remove lingering remnants of old exception handling code.
8580
8581         * decl2.c (finish_file): Synthesize methods before walking the
8582         vtables, so that the vtables get emitted as needed.
8583
8584         * decl.c (shadow_tag): Remove obsolete code for pushing tags and
8585         dealing with exceptions.
8586
8587 Mon Oct  3 13:05:27 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
8588
8589         * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
8590
8591 Mon Oct  3 02:59:28 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8592
8593         * decl2.c (finish_file): Fix inline handling.
8594
8595 Sun Oct  2 00:21:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8596
8597         * decl.c (grokdeclarator): Handle redundant scope even better.
8598         ({push,pop}_cp_function_context): Take toplev parameter.
8599
8600         * method.c (synthesize_method): Pass toplev parameter to
8601         {push,pop}_cp_function_context depending on decl_function_context
8602         (fndecl).
8603
8604         * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
8605         built-in version.
8606
8607         * method.c (synthesize_method): Don't be confused by __in_chrg
8608         parameter.
8609
8610         * class.c (popclass): Set C_C_D like start_function does.
8611
8612         * decl.c (grokdeclarator): Handle redundant scope better.
8613
8614         * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
8615         (direct_notype_declarator): Likewise.
8616         (complex_direct_notype_declarator): Remove it here.
8617
8618 Sat Oct  1 21:42:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
8619
8620         * init.c (resolve_offset_ref): Fix types used in resolving .*
8621         expressions.
8622
8623 Sat Oct  1 15:18:49 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
8624
8625         Beginnings of work to synthesize methods only when needed.
8626         * call.c (build_method_call): Synthesize methods as necessary
8627         (currently never necessary).
8628         * class.c (popclass): Don't try to set C_C_D here, as it'll end up
8629         on the wrong obstack.
8630         * decl.c (push_cp_function_context): Mostly copied from
8631         push_c_function_context.
8632         (pop_cp_function_context): Similarly.
8633         (finish_function): Reverse order of poplevel and pop_nested_class so
8634         that current_class_decl is restored properly.  
8635         (start_function): Likewise.
8636         (finish_function): Add parameter 'nested'.  Don't call
8637         permanent_allocation if (nested).
8638         * various: Pass extra parameter to finish_function.     
8639         * decl2.c (finish_file): Reorganize end-of-file inline handling,
8640         synthesizing methods as necessary.
8641         * lex.c (cons_up_default_function): Call mark_inline_for_output.
8642         Only synthesize methods immediately if #pragma implementation
8643         (currently disabled).
8644         (do_pending_inlines): Call synthesize_method.
8645         * method.c (synthesize_method): New function; all method synthesis
8646         goes through here.  Calls do_build_assign_ref and
8647         do_build_copy_constructor.
8648         (build_default_constructor): Remove.
8649         (build_dtor): Likewise.
8650         (build_assign_ref): Rename to do_build_assign_ref and remove stuff
8651         done by synthesize_method.
8652         (build_copy_constructor): Similarly.
8653
8654 Thu Sep 29 16:58:52 1994  Mike Stump  <mrs@cygnus.com>
8655
8656         * typeck.c (c_expand_return): Use magic so the backend can fixup the
8657         assignment into the return register, so cleanups won't clobber it.
8658
8659 Thu Sep 29 13:08:50 1994  Jason Merrill  <jason@deneb.cygnus.com>
8660
8661         * method.c (hack_identifier): Don't call assemble_external for
8662         template decls.
8663
8664         * decl.c (finish_decl): Also end temporary allocation if the decl in
8665         question has a type of error_mark_node.
8666
8667 Wed Sep 28 21:45:00 1994  Mike Stump  <mrs@cygnus.com>
8668
8669         * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
8670         that if the ?: was a reference type, that the subparts will be also.
8671
8672 Wed Sep 28 16:14:04 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8673
8674         * except.c (register_exception_table): Use Pmode, not PTRmode.
8675
8676 Fri Sep 23 13:54:27 1994  Jason Merrill  <jason@deneb.cygnus.com>
8677
8678         * lex.c (do_pending_inlines): Do method synthesis after the
8679         pending_inlines have been reversed.
8680
8681 Thu Sep 22 12:53:03 1994  Per Bothner  <bothner@kalessin.cygnus.com>
8682
8683         * decl2.c (finish_file):  Fix Brendan's fix:  Only call
8684         register_exception_table if there is a non-empty exception table.
8685
8686 Thu Sep 22 12:03:46 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8687
8688         * decl2.c (finish_file): Only do register_exception_table if
8689         -fhandle-exceptions is being used.
8690
8691 Wed Sep 21 19:01:51 1994  Per Bothner  <bothner@kalessin.cygnus.com>
8692
8693         * except.c (output_exception_table_entry):  Simplify
8694         by using assemble_integer.
8695         (build_exception_table):  Change to return a count.
8696         Cleanup to use standard macros, instead of hard-wired
8697         sparc asm format.  Don't make __EXCEPTION_TABLE__ global.
8698         (register_exception_table):  New function.  Generate call to builtin.
8699         * decl2.c (finish_file):  Call register_exception_table.
8700         * cp-tree.h (build_exception_table):  Fix prototype.
8701
8702 Wed Sep 21 13:20:42 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8703
8704         * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
8705
8706         * decl2.c (delete_sanity): Give an error at trying to delete a
8707         function.
8708
8709 Wed Sep 21 11:47:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
8710
8711         * lex.c (cons_up_default_function): Mark synthesized destructors
8712         inline.
8713
8714         * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
8715         something other than __wchar_t, complaining if -pedantic and not in
8716         a system header.
8717
8718 Tue Sep 20 09:43:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
8719
8720         * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
8721         here.
8722
8723         * typeck.c (build_modify_expr): Require complete type after checking
8724         for error_mark_node.
8725
8726         * call.c (build_method_call): Print parmtypes when complaining of
8727         ambiguous call.
8728
8729         * typeck.c (build_modify_expr): Handle assignment to array from
8730         non-array.
8731
8732         * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
8733
8734         * call.c (build_method_call): Don't bother with the exact match.
8735
8736 Mon Sep 19 00:51:39 1994  Jason Merrill  <jason@deneb.cygnus.com>
8737
8738         * init.c (expand_aggr_init): If we munge the type of the variable,
8739         also munge the type of the initializer.
8740
8741         * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
8742         (init_decl_processing): Push artificial declaration of wchar_t so
8743         people don't have to declare it before they can use it.
8744
8745         * error.c (cp_line_of): return lineno in lieu of 0.
8746
8747         * typeck.c (convert_for_assignment): Handle conversion of pmfs to
8748         int and bool.
8749         (build_component_ref): Fold the COMPONENT_REF in case it can be
8750         reduced.
8751
8752         * typeck2.c (store_init_value): Don't pedwarn about non-constant
8753         bracketed initializers for automatic variables.
8754
8755 Sun Sep 18 10:12:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
8756
8757         * error.c (dump_decl): Don't say `typedef enum foo foo'.
8758
8759         * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
8760         because they're affected by #pragma i/i.  We'll deal with that when
8761         they get instantiated.
8762
8763         * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
8764
8765         * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
8766         ADDR_EXPRs if appropriate.
8767
8768         * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
8769
8770         * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
8771         initializer properly.
8772         * typeck2.c (digest_init): Likewise.
8773
8774         * tree.c (cp_build_type_variant): Like c_build_type_variant, except
8775         it uses build_cplus_array_type.
8776         * *.c: Use cp_build_type_variant instead of c_build_type_variant.
8777
8778         * pt.c (do_type_instantiation): Don't try to instantiate nested
8779         enums.
8780
8781 Tue Sep 13 10:56:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
8782
8783         * cvt.c (build_up_reference): Handle preincrement and predecrement
8784         properly.
8785
8786 Tue Sep 13 09:51:59 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8787
8788         * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
8789         fact, static.
8790
8791 Mon Sep 12 14:40:30 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8792
8793         * decl.c (finish_decl): Lay out the rtl for DECL before doing
8794         grok_reference_init, in case it's static.
8795
8796 Mon Sep 12 12:45:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
8797
8798         * class.c (finish_struct): Don't synthesize constructors if the
8799         class has a field with the same name as the class.  Don't die on
8800         classes with no constructors or destructors.  Don't die if the head
8801         and tail of the class are in different files.
8802
8803         * decl.c (grokdeclarator): Don't treat a function pointer field
8804         with the same name as the class as a constructor.
8805
8806 Fri Sep  9 13:17:00 1994  Jason Merrill  <jason@deneb.cygnus.com>
8807
8808         * typeck.c (build_c_cast): Pull constant values out of their
8809         variables here.
8810
8811         * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
8812         FUNCTION_DECLs and TEMPLATE_DECLs.
8813
8814 Thu Sep  8 10:07:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
8815
8816         * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
8817         have it.
8818
8819         * pt.c (unify): REALs and INTEGERs only unify with their own genus.
8820         (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
8821         TREE_PUBLIC unless -fexternal-templates.
8822
8823 Wed Sep  7 13:17:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
8824
8825         * pt.c (do_type_instantiation): Call instantiate_member_templates.
8826         Deal with specializations.
8827         (tsubst): Don't stick the mangled name in DECL_NAME for function
8828         instantiations.  Don't push them, either.
8829
8830         * decl2.c (grokfield): Move code for generating the
8831         DECL_ASSEMBLER_NAME for static members from here.
8832         * method.c (build_static_name): To here.
8833         * decl.c (grokvardecl): Call build_static_name.
8834         (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
8835
8836 Mon Sep  5 12:49:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
8837
8838         * call.c (build_method_call): if -Wsynth, warn when selecting
8839         synthesized op= over user-supplied one cfront would select.
8840         * decl2.c (lang_decode_option): Handle -Wsynth.
8841
8842 Fri Sep  2 15:11:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
8843
8844         * decl.c (finish_enum): Overhaul to fix several bugs.
8845         (start_enum): Disable useless code.
8846
8847 Thu Sep  1 16:04:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
8848
8849         * typeck.c (c_expand_return): Warn about returning a reference to a
8850         temporary.
8851         (convert_arguments): Increment argument counter when using default
8852         arguments, too.
8853
8854 Wed Aug 31 14:29:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
8855
8856         * decl.c (finish_decl): If the type of decl is error_mark_node,
8857         don't bother trying to do anything.
8858
8859         * typeck.c (convert_for_initialization): If the rhs contains a
8860         constructor call, pretend the lhs type needs to be constructed.
8861
8862         * init.c (expand_default_init): If we stick the object inside the
8863         initializer, mark the initializer used.
8864
8865 Tue Aug 30 13:50:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
8866
8867         * method.c (build_assign_ref): return *this;
8868         (build_assign_ref): Fix base assignment order.
8869         (build_copy_constructor): Fix member init order.
8870
8871 Mon Aug 29 13:54:39 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8872
8873         * g++.c (main): Remember to clear out SAW_SPECLANG after we see
8874         its argument.
8875
8876 Sat Aug 27 09:36:03 1994  Jason Merrill  <jason@deneb.cygnus.com>
8877
8878         * method.c (build_copy_constructor): Also copy virtual bases.
8879
8880 Fri Aug 26 17:05:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
8881
8882         * lex.c (do_pending_inlines): Clear out pending_inlines before doing
8883         any synthesis.  Also first set deja_vu on all pending_inlines.
8884
8885         * method.c (build_assign_ref): Use build_member_call to invoke base
8886         operator=, rather than build_modify_expr.  And use
8887         build_reference_type instead of TYPE_REFERENCE_TO.
8888         (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
8889         basetype.
8890
8891         * decl2.c (grokfield): Don't complain about undefined local class
8892         methods.
8893
8894         * class.c (finish_struct): Don't try to synthesize methods here.
8895         * lex.c (do_pending_inlines): Instead, synthesize them here.
8896         (init_lex): Initialize synth_obstack.
8897         (cons_up_default_function): Stick synthesis request on
8898         pending_inlines.
8899
8900 Fri Aug 26 12:24:14 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8901
8902         * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
8903         accept an RTL_EXPR in what we're about to use for the instance,
8904         since anything which would end up with pcc_struct_return set
8905         inside cplus_expand_expr.
8906
8907         * cp-tree.h (cons_up_default_function): Note change of prototype.
8908
8909 Thu Aug 25 23:05:30 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
8910
8911         * class.c (finish_struct): Undid change from Aug 21 testing
8912         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
8913         * parse.y (left_curly): Likewise, undid change from Aug 21.
8914         * decl.c (xref_tag): Undid change from Aug 21, set
8915         CLASSTYPE_INTERFACE correctly, and added comments.
8916
8917 Thu Aug 25 00:36:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
8918
8919         Rework approach to synthesized methods; don't go through the parser
8920         anymore.
8921         * class.c (finish_struct): Use new synthesis approach.
8922         * lex.c (cons_up_default_function): Now just creates declaration,
8923         not code.
8924         (largest_union_member): #if 0 out.
8925         (default_assign_ref_body): Likewise.
8926         (default_copy_constructor_body): Likewise.
8927         * method.c (build_default_constructor): New function to synthesize X().
8928         (build_copy_constructor): Synthesize X(X&).
8929         (build_assign_ref): Synthesize X::operator=(X&).
8930         (build_dtor): Synthesize ~X().
8931
8932         * error.c (cp_line_of): If we're dealing with an artificial
8933         TYPE_DECL, look at the type instead.
8934
8935 Wed Aug 24 11:11:50 1994  Jason Merrill  <jason@deneb.cygnus.com>
8936
8937         * init.c (sort_member_init): Check warn_reorder.
8938         * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
8939
8940         * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
8941         * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
8942         * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
8943
8944 Tue Aug 23 09:28:35 1994  Mike Stump  <mrs@cygnus.com>
8945
8946         * error.c (dump_decl): Improve wording, so that error messages
8947         dont't read template<, class foo>...
8948
8949 Mon Aug 22 15:30:51 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
8950
8951         * parse.y (label_colon): Also match a TYPENAME as a label name,
8952         since they may have declared a class by that name but have also
8953         tried to have a local label under the same name.
8954
8955         * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
8956         for the message so they know at what point it was instantiated.
8957
8958 Sun Aug 21 23:07:35 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
8959
8960         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
8961         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
8962         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
8963         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
8964         * parse.y (left_curly): New final resting place for setting
8965         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
8966
8967         * class.c (finish_struct): Don't test for function/field name
8968         conflicts in signatures, since all the fields are compiler-constructed.
8969
8970 Fri Aug 19 14:04:47 1994  Kung Hsu  <kung@mexican.cygnus.com>
8971
8972         * method.c (build_overload_nested_name): in qualified name
8973         mangling, the template with value instantiation will have numeric
8974         at end and may mixed with the name length of next nested level.
8975         Add a '_' in between.
8976         * method.c (build_overload_name): ditto.
8977         * method.c (build_overload_identifier): ditto.
8978
8979 Thu Aug 18 16:24:43 1994  Mike Stump  <mrs@cygnus.com>
8980
8981         * error.c (dump_decl): Handle NULL args.
8982
8983 Thu Sep 29 16:15:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
8984
8985         * g++.c: Rework last change so it's done like collect.c (and 
8986         gcc.c).
8987
8988 Wed Sep 14 10:17:27 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
8989
8990         * g++.c: Include <sys/errno.h> in case `errno' is a macro
8991         as permitted by ANSI C.
8992
8993 Thu Aug 18 12:48:09 1994  Mike Stump  <mrs@cygnus.com>
8994
8995         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
8996         CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
8997         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
8998         CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
8999         * parse.y (left_curly): New final resting place for setting
9000         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
9001
9002 Thu Aug 11 11:32:42 1994  H.J. Lu  <hjl@nynexst.com>
9003
9004         * g++.c (main): Only decrement "added" and set "library" to
9005           NULL when "library" != NULL.
9006
9007 Sat Aug 13 00:14:52 1994  Jason Merrill  <jason@deneb.cygnus.com>
9008
9009         * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
9010         just because its class has a known interface.
9011         (decls_match): Deal with new format of template parms.
9012
9013         * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
9014         DECL_EXTERNAL here.
9015
9016 Fri Aug 12 01:55:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
9017
9018         * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
9019         (xref_defn_tag): Likewise.
9020         (pushdecl): Only allow artificial typedefs to be shadowed.
9021
9022         * init.c (emit_base_init): Pass the right binfos to
9023         expand_aggr_init_1.
9024
9025         * class.c (delete_duplicate_fields_1): Make it work right.
9026         (finish_struct): Catch function/field name conflict.
9027
9028         * decl2.c (check_classfn): Pass the function to cp_error, not just
9029         the name.
9030
9031         * init.c (sort_member_init): Warn when order of member initializers
9032         does not match order of member declarations.
9033         (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
9034
9035         * error.c (dump_expr): Handle lists of functions.
9036
9037         * decl.c (start_function): #pragma interface only affects functions
9038         that would otherwise be static.
9039         (finish_decl): Don't warn about an unused variable if it has both
9040         constructor and destructor, since the 'resource allocation is
9041         initialization' idiom is relatively common.
9042
9043         * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
9044         (comp_target_parms): Likewise.
9045         (compparms): Never consider default parms.
9046         (common_base_type): Don't choose a virtual baseclass if there is a
9047         more derived class in common.
9048         (build_conditional_expr): If pedantic, pedwarn about conversion to
9049         common base in conditional expr.
9050
9051         * class.c (instantiate_type): Handle template instantiation better.
9052
9053         * typeck.c (convert_arguments): Don't try to get tricky and convert
9054         to int directly when PROMOTE_PROTOTYPES is set, as it breaks
9055         user-defined conversions.
9056
9057         * lex.c (check_for_missing_semicolon): Also give error at end of
9058         file.
9059
9060         * call.c (build_method_call): Don't promote arrays to pointers here.
9061
9062         * typeck.c (convert_arguments): Don't require the actual parameter
9063         to be of a complete type if the formal parameter is a reference.
9064
9065 Thu Aug 11 15:21:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
9066
9067         * decl.c (grokdeclarator): Soften 'static' on member function error
9068         to pedwarn.
9069
9070         * init.c (build_new): Don't automatically save rval.
9071         (build_offset_ref): Do field lookup with proper basetype_path.
9072
9073 Thu Aug 11 12:46:54 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9074
9075         * errfn.c (cp_silent): Declare to mark when we should avoid
9076         emitting warnings and errors.
9077         (cp_error): Check it.
9078         (cp_warning): Likewise.
9079         (cp_pedwarn): Likewise.
9080         (cp_compiler_error): Likewise.
9081         (cp_error_at): Likewise.
9082         (cp_warning_at): Likewise.
9083         (cp_pedwarn_at): Likewise.
9084         * call.c (compute_conversion_costs): Set CP_SILENT when we start
9085         out, and make sure we turn it off before we leave.
9086
9087 Thu Aug 11 00:02:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
9088
9089         * decl2.c (grok_array_decl): Try computing *(A+B) if neither
9090         argument is obviously an array.
9091
9092 Wed Aug 10 15:32:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
9093
9094         * typeck.c (c_expand_start_case): Do cleanups here.
9095
9096         * parse.y (xcond): Do bool conversion here, too.
9097         (simple_stmt, SWITCH case): Don't do cleanups here.
9098
9099         * decl.c (duplicate_decls): Don't treat builtins that have been
9100         explicitly declared specially.
9101
9102 Tue Aug  9 01:16:09 1994  Jason Merrill  <jason@deneb.cygnus.com>
9103
9104         * tree.c (make_deep_copy): Support copying pointer, reference,
9105         function, array, offset and method types.
9106
9107         * decl.c (init_decl_processing): Mark exit and abort as
9108         BUILT_IN_NONANSI so that duplicate_decls is kinder about
9109         redeclaration.
9110         (duplicate_decls): Don't give two errors for redeclaring a C
9111         function with the same parms but a different return type.
9112
9113         * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
9114         (condition): Instead of here.
9115         (simple_stmt, SWITCH case): Also do cleanup here.
9116
9117         * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
9118
9119         * call.c (build_method_call): Don't throw away the side effects of
9120         the object in a call to a non-existent constructor.
9121         * parse.y (primary): Likewise.
9122
9123         * method.c (build_decl_overload): Oop.
9124
9125         * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
9126         warn about uselessness of specifying -fansi-overloading.
9127
9128         * method.c (build_decl_overload): Treat any non-member new with one
9129         parameter as __builtin_new.
9130
9131         * decl.c (init_decl_processing): Setup built-in meanings of exit,
9132         _exit and abort.
9133
9134 Mon Aug  8 15:03:30 1994  Jason Merrill  <jason@deneb.cygnus.com>
9135
9136         * error.c (dump_readonly_or_volatile): Put a space between const and
9137         volatile if both apply.
9138
9139         * init.c (perform_member_init): Clean up after this initialization.
9140         (emit_base_init): Clean up after each base init, not after all have
9141         been done.
9142         (expand_aggr_vbase_init_1): Clean up after this init.
9143
9144 Sun Aug  7 14:55:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
9145
9146         * call.c (build_method_call): Deal with destroying references.
9147
9148         * parse.y (condition): Do bool_truthvalue_conversion here.
9149         (paren_expr_or_null): And here.
9150         (simple_if): Not here.
9151         (simple_stmt): Or here.
9152
9153 Sat Aug  6 22:29:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
9154
9155         * parse.y (paren_expr_or_null): Wrap the expression in a
9156         CLEANUP_POINT_EXPR.
9157         (condition): Likewise.
9158
9159 Sat Aug  6 19:46:37 1994  Rohan Lenard  <rjl@easams.com.au>
9160
9161         * call.c (build_scoped_method_call): Fix error message when
9162         destructor call refers to a nonexistent type.
9163
9164 Sat Apr 16 22:43:30 1993  Gerald Baumgartner  <gb@cs.purdue.edu>
9165
9166         * lex.h (rid): Deleted RID_RAISES, it's never used.
9167         Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
9168         RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
9169         they don't need to be touched in `grokdeclarator.'
9170         (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
9171
9172         * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
9173         RID_MAX as loop limit for finding declaration specifiers.
9174
9175 Sat Apr  3 21:59:07 1993  Gerald Baumgartner  <gb@cs.purdue.edu>
9176
9177         * lex.c (debug_yytranslate): Moved to parse.y since it needs to
9178         access `yytname,' which is static in parse.c.
9179
9180 Fri Apr  2 23:36:57 1993  Gerald Baumgarnter  <gb@cs.purdue.edu>
9181
9182         * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
9183         was `GNU_xref_def' instead of `GNU_xref_ref.'
9184
9185 Fri Aug  5 14:20:16 1994  Jason Merrill  <jason@deneb.cygnus.com>
9186
9187         * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
9188         DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
9189         (do_type_instantiation): Likewise.
9190
9191         * decl2.c (import_export_inline): Decides at EOF what an inline's
9192         linkage should be.
9193         (finish_file): Call it.
9194
9195         * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
9196         and DECL_EXTERNAL from do_*_instantiation.  Only set
9197         DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
9198         (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
9199         mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
9200
9201 Fri Aug  5 01:12:20 1994  Mike Stump  <mrs@cygnus.com>
9202
9203         * class.c (get_class_offset_1, get_class_offset): New routine to
9204         find the offset of the class where a virtual function is defined,
9205         from the complete type.
9206         * class.c (modify_one_vtable, fixup_vtable_deltas): Use
9207         get_class_offset instead of virtual_offset as get_class_offset will
9208         always provide the right answer.
9209         * tree.c (virtual_offset): Remove.  It only ever worked some of the
9210         time.
9211
9212 Tue Aug  2 12:44:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
9213
9214         * call.c (build_method_call): Put back unary_complex_lvalue call
9215         that I thought was redundant.
9216
9217         * typeck.c (c_expand_return): Fix a case I missed before.
9218
9219 Sun Jul 31 17:54:02 1994  Jason Merrill  <jason@deneb.cygnus.com>
9220
9221         * pt.c (unify): Strip cv-quals from template type arguments (when
9222         'const T*' is matched to 'const char*', that does not mean that T is
9223         'const char').
9224
9225 Fri Jul 29 01:03:06 1994  Jason Merrill  <jason@deneb.cygnus.com>
9226
9227         * pt.c (do_type_instantiation): Instantiate nested TAGS, not
9228         typedefs.  Third time's the charm?
9229
9230         * parse.y (template_parm): Support default template parms.
9231         * pt.c (process_template_parm): Likewise.
9232         (end_template_parm_list): Likewise.
9233         (coerce_template_parms): Likewise.
9234         (mangle_class_name_for_template): Likewise.
9235         (push_template_decls): Likewise.
9236         (unify): Likewise.
9237         * method.c (build_overload_identifier): Likewise.
9238         * error.c (dump_decl): Likewise.
9239
9240 Wed Jul 27 17:47:00 1994  Jason Merrill  <jason@deneb.cygnus.com>
9241
9242         * pt.c (do_type_instantiation): Only instantiate nested *classes*.
9243
9244 Tue Jul 26 13:22:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
9245
9246         * search.c (note_debug_info_needed): Also emit debugging information
9247         for the types of fields.
9248
9249 Mon Jul 25 00:34:44 1994  Jason Merrill  <jason@deneb.cygnus.com>
9250
9251         * pt.c (lookup_template_class): Pass 'template' to
9252         coerce_template_parms instead of 'in_decl', since it's a more
9253         meaningful context.
9254
9255         * typeck.c (c_expand_return): Make sure any cleanups for the return
9256         expression get run.
9257         (build_c_cast): Use CONVERT_EXPR for conversion to void.
9258
9259         * pt.c (do_type_instantiation): Also instantiate nested types.
9260
9261         * typeck.c (convert_for_assignment): Don't die when comparing
9262         pointers with different levels of indirection.
9263
9264         * decl.c (grokdeclarator): The sub-call to grokdeclarator for
9265         class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
9266         out.
9267
9268         * decl2.c (finish_anon_union): Don't die if the union has no
9269         members.
9270
9271         * decl.c (grokdeclarator): Undo changes to declspecs when we're done
9272         so that 'typedef int foo, bar;' will work.
9273
9274         * decl2.c (finish_file): Don't call expand_aggr_init for
9275         non-aggregates.
9276
9277 Mon Jul 25 00:03:10 1994  Teemu Torma  <tot@trema.fi>
9278
9279         * decl.c (finish_function): We can't inline constructors and
9280         destructors under some conditions with -fpic, but don't unset
9281         DECL_INLINE.
9282
9283 Mon Jul 25 00:03:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
9284
9285         * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
9286
9287 Sun Jul 24 14:19:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
9288
9289         * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
9290         non-fields.
9291         (finish_struct_methods): Use copy_assignment_arg_p.
9292
9293         * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
9294         of giving an error.
9295
9296         * typeck.c (build_binary_op_nodefault): Don't set result_type if we
9297         don't know how to compare the operands.
9298
9299         * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
9300         as a declarator-id in their program.  Like the Linux headers do.
9301         Arrgh.
9302
9303         * tree.c (lvalue_p): Treat calls to functions returning objects by
9304         value as lvalues again.
9305
9306         * typeck.c (build_component_addr): Use convert_force to convert the
9307         pointer in case the component type is also a private base class.
9308
9309         * search.c (get_matching_virtual): Fix bogus warning of overloaded
9310         virtual.
9311
9312         * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
9313         TYPE_DECL to fix bogus shadowing warnings.
9314
9315 Fri Jul 22 01:15:32 1994  Jason Merrill  <jason@deneb.cygnus.com>
9316
9317         * init.c (expand_aggr_init_1): const and volatile mismatches do not
9318         prevent a TARGET_EXPR from initializing an object directly.
9319
9320 Tue Jul 19 17:55:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
9321
9322         * cvt.c (build_up_reference): Allow building up references to
9323         `this', don't warn about making references to artificial variables
9324         (like `this').
9325
9326         * tree.c (lvalue_p): `this' is not an lvalue.
9327
9328         * call.c (build_method_call): Accept using a typedef name (or
9329         template type parameter) for explicit destructor calls.
9330
9331 Thu Jul 14 09:42:23 1994  Mike Stump  <mrs@cygnus.com>
9332
9333         * Version 2.6.0 released.
9334
9335 Wed Jul 13 03:57:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
9336
9337         * method.c (hack_identifier): Put back old code so lists of
9338         non-functions will be handled properly.
9339
9340         * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
9341         defined in the language-independent tree.h.
9342
9343         * tree.c (count_functions): Avoid bogus warning when compiling this
9344         function.
9345
9346 Mon Jul 11 18:37:20 1994  Jason Merrill  <jason@deneb.cygnus.com>
9347
9348         * decl.c (grok_reference_init): Always save the initializer of a
9349         reference.
9350
9351 Fri Jul  8 17:41:46 1994  Mike Stump  <mrs@cygnus.com>
9352
9353         * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
9354         CLEANUP_POINT_EXPRs so that the stack slots can be reused.
9355         (disabled for now)
9356
9357 Fri Jul  8 12:59:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
9358
9359         * method.c (hack_identifier): Fix for new overloading.
9360
9361         * typeck.c (build_binary_op_nodefault): Don't mess with division by
9362         zero.
9363
9364 Fri Jul  8 13:20:28 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
9365
9366         * decl2.c (finish_file): Only call walk_sigtables, if
9367         flag_handle_signatures is turned on, don't waste time otherwise.
9368
9369 Fri Jul  8 02:27:41 1994  Jason Merrill  <jason@deneb.cygnus.com>
9370
9371         * decl.c (push_overloaded_decl): Don't create overloads of one when
9372         shadowing a class type.
9373         * typeck.c (build_x_function_call): Complain about overloads of one.
9374
9375         * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
9376         (grokdeclarator): Fix setting of TREE_STATIC.
9377         (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
9378
9379 Thu Jul  7 22:20:46 1994  Gerald Baumgartner  <gb@andros.cygnus.com>
9380
9381         * cp-tree.h (walk_sigtables): Created extern declaration.
9382         * decl2.c (walk_sigtables): Created function, patterned after
9383         walk_vtables, even though we only need it to write out sigtables.
9384         (finish_sigtable_vardecl): Created function.
9385         (finish_vtable_vardecl): Changed 0 to NULL_PTR.
9386         (finish_file): Call walk_sigtables.
9387
9388         * sig.c (build_signature_table_constructor): Mark class member
9389         function pointed to from signature table entry as addressable.
9390
9391 Thu Jul  7 13:39:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
9392
9393         * decl.c (start_decl): Check new decl of static member variable
9394         against the declaration in the class here.
9395         (grokvardecl): Instead of here.
9396
9397         * class.c (prepare_fresh_vtable): Call import_export_vtable if not
9398         -fvtable-thunks.
9399         (build_vtable): Likewise.
9400
9401         * decl2.c (import_export_vtable): Move logic for deciding the
9402         interface of a template class from here.
9403         (import_export_template): To here.
9404         (finish_vtable_vardecl): Call import_export_template before
9405         import_export_vtable.
9406
9407 Wed Jul  6 20:25:48 1994  Mike Stump  <mrs@cygnus.com>
9408
9409         * except.c (init_exception_processing): Setup interim_eh_hook to
9410         call lang_interim_eh. 
9411         * except.c (do_unwind): Propagate throw object value across
9412         stack unwinding.
9413         * except.c (saved_throw_value): Used to hold the value of the object
9414         being thrown.  It is always a reference to the real value.
9415         * except.c (expand_start_catch_block): Add handling for the
9416         value of the exception object.
9417         * except.c (expand_start_catch_block): Add handler for the handler,
9418         so that throws inside the handler go to the outer block.
9419         * except.c (expand_end_catch_block): Likewise.
9420         * parse.y (handler_args): Use parm instead, as the other doesn't yet
9421         handle references correctly.
9422
9423 Wed Jul  6 17:55:32 1994  Per Bothner  <bothner@kalessin.cygnus.com>
9424
9425         * decl2.c (mark_vtable_entries):  If -ftable-thunks, set the
9426         vtable entry properly to abort.
9427
9428 Tue Jul  5 14:07:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
9429
9430         * typeck.c (build_binary_op_nodefault): Downgrade division by zero
9431         errors to warnings.
9432
9433         * call.c (build_overload_call_real): Handle fnname being a list of
9434         functions.
9435         * typeck.c (build_x_function_call): Pass list of functions to
9436         build_overload_call, not just the name.
9437         * tree.c (count_functions): Complain when called for invalid
9438         argument.
9439
9440         * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
9441         and DECL_EXTERNAL on static members and initialized const members.
9442         * decl2.c (grokfield): Reflect this change.
9443
9444 Fri Jul  1 09:35:51 1994  Jason Merrill  <jason@deneb.cygnus.com>
9445
9446         * parse.y (init): ANSI C++ does not forbid { }.
9447
9448 Thu Jun 30 00:35:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
9449
9450         * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
9451         warn_nonvdtor defaults to off.
9452
9453         * class.c (instantiate_type): Use comptypes rather than relying on 
9454         types to satisfy ==.
9455
9456         * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
9457         might be static.
9458
9459         * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
9460
9461         * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
9462
9463         * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
9464         build_cplus_new.
9465
9466 Wed Jun 29 22:31:09 1994  Jason Merrill  <jason@deneb.cygnus.com>
9467
9468         * decl2.c (finish_file): Maybe consider static inlines multiple
9469         times, in case they reference each other.
9470
9471 Tue Jun 28 11:58:38 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
9472
9473         * class.c (finish_struct): Don't `cons_up_default_function's
9474         for signatures.
9475         (finish_struct): Handle an empty method_vec correctly.
9476
9477         * decl.c (grokdeclarator): Don't warn about a signature being
9478         empty in a signature pointer declaration if we only saw a
9479         forward declaration of the signature.  Changed `warning's into
9480         `cp_warning's.
9481
9482         * sig.c (build_sigtable): Don't die if a null signature table
9483         constructor is returned.
9484         (build_signature_pointer_constructor): If the signature table
9485         constructor is null, the _sptr field is set to a null pointer
9486         and cast to the appropriate type.  Make copies of all null
9487         pointers so that the type null_pointer_node doesn't get changed.
9488         (build_signature_table_constructor): Added comments.
9489
9490         * sig.c (build_signature_pointer_constructor): Complain if we
9491         try to assign to/initialize a signature pointer/reference of
9492         an undefined signature.
9493
9494 Mon Jun 27 14:05:16 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
9495
9496         * typeck2.c (store_init_value): Don't be pedantic about
9497         non-constant initializers of signature tables/pointers/references.
9498
9499 Fri Jun 24 16:49:41 1994  Gerald Baumgartner  <gb@cs.purdue.edu>
9500
9501         * decl.c (grokdeclarator): If we are grokking an opaque typedef
9502         in a signature, don't complain about it begin static.
9503
9504 Wed Jun 29 16:44:45 1994  Mike Stump  <mrs@cygnus.com>
9505
9506         Fixes a problem of the this pointer being wrong in virtual calls to
9507         methods that are not overridden in more derived classes.
9508
9509         * class.c (fixup_vtable_delta): New routine.  It will fixup the
9510         delta entries in vtables, wheever they need updating.
9511         * class.c (finish_struct): Call the new routine for all virtual
9512         bases, as they can have different offsets, than those used in base
9513         classes that we derive our vtable from.
9514
9515 Tue Jun 28 23:49:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
9516
9517         * typeck.c (build_binary_op): Use the types before default
9518         conversions in the error message.
9519
9520         * *.c: Use c_build_type_variant instead of build_type_variant where
9521         the type might be an array.
9522
9523         * call.c (build_method_call): Call build_type_variant and
9524         build_reference_type in the right order.
9525         * decl.c (record_builtin_type): Likewise.
9526
9527 Wed Jun 29 16:58:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
9528
9529         * call.c (build_method_call): Call build_type_variant and
9530         build_reference_type in the right order.
9531         * decl.c (record_builtin_type): Likewise.
9532
9533 Tue Jun 28 23:49:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
9534
9535         * typeck.c (build_binary_op): Use the types before default
9536         conversions in the error message.
9537
9538         * *.c: Use c_build_type_variant instead of build_type_variant where
9539         the type might be an array.
9540
9541 Sat Jun 25 11:50:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
9542
9543         * cvt.c (convert_to_reference): Try UDC's before doing the
9544         reinterpret_cast thang, though.
9545
9546 Fri Jun 24 01:24:01 1994  Jason Merrill  <jason@deneb.cygnus.com>
9547
9548         * typeck.c (c_expand_return): Don't USE the return value location
9549         after we've expanded the jump.
9550
9551         * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
9552         trying to write out an inline.
9553
9554         * cvt.c (build_up_reference): Also do address adjustment when the
9555         target type uses MI.
9556         (convert_to_reference): Try UDCs only after built-in conversions.
9557         (build_type_conversion_1): Don't play games with the argument to the
9558         method.
9559         (build_type_conversion): #if 0 out code for binding to reference.
9560
9561 Thu Jun 23 00:22:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
9562
9563         * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
9564         whether to emit inlines.
9565
9566         * decl.c (grokdeclarator): Set explicit_int for decls that just
9567         specify, say, 'long'.
9568
9569         * init.c (do_friend): Do overload C functions (or call pushdecl,
9570         anyaway).
9571
9572 Wed Jun 22 13:40:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
9573
9574         * cvt.c (build_up_reference): Don't call readonly_error.
9575         (convert_to_reference): Propagate const and volatile from expr to
9576         its type.
9577
9578         * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
9579
9580         * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
9581         creating a temporary.
9582         (convert_to_reference): Lose excessive and incorrect trickiness.
9583         (cp_convert): Call build_cplus_new with with_cleanup_p set.
9584
9585         * typeck2.c (build_functional_cast): Likewise.
9586
9587 Tue Jun 21 17:38:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
9588
9589         * decl.c (grokdeclarator): signed, unsigned, long and short all
9590         imply 'int'.
9591
9592         * decl.c (grokdeclarator): Allow "this is a type" syntax.
9593         (grok_reference_init): Simplify and fix.
9594
9595 Sun Jun 19 17:08:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
9596
9597         * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
9598         type.
9599
9600 Sat Jun 18 04:16:50 1994  Jason Merrill  <jason@deneb.cygnus.com>
9601
9602         * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
9603         tinkering to after call to pushdecl.
9604
9605 Fri Jun 17 14:48:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
9606
9607         * call.c (build_method_call): Handle destructors for non-aggregate
9608         types properly.
9609
9610 Thu Jun 16 16:48:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
9611
9612         * call.c (build_method_call): Make sure that the name given for the
9613         destructor matches the constructor_name of the instance.
9614
9615         * pt.c (do_function_instantiation): A non-extern instantiation
9616         overrides a later extern one.
9617         (do_type_instantiation): Likewise.
9618
9619 Wed Jun 15 19:34:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
9620
9621         * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
9622         unqualified array type.
9623
9624         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
9625         CONSTRUCTOR with no elements.
9626
9627         * decl.c (various): Lose empty_init_node.
9628         (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
9629         thing depending on the value of DECL_COMMON instead of
9630         flag_conserve_space, do the empty CONSTRUCTOR thing for types that
9631         don't have constructors, don't treat a real empty CONSTRUCTOR
9632         specially.
9633
9634         * typeck2.c (process_init_constructor): Don't treat empty_init_node
9635         specially.
9636
9637 Wed Jun 15 19:05:25 1994  Mike Stump  <mrs@cygnus.com>
9638
9639         * class.c (override_one_vtable): Don't forget to merge in an old
9640         overrider when we wanted to reuse a vtable, but couldn't.
9641
9642 Wed Jun 15 15:03:16 1994  Jason Merrill  <jason@deneb.cygnus.com>
9643
9644         * decl.c (start_decl): Put statics in common again.
9645
9646         * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
9647         setting the type to error_mark_node.
9648
9649         * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
9650         bitfield assignments.
9651
9652 Tue Jun 14 12:23:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
9653
9654         * decl.c (grok_op_properties): Const objects can be passed by value.
9655
9656 Mon Jun 13 03:10:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
9657
9658         * decl2.c (import_export_vtable): Force implicit instantiations to
9659         be interface_only when -fno-implicit-templates.
9660
9661         * decl.c (duplicate_decls): Redeclaring a class template name is an
9662         error.
9663
9664         * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
9665         * xref.c (GNU_xref_decl): Support templates.
9666
9667 Sat Jun 11 17:09:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
9668
9669         * decl.c (grok_op_properties): Split out checking for whether this
9670         function should suppress the default assignment operator.
9671         * decl2.c (grok_function_init): Likewise.
9672         (copy_assignment_arg_p): New function do do just that.
9673         Now considers virtual assignment operators that take a base as an
9674         argument to count as copy assignment operators.
9675
9676         * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
9677         TREE_ASM_WRITTEN, as they are redundant.
9678
9679         * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
9680         decl that has no LANG_SPECIFIC part.
9681         (do_type_instantiation): Force the debugging information for this
9682         type to be emitted.
9683
9684         * decl.c (start_decl): Clear up uses of various types of templates
9685         (say sorry for static data members, rather than "invalid template"). 
9686         (expand_static_init): Fix initialization of static data members of
9687         template classes.
9688
9689 Fri Jun 10 00:41:19 1994  Jason Merrill  <jason@deneb.cygnus.com>
9690
9691         * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
9692
9693         * g++.c (main): Use -xc++-cpp-output for .i files.
9694
9695         * pt.c (tsubst): Give meaningful error about declaring template for
9696         a copy constructor which was not declared in the class template.
9697         (do_type_instantiation): Explicit instantiation before the class
9698         template is an error.
9699         (instantiate_template): Don't die if tsubst returns error_mark_node.
9700
9701 Thu Jun  9 19:04:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
9702
9703         Don't synthesize the copy assignment operator if the one in a base
9704         class is pure virtual.
9705         * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
9706         whether the type has a pure virtual copy assignment operator.
9707         * class.c (finish_base_struct): Don't generate the copy assignment
9708         operator if a base class has a pure virtual one.
9709         * decl.c (grok_op_properties): Add disabled code to set
9710         TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
9711         actually set.
9712         * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
9713
9714         * decl2.c (import_export_vtable): Always treat template
9715         instantiations as if write_virtuals >= 2, and treat implicit
9716         instantiations as external if -fno-implicit-templates.
9717         (finish_file): Output all pending inlines if
9718         flag_keep_inline_functions.
9719
9720 Wed Jun  8 20:48:02 1994  Mike Stump  <mrs@cygnus.com>
9721
9722         * tree.c (layout_vbasetypes): Align virtual base classes inside
9723         complete objects, so that we don't core dump on machines such as
9724         SPARCs when we access members that require larger than normal
9725         alignments, such as a double.  Also, we bump up the total alignment
9726         on the complete type, as necessary.
9727
9728 Wed Jun  8 16:18:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
9729
9730         * gxxint.texi (Free Store): New section with code for examining
9731         cookie.
9732         (Limitations of g++): Remove operator delete entry, since it is no
9733         longer accurate.  Fix access control entry.
9734
9735         * typeck.c (build_unary_op): Pedwarn about taking the address of or
9736         incrementing a cast to non-reference type.
9737         (build_modify_expr): Use convert instead of convert_force again.
9738
9739         * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
9740         class type, not == RECORD_TYPE.
9741
9742         * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
9743
9744         * typeck2.c (report_case_error): #if 0 out.
9745         * lex.c (real_yylex): Lose RANGE.
9746         * parse.y: Likewise.
9747
9748 Tue Jun  7 18:17:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
9749
9750         * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
9751
9752 Mon Jun  6 19:39:57 1994  Jason Merrill  <jason@deneb.cygnus.com>
9753
9754         * typeck.c (build_c_cast): Don't shortcut conversions to the same
9755         type.  Don't replace consts with their values here, since that's now
9756         done in cp_convert.
9757
9758         * cvt.c (cp_convert): When converting to bool, take
9759         integer_zero_node to false_node and all other INTEGER_CSTs to
9760         true_node.
9761         (build_type_conversion): Don't complain about multiple conversions
9762         to float if we're not really converting.
9763
9764 Fri Jun  3 02:10:56 1994  Jason Merrill  <jason@deneb.cygnus.com>
9765
9766         Implement 'extern template class A<int>;' syntax for suppressing
9767         specific implicit instantiations.
9768         * cp-tree.h: Update prototypes for do_*_instantiation.
9769         * pt.c (do_pending_expansions): Don't compile 'extern' explicit
9770         instantiations.
9771         (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
9772         instantiations.
9773         (do_type_instantiation): Likewise.
9774         * parse.y (explicit_instantiation): Support 'extern template class
9775         A<int>;' syntax.
9776         * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
9777         and DECL_EXTERNAL on explicit instantiations.
9778
9779         * cvt.c (cp_convert): Replace constants with their values before
9780         converting.
9781         (cp_convert): Consistently use 'e' instead of 'expr'.
9782
9783 Thu Jun  2 03:53:30 1994  Jason Merrill  <jason@deneb.cygnus.com>
9784
9785         * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
9786
9787 Wed Jun  1 18:57:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
9788
9789         * typeck2.c (digest_init): Handle initializing a pmf with an
9790         overloaded method.
9791         * typeck.c (build_ptrmemfunc): Handle overloaded methods.
9792
9793         * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
9794         (xref_defn_tag): Likewise.
9795         * pt.c (process_template_parm): Likewise.
9796         (lookup_template_class): Likewise.
9797         (push_template_decls): Likewise.
9798         (instantiate_class_template): Likewise.
9799         (create_nested_upt): Likewise.
9800         * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
9801         TYPE_DECLs.
9802
9803         * typeck.c (convert_arguments): Make sure type is not NULL before
9804         checking its TREE_CODE.
9805
9806 Wed Jun  1 17:40:39 1994  Mike Stump  <mrs@cygnus.com>
9807
9808         * class.c (get_derived_offset): New routine.
9809         * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
9810         BINFO_VIRTUALS when we choose a new base class to inherit from.
9811         * class.c (modify_one_vtable): Use get_derived_offset to get the
9812         offset to the most base class subobject that we derived this binfo
9813         from.
9814         * class.c (finish_struct): Move code to calculate the
9815         DECL_FIELD_BITPOS of the vfield up, as we need might need it for
9816         new calls to get_derived_offset in modify_one_vtable.
9817
9818 Wed Jun  1 16:50:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
9819
9820         * init.c (build_member_call): Use build_pointer_type instead of
9821         TYPE_POINTER_TO.
9822
9823 Wed Jun  1 11:11:15 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
9824
9825         * decl.c (grokdeclarator): Make sure we have a DNAME set before we
9826         try to use it in an error.
9827
9828 Wed Jun  1 09:48:49 1994  Mike Stump  <mrs@cygnus.com>
9829
9830         * typeck.c (convert_arguments, convert_for_initialization): Don't
9831         strip NOP_EXPRs, when we are converting to a reference.
9832
9833 Wed Jun  1 01:11:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
9834
9835         * typeck.c (build_modify_expr): Don't dereference references when
9836         initializing them.
9837
9838         * decl2.c (grokfield): Don't check for grokdeclarator returning
9839         error_mark_node any more.
9840
9841         * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
9842         (start_method): Return void_type_node instead of error_mark_node.
9843
9844         * typeck.c (build_modify_expr): Resolve offset refs earlier.
9845
9846 Tue May 31 16:06:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
9847
9848         * call.c (build_method_call): Resolve OFFSET_REFs in the object.
9849
9850         * typeck.c (build_modify_expr): Dereference references before trying
9851         to assign to them.
9852
9853         * call.c (build_method_call): Don't confuse type conversion
9854         operators with constructors.
9855         * typeck2.c (build_functional_cast): Just call build_c_cast if there
9856         was only one parameter.
9857         * method.c (build_typename_overload): Don't set
9858         IDENTIFIER_GLOBAL_VALUE on these identifiers.
9859         * decl.c (grok_op_properties): Warn about defining a type conversion
9860         operator that converts to a base class (or reference to it).
9861         * cvt.c (cp_convert): Don't try to use a type conversion operator
9862         when converting to a base class.
9863         (build_type_conversion_1): Don't call constructor_name_full on an
9864         identifier.
9865         * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
9866
9867         * decl.c (start_decl): Don't complain that error_mark_node is an
9868         incomplete type.
9869         (finish_decl): Check for type == error_mark_node.
9870
9871 Mon May 30 23:38:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
9872
9873         * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
9874         instantiations and inline members.
9875
9876         * spew.c (yylex): Set looking_for_template if the next token is a '<'.
9877
9878         * lex.h: Declare looking_for_template.
9879
9880         * decl.c (lookup_name_real): Use looking_for_template to arbitrate
9881         between type and template interpretations of an identifier.
9882
9883 Sat May 28 04:07:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
9884
9885         * pt.c (instantiate_template): Zero out p if we found a
9886         specialization.
9887
9888         * decl.c (grokdeclarator): Elucidate warning.
9889         (grokdeclarator): If pedantic AND -ansi, complain about long long.
9890
9891         Make explicit instantiation work reasonably.  It is now appropriate
9892         to deprecate the use of -fexternal-templates.
9893         * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
9894         DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
9895         (end_template_instantiation): Reflect changes in USE_TEMPLATE
9896         semantics.
9897         (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
9898         (do_function_instantiation): Don't set EXPLICIT_INST if
9899         flag_external_templates is set.  Do set TREE_PUBLIC and DECL_EXTERN
9900         appropriately otherwise.
9901         (do_type_instantiation): Set interface info for class.  Set
9902         TREE_PUBLIC and DECL_EXTERN for methods.  Do none of this if
9903         flag_external_templates is set.
9904         * parse.y: Reflect changes in USE_TEMPLATE semantics.
9905         * decl2.c: New flag flag_implicit_templates determines whether or
9906         not implicit instantiations get emitted.  This flag currently
9907         defaults to true, and must be true for -fexternal-templates to work.
9908         (finish_file): Consider flag_implement_inlines when
9909         setting DECL_EXTERNAL.  Consider flag_implicit_templates when
9910         deciding whether or not to emit a static copy.
9911         * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
9912         properly for template instantiations.
9913         (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
9914         template class.
9915         * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
9916         (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
9917         (various others): Accessor macros for the above.
9918
9919 Fri May 27 13:57:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
9920
9921         * typeck.c (build_binary_op_nodefault): Division by constant zero is
9922         an error.
9923
9924 Fri May 27 13:50:15 1994  Mike Stump  <mrs@cygnus.com>
9925
9926         * class.c (override_one_vtable): Don't modify things we don't own.
9927
9928 Fri May 27 01:42:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
9929
9930         * decl.c (finish_decl): Don't postpone processing the initializer of
9931         a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
9932         PUBLIC const at toplevel.
9933         (grokdeclarator): pedwarn about initializing non-const or
9934         non-integral statics in the class body.
9935
9936         * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
9937         TYPE_DECL.
9938
9939         * call.c (convert_harshness): Dereference reference on rhs before
9940         proceeding, properly grok passing const things to non-const
9941         references.
9942
9943         * typeck.c (build_unary_op): Soften error about taking the address
9944         of main() to a pedwarn.
9945
9946         * lex.c (default_copy_constructor_body): Unambiguously specify base
9947         classes (i.e. A((const class ::A&)_ctor_arg) ).
9948         (default_assign_ref_body): Likewise.
9949
9950 Thu May 26 13:13:55 1994  Gerald Baumgartner  <gb@mexican.cygnus.com>
9951
9952         * decl2.c (grokfield): Don't complain about local signature
9953         method declaration without definition.
9954
9955         * call.c (convert_harshness): If `type' is a signature pointer
9956         and `parmtype' is a pointer to a signature, just return 0.  We
9957         don't really convert in this case; it's a result of making the
9958         `this' parameter of a signature method a signature pointer.
9959
9960         * call.c (build_method_call): Distinguish calling the default copy
9961         constructor of a signature pointer/reference from a signature
9962         member function call.
9963
9964 Thu May 26 12:56:25 1994  Jason Merrill  <jason@deneb.cygnus.com>
9965
9966         * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
9967         declarations.
9968
9969         * decl.c (duplicate_decls): A previous function declaration as
9970         static overrides a subsequent non-static definition.
9971         (grokdeclarator): Don't set TREE_PUBLIC on inline method
9972         declarations.
9973
9974 Wed May 25 14:36:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
9975
9976         * decl.c (grokdeclarator): Handle initialization of static const
9977         members.
9978         (finish_decl): Likewise.
9979
9980         * decl2.c (grokfield): Allow initialization of static const members
9981         even when pedantic.
9982
9983         * decl2.c (grokfield): Deal with grokdeclarator returning
9984         error_mark_node.
9985
9986         * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
9987         (grokfndecl): Check the return value of grok_ctor_properties.
9988         (start_method): Likewise.
9989
9990         * parse.y (absdcl): Expand type_quals inline.
9991
9992 Tue May 24 19:10:32 1994  Jason Merrill  <jason@deneb.cygnus.com>
9993
9994         * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
9995         RECORD_TYPE.
9996
9997 Tue May 24 18:09:16 1994  Per Bothner  <bothner@kalessin.cygnus.com>
9998
9999         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
10000         always use "__vt_%s".
10001         * decl2.c (finish_vtable_vardecl):  Don't consider abstract virtuals
10002         when looking for a "sentinal" method (to decide on emitting vtables).
10003         * decl2.c (finish_file):  Scan all decls for thunks that need
10004         to be emitted.
10005         * decl2.c (finish_vtable_vardecl):  Don't bother calling emit_thunk.
10006         * method.c (make_thunk):  Use a more meaningful label.  If there
10007         exists a matching top-level THUNK_DECL re-use it;  otherwise
10008         create a new THUNK_DECL (and declare it).
10009         * method.c (emit_thunk):  Make thunk external/public depending
10010         on the underlying method.
10011
10012 Tue May 24 00:22:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
10013
10014         * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
10015         lookup_name.
10016
10017         * call.c (build_overload_call_real): Don't immediately pick a
10018         function which matches perfectly.
10019
10020         * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
10021         (grokdeclarator): Warn about, and throw away, cv-quals attached to a
10022         reference (like 'int &const j').
10023
10024         * typeck.c (convert_arguments): Don't mess with i for methods.
10025         * call.c (build_method_call): Pass the function decl to
10026         convert_arguments.
10027
10028         * typeck.c (comp_ptr_ttypes_real): New function.  Implements the
10029         checking for which multi-level pointer conversions are allowed.
10030         (comp_target_types): Call it.
10031         (convert_for_assignment): Check const parity on the ultimate target
10032         type, too.  And make those warnings pedwarns.
10033
10034 Mon May 23 14:11:24 1994  Jason Merrill  <jason@deneb.cygnus.com>
10035
10036         * error.c (dump_char): Use TARGET_* for character constants.
10037
10038 Mon May 23 13:03:03 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10039
10040         * tree.c (debug_no_list_hash): Make static.
10041
10042         * decl.c (decls_match): Say the types don't match if newdecl ends up
10043         with a null type, after we've checked if olddecl does.
10044         (pushdecl): Check if the decls themselves match before looking for
10045         an extern redeclared as static, to avoid inappropriate and incorrect
10046         warnings.
10047
10048 Fri May 20 14:04:34 1994  Jason Merrill  <jason@deneb.cygnus.com>
10049
10050         * decl.c (grokdeclarator): Make warning about duplicate short, etc.
10051         a pedwarn.
10052
10053         * typeck.c (build_c_cast): Casting to function or method type is an
10054         error.
10055
10056         * class.c (finish_struct): Make warning for anonymous class with no
10057         instances a pedwarn.
10058
10059         * Makefile.in (stamp-parse): Expect a s/r conflict.
10060
10061         * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
10062         cast as an lvalue.
10063
10064 Thu May 19 12:08:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
10065
10066         * cvt.c (type_promotes_to): Make sure bool promotes to int rather
10067         than unsigned on platforms where sizeof(char)==sizeof(int).
10068
10069 Wed May 18 14:27:06 1994  Jason Merrill  <jason@deneb.cygnus.com>
10070
10071         * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
10072         another variant.
10073         (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
10074         and treat them as lvalues.
10075
10076         * decl.c (shadow_tag): Do complain about forward declarations of
10077         enums and empty declarations.
10078         * parse.y: Don't complain about forward declarations of enums and
10079         empty declarations.
10080
10081         * typeck.c (convert_for_assignment): Complain about changing
10082         the signedness of a pointer's target type.
10083
10084         * parse.y (stmt): Move duplicated code for checking case values from
10085         here.
10086         * decl2.c (check_cp_case_value): To here.  And add a call to
10087         constant_expression_warning.
10088
10089         * typeck.c (convert_for_assignment): Don't complain about assigning
10090         a negative value to bool.
10091
10092         * decl.c (init_decl_processing): Make bool unsigned.
10093
10094         * class.c (finish_struct): Allow bool bitfields.
10095
10096 Wed May 18 12:35:27 1994  Ian Lance Taylor  <ian@tweedledumb.cygnus.com>
10097
10098         * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
10099
10100 Wed May 18 03:28:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
10101
10102         * cvt.c (build_type_conversion): Lose special handling of
10103         truthvalues.
10104
10105         * search.c (dfs_pushdecls): Improve shadowing warning.
10106
10107 Tue May 17 13:34:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
10108
10109         * init.c (build_delete): Throw away const and volatile on `this'.
10110
10111         * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
10112         rather than the enumerators.
10113         (pushtag): s/cdecl/c_decl/g
10114
10115 Mon May 16 23:04:01 1994  Stephen R. van den Berg  <berg@pool.informatik.rwth-aachen.de>
10116
10117         * cp/typeck.c (common_type): Attribute merging.
10118         (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
10119
10120         * cp/parse.y: Revamp attribute parsing.
10121
10122 Mon May 16 01:40:34 1994  Jason Merrill  <jason@deneb.cygnus.com>
10123
10124         * decl.c (shadow_tag): Also check for inappropriate use of auto and
10125         register.
10126
10127         * method.c (build_overload_name): Clarify that the illegal case is a
10128         pointer or reference to array of unknown bound.
10129
10130         * error.c (dump_type_prefix): Print references to arrays properly.
10131
10132         * typeck.c (various): Be more helpful in pointer
10133         comparison diagnostics.
10134
10135         * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again.  Isn't this
10136         fun?
10137
10138         * parse.y: Also catch an error after valid stmts.
10139
10140         * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
10141         const.
10142
10143         * typeck.c (convert_for_initialization): If call to
10144         convert_to_reference generated a diagnostic, print out the parm
10145         number and function decl if any.
10146
10147         * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
10148         specifying a line, not atarg.
10149
10150         * tree.c (build_cplus_method_type): Always make `this' const.
10151
10152         * decl2.c (grokclassfn): If -fthis-is-variable and this function is
10153         a constructor or destructor, make `this' non-const.
10154
10155         * typeck.c (build_modify_expr): Don't warn specially about
10156         assignment to `this' here anymore, since it will be caught by the
10157         usual machinery.
10158
10159         * various: Disallow specific GNU extensions (variable-size arrays,
10160         etc.) when flag_ansi is set, not necessarily when pedantic is set,
10161         so that people can compile with -pedantic-errors for tighter const
10162         checking and such without losing desirable extensions.
10163
10164         * typeck2.c (build_functional_cast): Call build_method_call with
10165         LOOKUP_PROTECT.
10166         (process_init_constructor): Only process FIELD_DECLs.
10167
10168         * decl.c (finish_decl): Also force static consts with no explicit
10169         initializer that need constructing into the data segment.
10170
10171         * init.c (build_delete): Undo last patch, as it interferes with
10172         automatic cleanups.
10173
10174 Sat May 14 01:59:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
10175
10176         * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
10177         code.
10178
10179         * init.c (build_delete): pedwarn about using plain delete to delete
10180         an array.
10181
10182 Fri May 13 16:45:07 1994  Jason Merrill  <jason@deneb.cygnus.com>
10183
10184         * typeck.c (comp_target_types): Be more helpful in contravariance
10185         warnings, and make them pedwarns.
10186
10187         * decl.c (grokdeclarator): Use decl_context to decide whether or not
10188         this is an access declaration.
10189
10190         * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
10191         has a conversion to enum or bool, too.
10192
10193 Fri May 13 16:31:27 1994  Mike Stump  <mrs@cygnus.com>
10194
10195         * method.c (emit_thunk):  Make declaration for
10196         current_call_is_indirect local (needed for hppa).
10197
10198 Fri May 13 16:16:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
10199
10200         * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
10201         (tsubst): Likewise.
10202
10203 Fri May 13 16:23:32 1994  Mike Stump  <mrs@cygnus.com>
10204
10205         * pt.c (tsubst): If there is already a function for this expansion,
10206         use it.
10207         * pt.c (instantiate_template): Likewise.
10208
10209 Fri May 13 10:30:42 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10210
10211         * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
10212         kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
10213         generating debug info for unemitted symbols on some systems.
10214
10215         * cp-tree.h (build_static_cast, build_reinterpret_cast,
10216         build_const_cast): Add declarations.
10217
10218 Fri May 13 09:50:31 1994  Mike Stump  <mrs@cygnus.com>
10219
10220         * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
10221         fix.  We now try get_binfo, and if that doesn't find what we want,
10222         we go back to the old method, which still sometimes fails.
10223
10224 Fri May 13 01:43:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
10225
10226         * parse.y (initdcl): Call cplus_decl_attributes on the right
10227         variable.
10228         * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
10229         void_type_node.
10230
10231         * typeck.c (build_binary_op_nodefault): Change result_type for
10232         comparison ops to bool.
10233         (build_binary_op): Convert args of && and || to bool.
10234         * cvt.c (build_default_binary_type_conversion): Convert args of &&
10235         and || to bool.
10236         (build_default_unary_type_conversion): Convert arg of ! to bool.
10237         (type_promotes_to): bool promotes to int.
10238
10239 Fri May 13 01:43:18 1994  Mike Stump  <mrs@cygnus.com>
10240
10241         Implement the new builtin `bool' type.
10242         * typeck.c (build_binary_op_nodefault): Convert args of && and || to
10243         bool.
10244         (build_unary_op): Convert arg of ! to bool.
10245         * parse.y: Know true and false.  Use bool_truthvalue_conversion.
10246         * method.c (build_overload_value): Know bool.
10247         (build_overload_name): Likewise.
10248         * lex.c (init_lex): Set up RID_BOOL.
10249         * gxx.gperf: Add bool, true, false.
10250         * error.c (*): Know bool.
10251         * decl.c (init_decl_processing): Set up bool, true, false.
10252         * cvt.c (cp_convert): Handle conversion to bool.
10253         (build_type_conversion): Likewise.
10254         * *.c: Accept bool where integers and enums are accepted (use
10255         INTEGRAL_CODE_P macro).
10256
10257 Thu May 12 19:13:54 1994  Richard Earnshaw  <rwe11@cl.cam.ac.uk>
10258
10259         * g++.c: Use #ifdef for __MSDOS__, not #if.
10260
10261 Thu May 12 18:05:18 1994  Mike Stump  <mrs@cygnus.com>
10262
10263         * decl2.c (lang_f_options): Handle -fshort-temps.  -fshort-temps
10264         gives old behavior , and destroys temporaries earlier.  Default
10265         behavior now conforms to the ANSI working paper.
10266
10267 Thu May 12 14:45:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
10268
10269         * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
10270         Use convert_force to convert the result of a recursive call when we
10271         are dealing with a NOP_EXPR.  Don't automatically wrap MODIFY_EXPRs
10272         in COMPOUND_EXPRs any more.
10273         (various): Lose pedantic_lvalue_warning.
10274         (unary_complex_lvalue): Understand MODIFY_EXPR.
10275
10276         * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
10277         we don't know what we're initializing.
10278
10279 Wed May 11 01:59:36 1994  Jason Merrill  <jason@deneb.cygnus.com>
10280
10281         * cvt.c (convert_to_reference): Modify to use convtype parameter.
10282         Only create temporaries when initializing a reference, not when
10283         casting.
10284         (cp_convert): New main function.
10285         (convert): Call cp_convert.
10286         * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
10287         * cp-tree.h (CONV_*): New constants used by conversion code for
10288         selecting conversions to perform.
10289
10290         * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
10291
10292         * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
10293         call build_c_cast.
10294         * parse.y: Add {static,reinterpret,const}_cast.
10295         * gxx.gperf: Likewise.
10296
10297         * typeck.c (common_type): Allow methods with basetypes of different
10298         UPTs.
10299         (comptypes): Deal with UPTs.
10300         (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
10301
10302         * pt.c (end_template_decl): Check for multiple definitions of member
10303         templates.
10304
10305         * call.c (build_method_call): Complain about calling an abstract
10306         virtual from a constructor.
10307
10308         * typeck.c (pointer_int_sum): Check for the integer operand being 0
10309         after checking the validity of the pointer operand.
10310
10311         * typeck2.c (digest_init): Pedwarn about string initializer being
10312         too long.
10313
10314 Tue May 10 12:10:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
10315
10316         * decl.c (push_overloaded_decl): Only throw away a builtin if the
10317         decl in question is the artificial one.
10318
10319         * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
10320         expand_{start,end}_case cannot happen in the middle of a block.
10321
10322         * cvt.c (build_type_conversion_1): Use convert again.
10323
10324 Tue May 10 11:52:04 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10325
10326         * typeck2.c (digest_init): Make sure we check for signed and
10327         unsigned chars as well when warning about string initializers.
10328
10329         * init.c (emit_base_init): Check if there's a DECL_NAME on the
10330         member before trying to do an initialization for it.
10331
10332 Tue May 10 11:34:37 1994  Mike Stump  <mrs@cygnus.com>
10333
10334         * except.c: Don't do anything useful when cross compiling.
10335
10336 Tue May 10 03:04:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
10337
10338         * decl.c (duplicate_decls): Fix up handling of builtins yet again.
10339         (push_overloaded_decl): Likewise.
10340
10341         * cvt.c (convert): Don't look for void type conversion.
10342
10343 Mon May  9 18:05:41 1994  Jason Merrill  <jason@deneb.cygnus.com>
10344
10345         * init.c (do_friend): Only do a pushdecl for friends, not
10346         pushdecl_top_level.
10347
10348 Mon May  9 13:36:34 1994  Jim Wilson  <wilson@sphagnum.cygnus.com>
10349
10350         * decl.c (lookup_name_current_level): Put empty statement after
10351         the label OUT to make the code valid C.
10352
10353 Mon May  9 12:20:57 1994  Jason Merrill  <jason@deneb.cygnus.com>
10354
10355         * typeck.c (build_binary_op_nodefault): Only complain about
10356         comparing void * and a function pointer if void * is smaller.
10357
10358 Sun May  8 01:29:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
10359
10360         * decl.c (lookup_name_current_level): Move through temporary binding
10361         levels.
10362
10363         * parse.y (already_scoped_stmt): Revive.
10364         (simple_stmt): Use it again.
10365
10366         * decl.c (poplevel): Always call poplevel recursively if we're
10367         dealing with a temporary binding level.
10368
10369 Sat May  7 10:52:28 1994  Mike Stump  <mrs@cygnus.com>
10370
10371         * decl.c (finish_decl): Make sure we run cleanups for initial values
10372         of decls.  Cures memory leak.
10373         * decl.c (expand_static_init): Likewise for static variables.
10374         * decl2.c (finish_file): Likewise for globals.
10375
10376 Sat May  7 03:57:44 1994  Jason Merrill  <jason@deneb.cygnus.com>
10377
10378         * typeck.c (commonparms): Don't complain about redefining default
10379         args.
10380
10381         * decl.c (duplicate_decls): Don't complain twice about conflicting
10382         function decls.
10383         (decls_match): Don't look at default args.
10384         (redeclaration_error_message): Complain about redefining default
10385         args.
10386
10387         * call.c (build_overload_call_real): Also deal with guiding
10388         declarations coming BEFORE the template decl.
10389
10390         * pt.c (unify): Allow different parms to have different
10391         cv-qualifiers.
10392         (unify): Allow trivial conversions on non-template parms.
10393
10394 Fri May  6 03:53:23 1994  Jason Merrill  <jason@deneb.cygnus.com>
10395
10396         * pt.c (tsubst): Support OFFSET_TYPEs.
10397         (unify): Likewise.
10398
10399         * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
10400
10401         * init.c (build_offset_ref): Fix error message.
10402         * search.c (lookup_field): Likewise.
10403
10404         * call.c (build_scoped_method_call): Pass binfo to
10405         build_method_call.
10406         * typeck.c (build_object_ref): Likewise.
10407
10408         * typeck2.c (binfo_or_else): Don't return a _TYPE.
10409
10410         * class.c (finish_struct): Don't complain about re-use of inherited
10411         names or shadowing of type decls.
10412         * decl.c (pushdecl_class_level): Likewise.
10413
10414         * decl.c (finish_enum): Set the type of all the enums.
10415
10416         * class.c (finish_struct): Don't get confused by access decls.
10417
10418         * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
10419         _TYPE.  You can stop using TYPE_NAME for that now.
10420
10421         * parse.y: Lose doing_explicit (check $0 instead).
10422         * gxx.gperf: 'template' now has a RID.
10423         * lex.h (rid): Likewise.
10424         * lex.c (init_lex): Set up the RID for 'template'.
10425
10426         * parse.y (type_specifier_seq): typed_typespecs or
10427         nonempty_type_quals.  Use it.
10428         (handler_args): Fix bogus syntax.
10429         (raise_identifier{,s}, optional_identifier): Lose.
10430         * except.c (expand_start_catch_block): Use grokdeclarator to parse
10431         the catch variable.
10432         (init_exception_processing): The second argument to
10433         __throw_type_match is ptr_type_node.
10434
10435         Fri May  6 07:18:54 1994  Chip Salzenberg  <chip@fin.uucp>
10436
10437         [ change propagated from c-decl.c of snapshot 940429 ]
10438         * cp/decl.c (finish_decl): Setting asmspec_tree should not
10439         zero out the old RTL.
10440
10441 Fri May  6 01:25:38 1994  Mike Stump  <mrs@cygnus.com>
10442
10443         Add alpha exception handling support to the compiler.
10444         Quick and dirty backend in except.c.
10445
10446         * cp/*:  Remove most remnants of old exception handling support.
10447         * decl.c (finish_function): Call expand_exception_blocks to put
10448         the exception hanlding blocks at the end of the function.
10449         * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
10450         comes after expand_decl_init.
10451         * except.c: Reimplementation.
10452         * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
10453         * lex.c (init_lex): Always have catch, try and throw be reserved
10454         words, so that we may always parse exception handling.
10455         * parse.y: Cleanup to support new interface into exception handling.
10456         * tree.def (THROW_EXPR): Add.
10457
10458 Thu May  5 17:35:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
10459
10460         * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
10461         (various): Lose .kindof_pushlevel and partially_scoped_stmt.
10462
10463 Thu May  5 16:17:27 1994  Kung Hsu  <kung@mexican.cygnus.com>
10464
10465         * parse.y (already_scoped_stmt): move expand_end_binding() to
10466         fix the unmatched LBB/LBE in stabs.
10467
10468 Thu May  5 14:36:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
10469
10470         * decl.c (set_nested_typename): Set TREE_MANGLED on the new
10471         identifiers.
10472         (pushdecl): Check TREE_MANGLED.
10473         (xref_tag): Likewise.
10474         * cp-tree.h (TREE_MANGLED): This identifier is a
10475         DECL_NESTED_TYPENAME (named to allow for future use to denote
10476         mangled function names as well).
10477
10478         Implement inconsistency checking specified in [class.scope0].
10479         * decl.c (lookup_name_real): Don't set ICV here after all.
10480         (finish_enum): Also set the type of the enumerators themselves.
10481         (build_enumerator): Put the CONST_DECL in the list instead of its
10482         initial value.
10483         (pushdecl_class_level): Check inconsistent use of a name in the
10484         class body.
10485         * class.c (finish_struct): Check inconsistent use of a name in the
10486         class body.  Don't set DECL_CONTEXT on types here anymore.
10487         * parse.y (qualified_type_name): Note that the identifier has now
10488         been used (as a type) in the class body.
10489         * lex.c (do_identifier): Note that the identifier has now been used
10490         (as a constant) in the class body.
10491         * error.c (dump_decl): Print type and enum decls better.
10492
10493 Thu May  5 09:35:35 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
10494
10495         * typeck.c (build_modify_expr): Warn about assignment to `this'.
10496
10497 Wed May  4 15:55:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
10498
10499         * init.c (build_delete): Use the global operator delete when
10500         requested.
10501
10502         * decl.c (lookup_name_real): If we find the type we're looking in a
10503         base class while defining a class, set IDENTIFIER_CLASS_VALUE for
10504         the type.
10505
10506         * class.c (finish_struct): Remove a couple of dependencies on
10507         language linkage.
10508
10509         * decl.c (pushtag): Classes do nest in extern "C" blocks.
10510         (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
10511         the type.
10512         (pushtag): Remove another dependency on the language linkage.
10513
10514         * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
10515         a const-qualified type.
10516
10517         * decl.c (push_overloaded_decl): Throw away built-in decls here.
10518         (duplicate_decls): Instead of here.
10519
10520 Wed May  4 15:27:40 1994  Per Bothner  <bothner@kalessin.cygnus.com>
10521
10522         * typeck.c (get_member_function_from_ptrfunc):  Do The Right
10523         Thing (I hope) if we're using thunks.
10524
10525 Wed May  4 13:52:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
10526
10527         * parse.y (specialization): aggr template_type_name ';'.
10528         (named_class_head_sans_basetype): Use it.
10529         (explicit_instantiation): Likewise.
10530         (tmpl.2): Revert.
10531
10532         * cvt.c (build_type_conversion_1): Use convert_for_initialization,
10533         rather than convert, to do conversions after the UDC.
10534
10535         * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
10536         instances of the class.
10537
10538         * search.c (lookup_field): If the entity found by two routes is the
10539         same, it's not ambiguous.
10540
10541 Wed May  4 12:10:00 1994  Per Bothner  <bothner@kalessin.cygnus.com>
10542
10543         * decl.c (lookup_name_real):  Check for a NULL TREE_VALUE,
10544         to prevent the compiler from crashing ...
10545
10546 Wed May  4 11:19:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
10547
10548         * call.c (build_method_call): If we don't have an object, check
10549         basetype_path to figure out where to look up the function.
10550
10551         * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
10552         build_method_call in case exp is NULL_TREE.
10553
10554 Tue May  3 16:02:53 1994  Per Bothner  <bothner@kalessin.cygnus.com>
10555
10556         Give a vtable entries a unique named type, for the sake of gdb.
10557         * class.c (build_vtable_entry):  The addres of a thunk now has
10558         type vtable_entry_type, not ptr_type_node.
10559         * method.c (make_thunk):  Fix type of THUNK_DECL.
10560         * class.c (add_virtual_function, override_one_vtable):  Use
10561         vfunc_ptr_type_node, instead of ptr_type_node.
10562         * cp-tree.h (vfunc_ptr_type_node):  New macro.
10563         * decl.c (init_decl_processing):  Make vtable_entry_type
10564         be a unique type of pointer to a unique function type.
10565
10566 Tue May  3 09:20:44 1994  Jason Merrill  <jason@deneb.cygnus.com>
10567
10568         * parse.y (do_explicit): Sets doing_explicit to 1.
10569         (explicit_instantiation): Use do_explicit rather than TEMPLATE
10570         directly, add "do_explicit error" rule.
10571         (datadef): Set doing_explicit to 0 after an explicit instantiation.
10572         (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
10573         explicit instantiation.
10574         (named_class_head_sans_basetype): Remove aggr template_type_name
10575         ';' again.
10576
10577 Mon May  2 23:17:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
10578
10579         * search.c (lookup_nested_tag): Lose.
10580
10581         * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
10582         (lookup_name_nonclass): Lose.
10583
10584         * decl.c (poplevel_class): Add force parameter.
10585         (lookup_name_real): Fix handling of explicit scoping which specifies
10586         a class currently being defined.  Add 'nonclass' argument.
10587         (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
10588
10589         * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
10590         (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
10591         called from finish_struct.
10592
10593 Mon May  2 19:06:21 1994  Per Bothner  <bothner@kalessin.cygnus.com>
10594
10595         * decl.c (init_decl_processing), cp-tree.h:  Removed memptr_type.
10596         (It seeems redundant, given build_ptrmemfunc_type.)
10597         * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
10598         build_classof):  Use vtable_entry_type instead of memptr_type.
10599         * method.c (emit_thunk):  Call poplevel with functionbody==0
10600         to prevent DECL_INITIAL being set to a BLOCK.
10601
10602 Mon May  2 15:02:11 1994  Jason Merrill  <jason@deneb.cygnus.com>
10603
10604         * parse.y (named_class_head_sans_basetype): Add "aggr
10605         template_type_name ';'" rule for forward declaration of
10606         specializations.
10607
10608 Mon May  2 15:02:11 1994  Jason Merrill  <jason@deneb.cygnus.com>
10609
10610         * class.c (instantiate_type): Deal with pmf's.
10611
10612         * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
10613         stamp-objlist does.
10614
10615         * Makefile.in (../cc1plus): Depend on OBJDEPS.
10616         (OBJDEPS): Dependency version of OBJS.
10617
10618 Mon May  2 12:51:31 1994  Kung Hsu  <kung@mexican.cygnus.com>
10619
10620         * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
10621         DECL_IGNORED_P.
10622
10623 Fri Apr 29 12:29:56 1994  Jason Merrill  <jason@deneb.cygnus.com>
10624
10625         * class.c (finish_struct): Clear out memory of local tags.  And
10626         typedefs.
10627
10628         * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
10629         type.
10630         * search.c (get_matching_virtual): Be more helpful in error message.
10631
10632         * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
10633
10634         * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
10635         (default_copy_constructor_body): Likewise.
10636
10637         * class.c (finish_struct): Don't gratuitously create multiple decls
10638         for nested classes.
10639
10640 Thu Apr 28 23:39:38 1994  Jason Merrill  <jason@deneb.cygnus.com>
10641
10642         Avoid clobbering the arg types of other functions when reverting
10643         static member functions.
10644         * decl.c (revert_static_member_fn): Rearrange arguments, don't
10645         require values for 'fn' and 'argtypes', add warning to comment
10646         above.
10647         (decls_match): Rearrange arguments in call to rsmf.
10648         (grok_op_properties): Don't pass values for fn and argtypes.
10649         * pt.c (instantiate_template): Don't pass values for fn and argtypes.
10650
10651 Thu Apr 28 16:29:11 1994  Doug Evans  <dje@canuck.cygnus.com>
10652
10653         * Make-lang.in (cc1plus): Depend on stamp-objlist.
10654         * Makefile.in (BC_OBJS): Delete.
10655         (OBJS): Cat ../stamp-objlist to get language independent files.
10656         Include ../c-common.o.
10657         (../cc1plus): Delete reference to BC_OBJS.
10658
10659 Thu Apr 28 02:12:08 1994  Jason Merrill  <jason@deneb.cygnus.com>
10660
10661         * search.c (compute_access): No really, deal with static members
10662         properly.  Would I lie to you?
10663
10664         Implement lexical hiding of function declarations.
10665         * pt.c (tsubst): Use lookup_name to look for function decls to guide
10666         instantiation.
10667         * method.c (build_opfncall): Use lookup_name_nonclass to look for
10668         non-member functions.
10669         * init.c (do_friend): Use lookup_name_nonclass to look for
10670         functions.
10671         * error.c (ident_fndecl): Use lookup_name to look for functions.
10672         * decl2.c (lookup_name_nonclass): New function, skips over
10673         CLASS_VALUE.
10674         * decl.c (struct binding_level): Lose overloads_shadowed field.
10675         (poplevel): Don't deal with overloads_shadowed.
10676         (push_overloaded_decl): Do lexical hiding for functions.
10677         * class.c (instantiate_type): Don't check non-members if we have
10678         members with the same name.
10679         * call.c (build_method_call): Use lookup_name_nonclass instead of
10680         IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
10681         (build_overload_call_real): Likewise.
10682
10683         * decl.c (duplicate_decls): Check for ambiguous overloads here.
10684         (push_overloaded_decl): Instead of here.
10685         
10686         * decl.c (pushdecl): Back out Chip's last change.
10687
10688         * decl.c (grok_op_properties): operators cannot be static members.
10689
10690         * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
10691         (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
10692         * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
10693
10694         * method.c (do_inline_function_hair): Don't put friends of local
10695         classes into global scope, either.
10696
10697         * typeck2.c (build_functional_cast): Don't look for a function call
10698         interpretation.
10699
10700 Thu Apr 28 15:19:46 1994  Mike Stump  <mrs@cygnus.com>
10701
10702         * cp-tree.h: disable use of backend EH.
10703
10704 Wed Apr 27 21:01:24 1994  Doug Evans  <dje@canuck.cygnus.com>
10705
10706         * Make-lang.in (c++.distdir): mkdir tmp/cp first.
10707         * Makefile.in (INCLUDES): Move definition to same place as
10708         parent makefile.
10709         (ALLOCA): Define.
10710         (OLDAR_FLAGS): Delete.
10711         (OLDCC): Define.
10712         (DIR): Delete.
10713         (CLIB): Define.
10714         (####site): Delete.
10715         (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
10716
10717 Wed Apr 27 19:10:04 1994  Kung Hsu  <kung@mexican.cygnus.com>
10718
10719         * decl.c (xref_tag): not to use strstr(), it's not available on
10720         all platforms.
10721
10722 Wed Apr 27 18:10:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
10723
10724         * class.c (finish_struct): Resolve yet another class/pmf confusion.
10725
10726         * call.c (build_overload_call_real): Don't take the single-function
10727         shortcut if we're dealing with an overloaded operator.
10728
10729 Wed Apr 27 17:35:37 1994  Mike Stump  <mrs@cygnus.com>
10730
10731         * search.c (get_base_distance): Search the virtual base class
10732         binfos, incase someone wants to convert to a real virtual base
10733         class.
10734         * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
10735         instead of convert_pointer_to, as it now will work.
10736
10737 Wed Apr 27 15:36:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
10738
10739         * cvt.c (convert_to_reference): Don't complain about casting away
10740         const and volatile.
10741
10742         * typeck.c (build_unary_op): References are too lvalues.
10743
10744 Wed Apr 27 13:58:05 1994  Mike Stump  <mrs@cygnus.com>
10745
10746         * class.c (override_one_vtable): We have to prepare_fresh_vtable
10747         before we modify it, not after, also, we cannot reuse an old vtable,
10748         once we commit to a new vtable.  Implement ambiguous overrides in
10749         virtual bases as abstract.  Hack until we make the class
10750         ill-formed.
10751
10752 Wed Apr 27 01:17:08 1994  Jason Merrill  <jason@deneb.cygnus.com>
10753
10754         * parse.y (unary_expr): Expand new_placement[opt] and
10755         new_initializer[opt] inline.
10756
10757         * search.c (lookup_fnfields): Don't throw away the inheritance
10758         information here, either.
10759         (compute_access): Handle static members properly.
10760
10761         * init.c (build_member_call): Always set basetype_path, and pass it
10762         to lookup_fnfields.
10763
10764         * search.c (lookup_field): Deal properly with the case where
10765         xbasetype is a chain of binfos; don't throw away the inheritance
10766         information.
10767         (compute_access): protected_ok always starts out at 0.
10768
10769         * init.c (resolve_offset_ref): Don't cast `this' to the base type
10770         until we've got our basetype_path.
10771
10772         * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
10773
10774         * cvt.c (build_up_reference): Use build_pointer_type rather than
10775         TYPE_POINTER_TO.
10776
10777         * call.c (convert_harshness_ansi): Call type_promotes_to for reals
10778         as well.
10779
10780         * cvt.c (type_promotes_to): Retain const and volatile, add
10781         float->double promotion.
10782
10783         * decl.c (grokdeclarator): Don't bash references to arrays into
10784         references to pointers in function parms.  Use type_promotes_to.
10785
10786 Tue Apr 26 23:44:36 1994  Mike Stump  <mrs@cygnus.com>
10787
10788         Finish off Apr 19th work.
10789
10790         * class.c (finish_struct_bits): Rename has_abstract_virtuals to
10791         might_have_abstract_virtuals.
10792         * class.c (strictly_overrides, override_one_vtable,
10793         merge_overrides): New routines to handle virtual base overrides.
10794         * class.c (finish_struct): Call merge_overrides to handle overrides
10795         in virtual bases.
10796
10797 Tue Apr 26 12:45:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
10798
10799         * typeck.c (build_function_call): Call build_function_call_real with
10800         LOOKUP_NORMAL.
10801
10802         * *: Don't deal with TYPE_EXPRs.
10803
10804         * tree.c (lvalue_p): If the type of the expression is a reference,
10805         it's an lvalue.
10806
10807         * cvt.c (convert_to_reference): Complain about passing const
10808         lvalues to non-const references.
10809         (convert_from_reference): Don't arbitrarily throw away const and
10810         volatile on the target type.
10811
10812         * parse.y: Simplify and fix rules for `new'.
10813
10814         * decl.c (grok_op_properties): operator void is illegal.
10815
10816 Mon Apr 25 02:36:28 1994  Jason Merrill  <jason@deneb.cygnus.com>
10817
10818         * parse.y (components): Anonymous bitfields can still have declspecs.
10819
10820         * decl.c (pushdecl): Postpone handling of function templates like we
10821         do C functions.
10822
10823         * search.c (expand_indirect_vtbls_init): Fix infinite loop when
10824         convert_pointer_to fails.
10825
10826         * call.c (compute_conversion_costs_ansi): A user-defined conversion
10827         by itself is better than that UDC followed by standard conversions.
10828         Don't treat integers and reals specially.
10829
10830         * cp-tree.h: Declare flag_ansi.
10831
10832         * typeck.c (c_expand_return): pedwarn on return in void function
10833         even if the expression is of type void.
10834         (build_c_cast): Don't do as much checking for casts to void.
10835         (build_modify_expr): pedwarn about array assignment if this code
10836         wasn't generated by the compiler.
10837
10838         * tree.c (lvalue_p): A comma expression is an lvalue if its second
10839         operand is.
10840
10841         * typeck.c (default_conversion): Move code for promoting enums and
10842         ints from here.
10843         * cvt.c (type_promotes_to): To here.
10844         * call.c (convert_harshness_ansi): Use type_promotes_to.  Also fix
10845         promotion semantics for reals.
10846
10847 Sun Apr 24 16:52:51 1994  Doug Evans  <dje@canuck.cygnus.com>
10848
10849         * Make-lang.in (c++.install-common): Check for g++-cross.
10850         * Makefile.in: Remove Cygnus cruft.
10851         (config.status): Delete.
10852         (RTL_H): Define.
10853         (TREE_H): Use complete pathname, some native makes have minimal
10854         VPATH support.
10855         (*.o): Use complete pathname to headers in parent dir.
10856         (doc, info, dvi): Delete.
10857
10858 Sun Apr 24 16:52:51 1994  Doug Evans  <dje@canuck.cygnus.com>
10859
10860         * Make-lang.in (c++.install-common): Check for g++-cross.
10861         * Makefile.in: Remove Cygnus cruft.
10862         (config.status): Delete.
10863         (RTL_H): Define.
10864         (TREE_H): Use complete pathname, some native makes have minimal
10865         VPATH support.
10866         (*.o): Use complete pathname to headers in parent dir.
10867         (doc, info, dvi): Delete.
10868
10869 Sun Apr 24 00:47:49 1994  Jason Merrill  <jason@deneb.cygnus.com>
10870
10871         * decl.c (pushdecl): Avoid redundant warning on redeclaring function
10872         with different return type.
10873         (decls_match): Compare return types strictly.
10874
10875 Fri Apr 22 12:55:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
10876
10877         * cvt.c (build_type_conversion): Do try to convert through other
10878         pointers.  This will fail if the class defines multiple pointer
10879         conversions.
10880
10881         * error.c (dump_type_prefix): Print out pointers to arrays properly.
10882         (dump_type_suffix): Likewise.  (was 'int *[]', now 'int (*)[]')
10883
10884         * typeck.c (build_unary_op): Disallow ++/-- on pointers to
10885         incomplete type.
10886
10887         * decl.c (duplicate_decls): Check mismatched TREE_CODES after
10888         checking for shadowing a builtin.  If we're redeclaring a builtin
10889         function, bash the old decl to avoid an ambiguous overload.
10890
10891         * cvt.c (convert_to_reference): Don't force arrays to decay here.
10892
10893         * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
10894
10895         * decl.c (duplicate_decls): Don't assume that the decls will have
10896         types.
10897
10898         Mon Apr 18 11:35:32 1994  Chip Salzenberg  <chip@fin.uucp>
10899
10900         [ cp/* changes propagated from c-* changes in 940318 snapshot ]
10901         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
10902         in a global scope.
10903
10904         Fri Apr 22 06:38:56 1994  Chip Salzenberg  <chip@fin.uucp>
10905
10906         * cp/typeck2.c (signature_error): Use cp_error for "%T".
10907
10908         Mon Apr 18 11:59:59 1994  Chip Salzenberg  <chip@fin.uucp>
10909
10910         [ cp/* changes propagated from c-* changes in 940415 snapshot ]
10911         * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
10912         Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
10913
10914         Mon Apr 18 11:55:18 1994  Chip Salzenberg  <chip@fin.uucp>
10915
10916         [ cp/* changes propagated from c-* changes in 940409 snapshot ]
10917         * cp/decl.c (duplicate_decls): Put new type in same obstack as
10918         old ones, or permanent if old ones in different obstacks.
10919
10920         Mon Apr 18 11:48:49 1994  Chip Salzenberg  <chip@fin.uucp>
10921
10922         [ cp/* changes propagated from c-* changes in 940401 snapshot ]
10923         * cp/parse.y (attrib): Handle string args as expressions,
10924         merging the two rules.  `mode' attribute now takes a string arg.
10925         Delete the rule for an identifier as arg.
10926
10927         Mon Apr 18 11:24:00 1994  Chip Salzenberg  <chip@fin.uucp>
10928
10929         [ cp/* changes propagated from c-* changes in 940312 snapshot ]
10930         * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
10931         (pointer_diff): Likewise the division.
10932
10933         Sun Mar  6 19:43:39 1994  Chip Salzenberg  <chip@fin.uucp>
10934
10935         [ cp/* changes propagated from c-* changes in 940304 snapshot ]
10936         * cp/decl.c (finish_decl): Issue warning for large objects,
10937         if requested.
10938
10939         Sat Feb 19 22:20:32 1994  Chip Salzenberg  <chip@fin.uucp>
10940
10941         [ cp/* changes propagated from c-* changes in 940218 snapshot ]
10942         * cp/parse.y (attrib): Handle attribute ((section ("string"))).
10943         * cp/decl.c (duplicate_decls): Merge section name into new decl.
10944
10945         Tue Feb  8 09:49:17 1994  Chip Salzenberg  <chip@fin.uucp>
10946
10947         [ cp/* changes propagated from c-* changes in 940206 snapshot ]
10948         * cp/typeck.c (signed_or_unsigned_type): Check for any
10949         INTEGRAL_TYPE_P not just INTEGER_TYPE.
10950
10951         Mon Dec  6 13:35:31 1993  Norbert Kiesel  (norbert@i3.INformatik.rwth-aachen.DE)
10952
10953         * cp/decl.c (finish_enum): Start from 0 when determining precision
10954         for short enums.
10955
10956         Fri Dec  3 17:07:58 1993  Ralph Campbell  (ralphc@pyramid.COM)
10957
10958         * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
10959         casting $$.
10960
10961         Wed Nov 17 19:22:09 1993  Chip Salzenberg  <chip@fin.uucp>
10962
10963         * cp/typeck.c (build_binary_op_nodefault): Propagate code
10964         from C front-end to optimize unsigned short division.
10965         (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
10966
10967         Wed Nov 17 19:17:18 1993  Chip Salzenberg  <chip@fin.uucp>
10968
10969         * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
10970         constant, prefer 'const char &' to 'int'.
10971
10972         Wed Feb  3 13:11:48 1993  Chip Salzenberg  <chip@fin.uucp>
10973
10974         * cp/class.c (finish_struct_methods):  Handle multiple
10975         constructors in fn_fields list.
10976
10977 Fri Apr 22 12:48:10 1994  Kung Hsu  <kung@mexican.cygnus.com>
10978
10979         * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
10980         types not to be dumped in stabs, like types in #pragma interface.
10981         * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
10982         mark unknown type.
10983
10984 Fri Apr 22 03:27:26 1994  Doug Evans  <dje@cygnus.com>
10985
10986         * Language directory reorganization.
10987         See parent makefile.
10988
10989 Thu Apr 21 18:27:57 1994  Per Bothner  <bothner@kalessin.cygnus.com>
10990
10991         * cp-tree.h (THUNK_DELTA):  It is normally negative, so
10992         use signed .i variant of frame_size rather than unsigned .u.
10993         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
10994         use "VT" rather than "vt" due to binary incompatibility.
10995         * class.c (get_vtable_name):  Use strlen of VTABLE_NAME_FORMAT,
10996         rather than sizeof, since it is now an expression.
10997         * class.c (modify_one_vtable):  Modify to skip initial element
10998         containing a count of the vtable.
10999
11000 Thu Apr 21 00:09:02 1994  Jason Merrill  <jason@deneb.cygnus.com>
11001
11002         * lex.c (check_newline): Force interface_unknown on main input file.
11003
11004         * pt.c (do_pending_expansions): Always emit functions that have been
11005         explicitly instantiated.
11006         (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
11007         (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
11008         DECL_EXPLICITLY_INSTANTIATED on all my methods.
11009         * parse.y (explicit_instantiation): Call do_type_instantiation for
11010         types.
11011         * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
11012         * decl.c (start_function): Don't set DECL_EXTERNAL on a function
11013         that has been explicitly instantiated.
11014         * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
11015         DECL_LANG_FLAG_4.
11016         * class.c: Move import_export_vtable to decl2.c, and comment out all
11017         uses.
11018
11019 Wed Apr 20 16:51:06 1994  Jason Merrill  <jason@deneb.cygnus.com>
11020
11021         * lex.c (process_next_inline): Don't muck with DECL_INLINE.
11022         (do_pending_inlines): Likewise.
11023
11024 Tue Apr 19 22:25:41 1994  Mike Stump  <mrs@cygnus.com>
11025
11026         Reimplement vtable building, and most vtable pointer setting.
11027         Allows for earier maintenance, easier understandability, and most
11028         importantly, correct semantics.
11029
11030         * class.c (build_vtable): Removed unneeded
11031         SET_BINFO_VTABLE_PATH_MARKED.
11032         * class.c (prepare_fresh_vtable): Likewise.  Added argument.
11033         * class.c (modify_vtable_entry): General cleanup.
11034         * class.c (related_vslot, is_normal, modify_other_vtable_entries,
11035         modify_vtable_entries): Removed.
11036         * class.c (add_virtual_function): General cleanup.
11037         * class.c (finish_base_struct): Setup BINFO_VTABLE and
11038         BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
11039         work.
11040         * class.c (finish_vtbls): New routine, mostly from
11041         unmark_finished_struct.
11042         * class.c (overrides): New routine.
11043         * class.c (modify_one_vtable): New routine, mostly from
11044         modify_other_vtable_entries and modify_vtable_entries.
11045         * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
11046         modify_all_vtables): New routines.
11047         * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
11048         call.  General cleanup on how pending_hard_virtuals are handled.
11049         General cleanup on modifying vtables.  Use finish_vtbls, instead of
11050         unmark_finished_struct.
11051         * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
11052         get_first_matching_virtual, get_matching_virtual,
11053         expand_vbase_vtables_init,  expand_indirect_vtbls_init): Update.
11054         * cvt.c (convert_pointer_to_real): cleanup error message.
11055         * decl.c (grokfndecl): General cleanup.
11056         * decl.c (finish_function): Change init_vtbl_ptrs call to
11057         expand_direct_vtbls_init.  Change expand_vbase_vtables_init call to
11058         expand_indirect_vtbls_init.
11059         * init.c (expand_virtual_init): Remove unneeded argument.
11060         * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
11061         two arguments to make more general.  Made more general.  Now can be
11062         used for vtable pointer initialization from virtual bases.
11063         * init.c (emit_base_init): Change expand_vbase_vtables_init call to
11064         expand_indirect_vtbls_init.  Change init_vtbl_ptrs call to
11065         expand_direct_vtbls_init.
11066         * init.c (expand_virtual_init): General cleanup.
11067         * init.c (expand_default_init): Change expand_vbase_vtables_init
11068         call to expand_indirect_vtbls_init.
11069         * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
11070         call to expand_indirect_vtbls_init.
11071         * init.c (expand_recursive_init): Change expand_vbase_vtables_init
11072         call to expand_indirect_vtbls_init.
11073         * search.c (get_first_matching_virtual): Rename to
11074         get_matching_virtual.  General cleanup and remove setting of
11075         DECL_CONTEXT.  That is now done in a cleaner way in
11076         modify_vtable_entry and add_virtual_function.
11077         * search.c (expand_vbase_vtables_init): Rename to
11078         expand_indirect_vtbls_init.  General cleanup.  Use
11079         expand_direct_vtbls_init to do hard work.  Ensures that _all_ vtable
11080         pointers from virtual bases are set up.
11081         * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
11082         Removed.
11083
11084         * *.[chy]: Remove support for VTABLE_USES_MASK.
11085
11086 Tue Apr 19 12:51:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
11087
11088         * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
11089         reference and pointer types instead of bashing the types directly.
11090
11091         * call.c (build_overload_call_real): Use the TREE_CODE to determine
11092         whether the function is overloaded or not, rather than
11093         TREE_OVERLOADED.
11094         * *: Remove all uses of TREE_OVERLOADED.
11095
11096         * decl.c (grokdeclarator): Only complain about initializing const
11097         fields when -ansi or -pedantic.
11098
11099 Tue Apr 19 12:42:42 1994  Doug Evans  <dje@canuck.cygnus.com>
11100
11101         * cp-tree.h (THUNK_DELTA): frame_size is now a union.
11102
11103 Mon Apr 18 00:17:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
11104
11105         Do overloading on a block-by-block basis, not function-by-function.
11106         * decl.c: Lose overloads_to_forget.
11107         (struct binding_level): Add overloads_shadowed field.
11108         (poplevel): Restore overloads_shadowed.
11109         (push_overloaded_decl): Use overloads_shadowed instead of
11110         overloads_to_forget.
11111         (finish_function): Don't look at overloads_to_forget.
11112
11113         Copy enum_overflow logic from c-decl.c.
11114         * decl.c (start_enum): Initialize enum_overflow.
11115         (build_enumerator): Use enum_overflow.  Also use current_scope().
11116
11117         * search.c (current_scope): Move Brendan's comment from
11118         build_enumerator here.
11119
11120         * typeck.c (convert_for_assignment): Change warnings to pedwarns for
11121         discarding const/volatile.
11122
11123 Sat Apr 16 01:18:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
11124
11125         * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
11126         (comp_target_types): Likewise.
11127
11128         * decl.c (lookup_name): Don't unset got_scope here.
11129
11130         * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
11131         got_scope != NULL_TREE.
11132
11133 Fri Apr 15 16:36:33 1994  Jason Merrill  <jason@deneb.cygnus.com>
11134
11135         Horrible kludge to prevent templates from being instantiated by
11136         their base classes.
11137         * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
11138         before we get to left_curly.
11139         * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
11140
11141         * error.c (dump_decl): If it's a typedef, print out the name of the
11142         decl, not just the underlying type.
11143
11144         * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
11145         update the IDENTIFIER_TYPE_VALUE of its name.
11146
11147         * decl2.c (finish_file): When processing the initializer for a
11148         static member, pretend that the dummy function is a member of the
11149         same class.
11150
11151 Fri Apr 15 15:56:35 1994  Kung Hsu  <kung@mexican.cygnus.com>
11152
11153         * class.c (build_vtable_entry): revert Apr 4 change.
11154         * decl2.c (mark_vtable_entries): replace pure virtual function
11155         decl with abort's.
11156
11157 Fri Apr 15 13:49:33 1994  Jason Merrill  <jason@deneb.cygnus.com>
11158
11159         * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
11160         mismatch, and don't pedwarn on 0/function pointer mismatch.
11161
11162         * typeck2.c (digest_init): Lose code for special handling of unions.
11163         (process_init_constructor): Since they're handled just fine here.
11164         Pedwarn on excess elements.
11165
11166         * decl2.c (grokfield): Complain about local class method declaration
11167         without definition.
11168
11169 Fri Apr 15 13:19:40 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11170
11171         * method.c (emit_thunk):  Add extern declaration for
11172         current_call_is_indirect (needed for hppa).
11173
11174 Thu Apr 14 16:12:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
11175
11176         Improve local class support; allow classes in different blocks to
11177         have the same name.
11178         * decl.c (pushtag): Support local classes better.
11179         (pushdecl_nonclass_level): New function for pushing mangled decls of
11180         nested types into the appropriate scope.
11181         (xref_defn_tag): Use pushdecl_nonclass_level instead of
11182         pushdecl_top_level. 
11183         (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
11184         class methods.
11185         * method.c (do_inline_function_hair): Likewise.
11186
11187         * class.c (finish_struct): It is legal for a class with no
11188         constructors to have nonstatic const and reference members.
11189
11190 Thu Apr 14 07:15:11 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
11191
11192         * decl.c (push_overloaded_decl): Avoid giving errors about
11193         built-ins, since duplicate_decls will have given warnings/errors
11194         for them.
11195
11196 Thu Apr 14 03:45:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
11197
11198         * cvt.c (convert_to_reference): Warn about casting pointer type to
11199         reference type when this is probably not what they wanted.
11200
11201 Wed Apr 13 13:12:35 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11202
11203         * decl.c (finish_decl):  Don't mindlessly set TREE_USED for
11204         static consts any more (toplev.c has now been modified to
11205         not emit warnings if they are unused).
11206
11207 Wed Apr 13 00:22:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
11208
11209         * decl.c (grok_op_properties): If op new/delete get here with
11210         METHOD_TYPEs, do a revert_static_member_fn.
11211
11212         * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
11213         * init.c (is_aggr_typedef): Don't look at
11214         IDENTIFIER_CLASS_TYPE_VALUE.
11215         (get_aggr_from_typedef): Likewise.
11216         (get_type_value): Likewise.
11217         * call.c (build_scoped_method_call): Don't rely on overloaded
11218         template names having IDENTIFIER_CLASS_VALUE set.
11219
11220         * parse.y (component_decl_1, fn.def2): Revert rules for
11221         constructors.
11222         (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
11223         clobbered.
11224
11225         * decl.c (start_function): Only warn about `void main()' if pedantic
11226         || warn_return_type.
11227
11228 Tue Apr 12 02:14:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
11229
11230         Clean up overloading of the template name.
11231         * class.c (pushclass): overload the template name whenever pushing
11232         into the scope of a template class, not just if it is
11233         uninstantiated.
11234         (popclass): Correspondingly.
11235         * search.c (push_class_decls): Don't overload_template_name.
11236         * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
11237         DECL_CONTEXT on things.
11238         * parse.y (left_curly): Don't overload_template_name.
11239         * class.c (finish_struct): Don't undo_template_name_overload.
11240
11241         * method.c (build_opfncall): Only pass one argument to global op
11242         delete.
11243
11244         * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
11245         decide how many arguments to use for vec delete.
11246
11247         * decl.c (grok_op_properties): Be consistent in modifying
11248         current_class_type.
11249         (grokdeclarator): Only complain about function decls with no return
11250         type if we're being pedantic.
11251
11252 Mon Apr 11 00:10:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
11253
11254         Add support for operator new [] and operator delete [].
11255
11256         * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
11257         * ptree.c (print_lang_type): Indicate vec new/delete.
11258         * parse.y: Support vec new/delete.
11259         * method.c (build_decl_overload): Deal with vec new/delete.
11260         (build_opfncall): Likewise.
11261         * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
11262         vec new/delete.  vec new uses "__vn", and vec delete uses "__vd".
11263         * init.c (init_init_processing): Set up BIVN and BIVD.
11264         (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
11265         since it doesn't happen any more.
11266         (build_new): Support vec new.  Always call something.
11267         (build_x_delete): Support vec delete.
11268         (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
11269         and pass it to build_x_delete.
11270         * decl2.c (delete_sanity): Don't change behavior by whether or not
11271         the type has a destructor.  Pass use_global_delete to
11272         build_vec_delete.
11273         (coerce_delete_type): Make sure that the type returned has a first
11274         argument of ptr_type_node.
11275         * decl.c (init_decl_processing): Also declare the global vec
11276         new/delete.
11277         (grokdeclarator): Also force vec new/delete to be static.
11278         (grok_op_properties): Note presence of vec new/delete, and play with
11279         their args.  If vec delete takes the optional size_t argument, set
11280         TYPE_VEC_DELETE_TAKES_SIZE.
11281         * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
11282         checking for one delete or the other.
11283         (lang_type): gets_new and gets_delete are now two bits long.  The
11284         low bit is for the non-array version.  Lose gets_placed_new.
11285         (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
11286         delete defined by this class wants to know how much space it is
11287         deleting.
11288         (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
11289         add a header containing the number of elements in the vector; i.e.
11290         when the elements need to be destroyed or vec delete wants to know
11291         the size.
11292         * class.c (finish_struct_methods): Also check for overloading vec
11293         delete.
11294         * call.c (build_method_call): Also delete second argument for vec
11295         delete.
11296
11297         * decl.c (grokdeclarator): Correct complaints again.
11298         (grokdeclarator): Fix segfault on null declarator.
11299         (decls_match): Also accept redeclaration with no arguments if both
11300         declarations were in C context.  Bash TREE_TYPE (newdecl) here.
11301         (duplicate_decls): Instead of here.
11302
11303         * parse.y (nested_name_specifier_1): Lose rules for dealing with
11304         syntax errors nicely, since they break parsing of 'const i;'.
11305
11306         * decl.c (lookup_name): if (got_scope == current_class_type)
11307         val = IDENTIFIER_CLASS_VALUE (name).
11308
11309         * search.c (lookup_nested_tag): Look in enclosing classes, too.
11310
11311         * spew.c (yylex): Only look one character ahead when checking for a
11312         SCOPE.
11313
11314         * lex.c (check_newline): Read first nonwhite char before
11315         incrementing lineno.
11316
11317         * decl.c (grokdeclarator): Don't claim that typedefs are variables
11318         in warning.
11319
11320         * parse.y: Divide up uses of unqualified_id into
11321         notype_unqualified_id and unqualified_id, so that TYPENAME can be
11322         used as an identifier after an object.
11323
11324         * class.c (push_nested_class): Don't push into non-class scope.
11325
11326         * decl.c (grokdeclarator): If an identifier could be a type
11327         conversion operator, but has no associated type, it's not a type
11328         conversion operator.
11329
11330         * pt.c (unify): Check for equality of constants better.
11331
11332         * decl.c (grokdeclarator): Don't complain about access decls.
11333
11334 Sun Apr 10 02:39:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
11335
11336         * decl.c (grokdeclarator): pedwarn about data definitions without
11337         types here.
11338
11339         * parse.y (datadef): Don't pedwarn about decls without types here,
11340         since that is valid for functions.
11341         (fn.def2, component_decl): Support constructors with declmods again.
11342         (nomods_initdecls): For decls without any mods, so that we don't try
11343         to get declspecs from some arbitrary $0.
11344
11345         * search.c (lookup_field): Use cp_error.
11346
11347         * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
11348         here; it breaks destructors for non-aggr types.
11349
11350         * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
11351         a type being defined, like the comment says.
11352         If got_scope is not an aggregate, just return NULL_TREE.
11353
11354         * pt.c (create_nested_upt): Kung's code for creating types nested
11355         within uninstantiated templates now lives here (it used to live in
11356         hack_more_ids).  It needs to be expanded.
11357
11358         * parse.y: Stop calling see_typename so much.
11359
11360         * decl.c (lookup_name): Deal with TTPs and UPTs.
11361
11362         * lex.c (real_yylex): Don't set looking_for_typename just because we
11363         saw a 'new'.
11364         (dont_see_typename): #if 0 out.
11365
11366         * spew.c (yylex): Increment looking_for_typename if the next
11367         character is SCOPE, rather than setting it to 1; this way, the value
11368         from seeing an aggr specifier will not be lost.  This kinda relies
11369         on looking_for_typename never being < 0, which is now true.
11370
11371         * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
11372         too.
11373         (named_class_head_sans_basetype): Accept template types, too.  Oops.
11374
11375 Fri Apr  8 16:39:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
11376
11377         * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
11378
11379         * parse.y: Lose START_DECLARATOR.
11380
11381         * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
11382         for a class.
11383
11384         * parse.y: Simplify fn.def2 and component_decl.  Support 'enum
11385         A::foo' syntax.  Catch invalid scopes better.
11386
11387         * parse.y, lex.c: lose TYPENAME_COLON.
11388
11389         * decl2.c (groktypefield): #if 0 out.
11390
11391         * decl.c (lookup_name): If the type denoted by got_scope is
11392         currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
11393
11394         * class.c (push_nested_class): Don't try to push into
11395         error_mark_node.
11396
11397 Fri Apr  8 07:26:36 1994  Brendan Kehoe  <brendan@lisa.cygnus.com>
11398
11399         * Makefile.in (stamp-parse): Update count of conflicts to 33.
11400
11401 Thu Apr  7 17:47:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
11402
11403         A saner implementation of nested types that treats template types
11404         no differently from non-template types.  There are still some
11405         shortcomings of our system; most notably, it is difficult to look
11406         for a nested type that is hidden by another name, because of the way
11407         we keep track of hidden types.  But this shouldn't be a problem for
11408         just about anyone.  Perhaps lookup_field should be fixed up a bit.
11409
11410         * spew.c: Moved handling of nested types/scoping from the lexer
11411         into the parser.  Removed variable template_type_seen_before_scope.
11412         Removed functions frob_identifier, hack_more_ids, and various cruft
11413         that was #if 0'd out in the past, reducing the size of the file from
11414         1146 lines to 450 lines.  We can't quite do away with spew.c yet,
11415         though; we still need it for do_aggr () and checking for SCOPE after
11416         the current identifier.  And setting lastiddecl.
11417
11418         * parse.y: Moved handling of nested types/scoping from the lexer
11419         into the parser, using a new global variable `got_scope'.  Reduced
11420         the number of states by 53.  Implemented all uses of explicit global
11421         scope.  Removed terminals SCOPED_TYPENAME and SCOPED_NAME.  Removed
11422         nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
11423         scoped_typename.  Added nonterminals nested_type,
11424         qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
11425         nested_name_specifier, global_scope, overqualified_id, type_name.
11426         Changed many others.  Added 9 new reduce/reduce conflicts, which are
11427         nested type parallels of 9 that were already in the grammar for
11428         non-nested types.  Eight of the now 33 conflicts should be removed
11429         in the process of resolving the late binding between variable and
11430         function decls.
11431
11432         * gxxint.texi (Parser): Update.
11433
11434         * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
11435
11436         * lex.h: Add decl for got_scope.
11437
11438         * lex.c (see_typename): Claim to be the lexer when calling
11439         lookup_name.
11440
11441         * decl.c (lookup_name): When called from the lexer, look at
11442         got_scope and looking_at_typename; otherwise don't.
11443
11444 Thu Apr  7 22:05:47 1994  Mike Stump  <mrs@cygnus.com>
11445
11446         31th Cygnus<->FSF merge.
11447
11448 Thu Apr  7 17:47:53 1994  Jason Merrill  <jason@deneb.cygnus.com>
11449
11450         * decl2.c (mark_vtable_entries): Call this to mark all the
11451         entries in the vtable addressable.
11452         (finish_decl_parsing): Handle SCOPE_REFs.
11453
11454         * decl.c (decls_match): Always call compparms with strict == 1.
11455         Handle the special case of C function redecl here.
11456         (duplicate_decls): Only keep the old type if the new decl takes no
11457         arguments.
11458
11459         * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
11460
11461 Thu Apr  7 16:17:50 1994  Mike Stump  <mrs@cygnus.com>
11462
11463         * class.c (build_vtable_entry): Fix breakage introduced Apr 5
11464         17:48:41.
11465
11466 Wed Apr  6 16:05:10 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11467
11468         * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
11469         ch-tree.h:  Every place these functions were called, the result was
11470         immediately passed to expand_expr_stmt.  Reduce redundancy by
11471         calling expand_expr_init *inside* these functions.  These
11472         makes for a simpler interface, and we don't have to build
11473         compound expressions.  Hence, rename these function to:
11474         expand_virtual_init and expand_vbase_vtables_init respectively.
11475         * init.c, decl.c:  Change callers of these functions.
11476         * init.c, cp-tree.h (expand_virtual_init):  Make static.
11477
11478         * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
11479         rather than DECL_SAVED_INSNS before emitting inlines.
11480
11481 Wed Apr  6 13:06:39 1994  Jason Merrill  <jason@deneb.cygnus.com>
11482
11483         * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
11484
11485         * decl.c (duplicate_decls): If this is a new declaration of an
11486         extern "C" function, keep the type (for the argtypes).
11487         (redeclaration_error_message): Don't check DECL_LANGUAGE here.
11488         (decls_match): Call compparms with a value of strict dependent on
11489         the value of strict_prototypes for DECL_LANGUAGE (oldecl).
11490
11491         * typeck.c (compparms): ... is only equivalent to non-promoting
11492         parms if we're not being strict.
11493
11494         * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
11495
11496         * decl.c (init_decl_processing): if (flag_ansi || pedantic)
11497         strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
11498
11499         * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
11500         virtuals.
11501
11502 Tue Apr  5 17:48:41 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11503
11504         Support for implementing vtables with thunks.
11505         * tree.def (THUNK_DECL):  New TREE_CODE.
11506         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
11507         (fnaddr_from_vtable_entry):  Handle flag_vtable_thunks case.
11508         * cp-tree.h (memptr_type):  New variable.
11509         * class.c (build_vtable_entry):  Build thunk if necessary.
11510         * class.c (build_vfn_ref):  If using thunks, don't need
11511         to add delta field from vtable (there is none!).
11512         * decl.c: Add memptr_type as well as vtable_entry_type.
11513         If using thunks, the latter is just ptr_type_node.
11514         * gc.c, typeck.c:  Use memptr_typeChange, not vtable_entry_type.
11515         * decl2.c (finish_vtable_vardecl):  Handle thunks.
11516         * expr.c (cplus_expand_expr):  Support THUNK_DECL.
11517
11518         * decl.c (grokdeclarator):  Set DECL_THIS_EXTERN if "extern".
11519         * decl.c (start_function):  Set current_extern_inline based on
11520         DECL_THIS_EXTERN, not TREE_PUBLIC.
11521         * decl.c (finish_function):  Call mark_inline_for_output if needed,
11522
11523         Improve intelligence about when to emit inlines.
11524         * cp-tree.h (lang_decl_flags):  New field saved_inline.
11525         * cp-tree.h (DECL_SAVED_INLINE):  New macro.
11526         * class.c (add_virtual_function):  Don't set TREE_ADDRESSABLE.
11527         * decl.h, decl.c (pending_addressable_inlines):  Removed.
11528         * decl2.c (pending_addressable_inlines):  Renamed to saved_inlines.
11529         * decl2.c (mark_inline_for_output):  Do nothing if
11530         DECL_SAVED_INLINE;  otherwise set it (and add to saved_inlines list).
11531         * decl2.c (finish_vtable_vardecl):  SET_CLASSTYPE_INTERFACE_KNOWN
11532         and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
11533         * decl2.c (finish_file):  Writing out inlines later, so we can
11534         also handle the ones needed for vtbales.
11535         * decl2.c (write_vtable_entries, finish_vtable_typedecl):  Removed.
11536
11537         * cp-tree.h, class.c, decl2.c, search.c:  Remove -fvtable-hack
11538         and flag_vtable_hack.   Use -fvtable-thunks and flag_vtable_thunks
11539         instead.  (The rationale is that these optimizations both break binary
11540         compatibility, but should become the default in a future release.)
11541
11542 Wed Apr  6 10:53:56 1994  Mike Stump  <mrs@cygnus.com>
11543
11544         * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
11545         of a fndecl, as we might not be from that vfield.
11546
11547 Tue Apr  5 17:43:35 1994  Kung Hsu  <kung@mexican.cygnus.com>
11548
11549         * class.c (add_virtual_function): fix bug for pure virtual, so
11550         that DECL_VINDEX of the dummy decl copied won't be error.
11551         (see also Apr 4 change)
11552
11553 Tue Apr  5 17:23:45 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11554
11555         * typeck.c (c_expand_return):  Before checking that we're not
11556         returning the address of a local, make sure it's a VAR_DECL.
11557         (And don't worry about it being a TREE_LIST.)
11558
11559 Tue Apr  5 13:26:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
11560
11561         * parse.y (YYDEBUG): Always define.
11562         * lex.c (YYDEBUG): Likewise.
11563
11564 Mon Apr  4 11:28:17 1994  Kung Hsu  <kung@mexican.cygnus.com>
11565
11566         * class.c (finish_struct): backup out the change below, put the
11567         new change for the same purpose. The change below breaks code.
11568
11569         * class.c (finish_struct): if pure virtual, copy node and make
11570         RTL point to abort, then put in virtual table.
11571         * decl2.c (grok_function_iit): reinstate Mar 31 change.
11572
11573 Sat Apr  2 03:12:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
11574
11575         * init.c (build_new): pedwarn about newing const and volatile
11576         types.
11577
11578         * tree.c (get_identifier_list): Only do the special handling
11579         thing if we're dealing with the main variant of the record type.
11580
11581         * cvt.c (convert_to_reference): When converting between
11582         compatible reference types, use the pointer conversion machinery.
11583         Don't just blindly overwrite the old type.
11584
11585 Fri Apr  1 17:14:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
11586
11587         * call.c (build_method_call): When looking at global functions,
11588         be sure to use instance_ptr for the first argument, not some version
11589         of it that has been cast to a base class.  Also do this before
11590         comparing candidates.
11591
11592 Thu Mar 31 19:50:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
11593
11594         * call.c (build_method_call): Constructors can be called for
11595         const objects.
11596
11597 Thu Mar 31 16:20:16 1994  Kung Hsu  <kung@mexican.cygnus.com>
11598
11599         * decl2.c (grok_func_init): do not abort as rtl for pur virtual
11600         fucntions. They can be defined somewhere else.
11601
11602 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
11603
11604         * decl.c (init_decl_processing): Declare __builtin_return_address
11605         and __builtin_frame_address for C++ as well.
11606
11607 Thu Mar 31 12:35:49 1994  Mike Stump  <mrs@cygnus.com>
11608
11609         * typeck2.c (store_init_value): Integral constant variables are
11610         always constant, even when doing -fpic.
11611
11612 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
11613
11614         * decl.c (redeclaration_error_message): Pass the types to
11615         comptypes.
11616
11617 Wed Mar 30 21:29:25 1994  Mike Stump  <mrs@cygnus.com>
11618
11619         Cures incorrect errors about pure virtuals in a class, when they
11620         have been overridden in a derived class.
11621
11622         * search.c (get_abstract_virtuals): Reimplement.
11623         * search.c (get_abstract_virtuals_1): New routine.
11624
11625 Wed Mar 30 14:10:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
11626
11627         * pt.c (push_template_decls): Make the pushed level pseudo
11628         global.
11629
11630         * parse.y (extdefs): Don't pop everything if the current binding
11631         level is pseudo_global.
11632
11633         * decl.c (pop_everything): Stop on reaching a pseudo-global
11634         binding level.
11635
11636         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
11637
11638         * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
11639         the old decl actually had an initializer.
11640
11641         * {various}: Clean up gcc -W complaints.
11642
11643         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
11644         (DECL_CONTEXT (NODE) != NULL_TREE).
11645
11646         * parse.y (lang_extdef): Call pop_everything if necessary.
11647
11648         * decl.c (pop_everything): New function for popping binding
11649         levels left over after a syntax error.
11650         (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
11651         a function is a member.
11652
11653 Wed Mar 30 14:20:50 1994  Mike Stump  <mrs@cygnus.com>
11654
11655         Cures calling a more base base class function, when a more derived
11656         base class member should be called in some MI situations.
11657
11658         * search.c (make_binfo): Use more the more specialized base
11659         binfos from the binfo given as the second argument to make_binfo,
11660         instead of the unspecialized ones from the TYPE_BINFO.
11661         * class.c (finish_base_struct): Likewise, update callers.
11662         * search.c (dfs_get_vbase_types): Likewise.
11663         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Likewise.
11664         * decl.c (xref_tag): Use NULL_TREE instead of 0.
11665         * lex.c (make_lang_type): Likewise.
11666
11667 Wed Mar 30 14:10:04 1994  Jason Merrill  <jason@deneb.cygnus.com>
11668
11669         * decl.c (pushdecl): If pushing a C-linkage function, only do a
11670         push_overloaded_decl.
11671         (duplicate_decls): Standard overloading does not shadow built-ins.
11672
11673 Tue Mar 29 00:54:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
11674
11675         * pt.c (end_template_decl): Don't call push_overloaded_decl.
11676
11677         * init.c (do_friend): Don't call push_overloaded_decl.
11678
11679         * decl.c (pushdecl): Call push_overloaded_decl for functions and
11680         function templates.
11681         (duplicate_decls): functions and function templates are not
11682         duplicates, but don't complain about calling this function to
11683         compare them.
11684         (push_overloaded_decl): Don't deal with linkage.  Call
11685         duplicate_decls.
11686         (redeclaration_error_message): Deal with linkage.
11687
11688         * decl.c (start_function): If push_overloaded_decl returns an
11689         older version of the function, deal with it.
11690
11691         * decl.c (start_function): Be sure only to push_overloaded_decl
11692         for non-members.
11693
11694         * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
11695         methods.
11696         (start_function): Lose broken and redundant code for checking old
11697         decl.
11698
11699         * init.c (add_friend): Give line numbers of both friend decls
11700         when warning about re-friending.
11701
11702         * pt.c (tsubst): Use comptypes rather than == to compare the
11703         types of the method as declared and as defined, since default
11704         parameters may be different.
11705
11706         * call.c (build_method_call): Use brendan's candidate printing
11707         routine.
11708
11709         * decl.c (start_method): Methods defined in the class body are
11710         inline whether or not it's a template class.
11711
11712 Mon Mar 28 16:39:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
11713
11714         * parse.y (initdcl0): Add "extern" to current_declspecs if
11715         have_extern_spec && ! used_extern_spcec.
11716
11717         * tree.c (really_overloaded_fn): A fn with more than one
11718         overload.
11719
11720         * pt.c (end_template_decl): Use really_overloaded_fn.
11721
11722         * decl.c (duplicate_decls): When smashing a decl into a previous
11723         definition, keep the old file and line.
11724         Don't deal with overloaded functions.
11725         Lose old code for checking arg types of functions.
11726         Check for overloaded C functions.
11727         (pushdecl): Deal with overloaded functions.
11728         (start_decl): Expect pushdecl to return an appropriate function decl.
11729         (start_function): Likewise.
11730         (push_overloaded_decl): Don't check for overloaded C functions.
11731
11732         * *.c: Stop using DECL_OVERLOADED, it being archaic.
11733         TREE_OVERLOADED should probably go, too.
11734
11735 Mon Mar 28 14:00:45 1994  Ron Guilmette  <rfg@netcom.com>
11736
11737         * typeck.c (comp_target_types): Call comp_target_parms with
11738         strict == 1.
11739
11740 Sun Mar 27 00:07:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
11741
11742         * parse.y (empty_parms): Don't parse () as (...) in extern "C"
11743         sections if we're compiling with -ansi or -pedantic.
11744
11745         * decl.c (decls_match): Don't treat (int) and (int&) as matching.
11746
11747         * decl2.c (grokfield): Don't pedwarn twice about initializing
11748         field.
11749
11750         * decl.c (push_overloaded_decl): Warn about shadowing
11751         constructor.
11752         (redeclaration_error_message): Don't allow 'int a; int a;'
11753
11754         * cvt.c (build_up_reference): Only check for valid upcast if
11755         LOOKUP_PROTECT is set, not just any flag.
11756
11757 Fri Mar 25 01:22:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
11758
11759         * lex.c (check_newline): When we see a #pragma implementation,
11760         also set it for the main input file.
11761
11762         * init.c (build_new): Convert array size argument to size_t.
11763
11764         * parse.y (primary): If we're doing a parenthesized type-id, call
11765         groktypename before passing it to build_new.
11766
11767         * call.c (build_method_call): Deal properly with const and
11768         volatile for instances of reference type.
11769
11770         * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
11771         (pedantic) pedwarn'.
11772
11773         * decl.c (grokdeclarator): Don't complain about putting `static'
11774         and `inline' on template function decls.
11775
11776 Thu Mar 24 23:18:19 1994  Jason Merrill  <jason@deneb.cygnus.com>
11777
11778         * call.c (build_method_call): Preserve const & volatile on
11779         `this'.
11780
11781 Thu Mar 24 16:21:52 1994  Mike Stump  <mrs@cygnus.com>
11782
11783         * init.c (build_new, build_vec_delete): Use global new and delete
11784         for arrays. 
11785         * decl2.c (delete_sanity): Likewise.
11786
11787 Thu Mar 24 02:10:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
11788
11789         * cvt.c (convert_to_reference): If i is an lvalue,
11790         (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
11791         (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
11792
11793 Wed Mar 23 17:45:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
11794
11795         * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
11796         and DECL_TEMPLATE_INSTANTIATIONS.
11797
11798         * init.c (build_new): Handle array typedefs properly.
11799
11800 Wed Mar 23 18:23:33 1994  Mike Stump  <mrs@cygnus.com>
11801
11802         30th Cygnus<->FSF merge.
11803
11804 Wed Mar 23 00:46:24 1994  Mike Stump  <mrs@cygnus.com>
11805
11806         * class.c (modify_vtable_entries): Avoid running off the end of the
11807         virtuals list when processing a virtual destructor.
11808         * class.c (get_vtable_entry): Likewise.
11809
11810 Wed Mar 23 00:23:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
11811
11812         * decl.c (duplicate_decls): If two template decls don't match,
11813         just return 0.
11814
11815 Tue Mar 22 23:49:41 1994  Jason Merrill  <jason@deneb.cygnus.com>
11816
11817         * typeck.c (convert_for_assignment): Don't pedwarn about
11818         converting function pointer to void *.
11819
11820 Tue Mar 22 22:23:19 1994  Mike Stump  <mrs@cygnus.com>
11821
11822         Major revamp of pointer to member functions.  Cures major
11823         nonfunctionality when used in casts, and MI situations.
11824
11825         * cvt.c (convert_force): Update call site of build_ptrmemfunc.
11826         * typeck.c (convert_for_assignment): Likewise.
11827         * typeck2.c (digest_init): Likewise.
11828         * typeck2.c (process_init_constructor): Simplify by moving code into
11829         digest_init.
11830         * typeck2.c (digest_init): Do default_conversions on init value, if
11831         we are processing pointer to member functions.
11832         * class.c (get_vfield_offset): Now non-static.  Convert bit offset
11833         into byte offset.
11834         * cp-tree.h (get_vfield_offset): Likewise.
11835         * typeck.c (get_member_function_from_ptrfunc): Convert down to right
11836         instance, before fetching vtable pointer.
11837         * typeck.c (get_delta_difference): New routine.
11838         * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
11839         get vtable pointer out of right subobject.
11840
11841 Tue Mar 22 17:56:48 1994  Mike Stump  <mrs@cygnus.com>
11842
11843         * search.c (get_binfo): Return NULL instead of aborting, when
11844         passed a UNION_TYPE.
11845
11846 Tue Mar 22 12:44:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
11847
11848         These patches implement handling of redefinition/redeclaration of
11849         templates.
11850
11851         * typeck.c (comptypes): Simplify.  All TEMPLATE_TYPE_PARMs are
11852         considered compatible.
11853
11854         * parse.y (template_def): Pass defn argument to end_template_decl.
11855
11856         * pt.c (end_template_decl): Add defn argument.  Check for
11857         redefinition.  Simplify.
11858
11859         * error.c (OB_UNPUT): New macro, to remove mistakes.
11860         (aggr_variety): Subroutine of dump_aggr_type.
11861
11862         * decl.c (decls_match): Support templates.
11863         (duplicate_decls): No longer static.  Don't try to lay out template
11864         decls.
11865         (pushdecl): Simplify.
11866
11867         * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
11868         DECL_INITIAL.
11869
11870 Mon Mar 21 11:46:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
11871
11872         * error.c (dump_decl): Support class template decls.
11873         (dump_type): Don't adorn template type parms.
11874
11875         * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
11876         if it was a definition.
11877         (redeclaration_error_message): Do the cp_error thang, and reject
11878         redefinition of templates.
11879
11880 Mon Mar 21 19:36:06 1994  Per Bothner  <bothner@kalessin.cygnus.com>
11881
11882         * decl.c (grokdeclarator):  Set TREE_PUBLIC for METHOD_TYPE
11883         in FIELD context, when appropriate.  Also,
11884         CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
11885         Also, simplify check for bogus return specifiers.
11886
11887 Mon Mar 21 11:46:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
11888
11889         * parse.y (after_type_declarator1): Expand type_quals.
11890         (notype_declarator1): Likewise.
11891         (absdcl1): Likewise.
11892
11893 Sat Mar 19 01:05:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
11894
11895         * decl.c (grokdeclarator): Treat class-local typedefs like static
11896         members; i.e. 'typedef int f();' means that f is a function type,
11897         not a method type.
11898
11899         * parse.y (decl): Change direct_* back to *.
11900         (type_id): Change direct_abstract_declarator to absdcl.
11901         (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
11902
11903 Fri Mar 18 12:47:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
11904
11905         These two patches fix crashes on instantiating a template inside a
11906         function with C linkage or containing labels.
11907
11908         * class.c (current_lang_stacksize): No longer static.
11909
11910         * decl.c (struct saved_scope): Add lang_base, lang_stack,
11911         lang_name, lang_stacksize, and named_labels.
11912         (push_to_top_level): Save them.
11913         (pop_from_top_level): Restore them.
11914
11915         * gxxint.texi (Parser): Update.
11916
11917         These two patches finish moving the task of expr/declarator
11918         ambiguity resolution from the lexer to the parser, and add one more
11919         r/r conflict.  START_DECLARATOR can now be nuked.
11920
11921         * parse.y (decl): Add "direct_" in typespec X rules.
11922         (direct_declarator): New nonterminal for
11923         direct_after_type_declarator and direct_notype_declarator.
11924         (direct_initdecls): Like initdecls, but uses direct_initdcl0.
11925         (direct_initdcl0): Like initdcl0, but uses direct_declarator.
11926         (named_parm): Add typespec direct_declarator rule.
11927
11928         * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
11929
11930         These two patches disable some excessive cleverness on the part of
11931         g++; a non-class declaration always hides a class declaration in the
11932         same scope, and g++ was trying to unhide it depending on the
11933         enclosing expression.
11934
11935         * spew.c (arbitrate_lookup): #if 0 out.
11936
11937         * decl.c (lookup_name): Never call arbitrate_lookup.
11938
11939         * parse.y (complex_notype_declarator1): Add '*'
11940         complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
11941
11942         * parse.y (complex_direct_notype_declarator): Restore id_scope
11943         see_typename TYPENAME rule, remove all other rules beginning with
11944         those tokens.
11945         (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
11946
11947 Thu Mar 17 17:30:01 1994  Jason Merrill  <jason@deneb.cygnus.com>
11948
11949         These changes fix the compiler's handling of the functional cast/
11950         object declaration ambiguities in section 6.8 of the ARM.  They also
11951         add 11 reduce/reduce conflicts.  Sigh.
11952
11953         * parse.y: Add precedence decls for OPERATOR and '~'.
11954         (notype_unqualified_id): New nonterminal, encompasses all of the
11955         ANSI unqualified-id nonterminal except TYPENAMEs.
11956         (expr_or_declarator): New nonterminal to delay parsing of code like
11957         `int (*a)'.
11958         (primary): Use notype_unqualified_id.
11959         (decl): Add typespec initdecls ';' and typespec declarator ';'
11960         rules.
11961         (initdcl0): Deal with the above.
11962         (complex_notype_declarator1): A notype_declarator that is not also
11963         an expr_or_declarator.
11964         (complex_direct_notype_declarator): A direct_notype_declarator that
11965         doesn't conflict with expr_or_declarator.  Use
11966         notype_unqualified_id.  Remove id_scope see_typename TYPENAME rule.
11967         (functional_cast): New nonterminal, for the three functional cast
11968         rules.  So that they can be moved after
11969         complex_direct_notype_declarator.
11970         (see_typename): Don't accept type_quals any more.
11971
11972         * decl2.c (reparse_decl_as_expr): New function to deal with parse
11973         nodes for code like `int (*a)++;'.      
11974         (reparse_decl_as_expr1): Recursive subroutine of the above.
11975         (finish_decl_parsing): New function to deal with parse nodes for
11976         code like `int (*a);'.  See the difference?
11977
11978 Thu Mar 17 12:16:10 1994  Mike Stump  <mrs@cygnus.com>
11979
11980         These changes break binary compatibility in code with classes
11981         that use virtual bases.
11982
11983         * search.c (dfs_get_vbase_types): Simplify and correct to make
11984         sure virtual bases are initialized in dfs ordering.
11985         * search.c (get_vbase_types): Simplify and make readable.
11986
11987 Thu Mar 17 12:01:10 1994  Jason Merrill  <jason@deneb.cygnus.com>
11988
11989         * parse.y: s/ typename / type_id /g
11990
11991 Wed Mar 16 17:42:52 1994  Kung Hsu  <kung@mexican.cygnus.com>
11992
11993         * parse.y (typespec): add SCOPE TYPENAME for global scoped 
11994         type. e.g. ::B x.
11995
11996         * decl.c (complete_array_type): fix a bug that in -pendantic
11997         mode even there's no initializer, it will continue to build
11998         default index.
11999
12000 Wed Mar 16 17:43:07 1994  Jason Merrill  <jason@deneb.cygnus.com>
12001
12002         * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
12003         all of the scoped PTYPENAME rules.
12004
12005 Wed Mar 16 16:39:02 1994  Mike Stump  <mrs@cygnus.com>
12006
12007         * init.c (build_offset_ref): The value of A::typedef_name is
12008         always the TYPE_DECL, and never an error.
12009
12010 Tue Mar 15 20:02:35 1994  Jason Merrill  <jason@deneb.cygnus.com>
12011
12012         * search.c (get_base_distance_recursive): Two binfos can only
12013         represent the same object if they are both via_virtual.
12014
12015         * class.c (finish_base_struct): Check vbases for ambiguity, too.
12016
12017         * search.c (get_vbase_types): Accept binfo argument, too.
12018
12019 Tue Mar 15 19:22:05 1994  Kung Hsu  <kung@mexican.cygnus.com>
12020
12021         * decl.c (complete_array_type): complete TYPE_DOMAIN of the 
12022         initializer also, because back-end requires it.
12023
12024 Tue Mar 15 15:33:31 1994  Jason Merrill  <jason@deneb.cygnus.com>
12025
12026         * error.c (dump_expr): Support member functions (which show up as
12027         OFFSET_REFs).
12028
12029 Mon Mar 14 16:24:36 1994  Mike Stump  <mrs@cygnus.com>
12030
12031         * init.c (build_new): Set the return type of multidimensional
12032         news correctly.
12033
12034 Fri Mar 11 15:35:39 1994  Kung Hsu  <kung@mexican.cygnus.com>
12035
12036         * call.c (build_method_call): if basetype not equal to type
12037         of the instance, use the type of the instance in building
12038         destructor.
12039
12040 Thu Mar 10 17:07:10 1994  Kung Hsu  <kung@mexican.cygnus.com>
12041
12042         * parse.y (direct_notype_declarator): add push_nested_type for
12043         'template_type SCOPED_NAME' rule.
12044
12045 Tue Mar  8 00:19:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
12046
12047         * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
12048
12049 Sat Mar  5 04:47:48 1994  Jason Merrill  <jason@deneb.cygnus.com>
12050
12051         * parse.y (regcast_or_absdcl): New nonterminal to implement late
12052         reduction of constructs like `int ((int)(int)(int))'.
12053         (cast_expr): Use it.
12054         (sub_cast_expr): Everything that can come after a cast.
12055         (typed_declspecs1): typed_declspecs that are not typed_typespecs.
12056         (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
12057         (direct_abstract_declarator): Replace '(' parmlist ')' rule with
12058         '(' complex_parmlist ')' and regcast_or_absdcl.
12059         (parmlist): Split
12060         (complex_parmlist): Parmlists that are not also typenames.
12061         (parms_comma): Enabler.
12062         (named_parm): A parm that is not also a typename.  Use declarator
12063         rather than dont_see_typename abs_or_notype_decl.  Expand
12064         typed_declspecs inline.
12065         (abs_or_notype_decl): Lose.
12066         (dont_see_typename): Comment out.
12067         (bad_parm): Break out abs_or_notype_decl into two rules.
12068
12069 Fri Mar  4 18:22:39 1994  Jason Merrill  <jason@deneb.cygnus.com>
12070
12071         * decl2.c (reparse_decl_as_casts): New function to change parse
12072         nodes for `(int)(int)(int)' from "function taking int and returning
12073         function taking int and returning function taking int" to "... cast
12074         to int, cast to int, cast to int".
12075
12076         * decl2.c (reparse_decl_as_expr): Recursive function to change
12077         parse nodes for `A()()' from "function returning function returning
12078         A" to "A().operator()".
12079
12080         * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
12081         `typespec fcast_or_absdcl' rule.
12082         (fcast_or_absdcl): New nonterminal to implement late reduction of
12083         constructs like `A()()()()'.
12084         (typename): Replace `typespec absdcl1' rule with
12085         `typespec direct_abstract_declarator' rule.
12086         (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
12087         with `fcast_or_absdcl type_quals' rule.
12088
12089 Fri Mar  4 16:18:03 1994  Mike Stump  <mrs@cygnus.com>
12090
12091         * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
12092         matches Section 5.5.
12093
12094 Fri Mar  4 14:01:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
12095
12096         * error.c (dump_type_prefix): Don't print basetype twice for
12097         pmfs.
12098
12099 Fri Mar  4 13:24:33 1994  Mike Stump  <mrs@cygnus.com>
12100
12101         * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
12102         so that it is like setHandler(&A::handlerFn).  Cures an `invalid
12103         lvalue in unary `&''.
12104
12105 Fri Mar  4 11:15:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
12106
12107         * gxxint.texi (Copying Objects): New section discussing default
12108         op= problems with virtual inheritance.
12109
12110         * decl2.c (grokoptypename): Just does grokdeclarator and
12111         build_typename_overload, since the parser can't call grokdeclarator
12112         directly.
12113
12114         * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
12115         and TREE_TYPE on generated identifiers.
12116
12117         * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
12118
12119         * parse.y (parm): Convert `const char *' to `__opPCc' here.
12120
12121         * error.c (dump_decl): Say sorry rather than my_friendly_aborting
12122         if we can't figure out what to do.
12123         (dump_type*): Likewise.
12124
12125         * typeck2.c (build_m_component_ref): 'component' is an expr, not
12126         a decl.  Also move the IS_AGGR_TYPE check after the stripping of
12127         REFERENCE_TYPE.
12128
12129 Fri Mar  4 04:46:05 1994  Mike Stump  <mrs@cygnus.com>
12130
12131         * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
12132         so that it is like b->setHandler(&A::handlerFn).  Cures an `invalid
12133         lvalue in unary `&''.
12134
12135 Thu Mar  3 12:38:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
12136
12137         * parse.y: Add precedence specification for START_DECLARATOR.
12138         (type_quals): Move before primary.
12139         (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
12140
12141         * decl2.c (grokoptypename): Lose.
12142
12143         * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
12144         rather than waiting until later.
12145
12146 Wed Mar  2 14:12:23 1994  Jason Merrill  <jason@deneb.cygnus.com>
12147
12148         * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
12149         than expanding it inline.
12150         (typename): Expand empty option of (former) absdcl inline.
12151         (abs_or_notype_decl): Likewise.
12152         (absdcl): Lose empty rule.
12153         (conversion_declarator): New nonterminal for 'typename' of 'operator
12154         typename'.
12155         (operator_name): Use it instead of absdcl.
12156
12157         * parse.y: Add precedence declarations for SCOPED_TYPENAME,
12158         TYPEOF, and SIGOF.
12159         (typed_declspecs): Accept typed_typespecs, rather than typespec
12160         directly.  Add rules with reserved_typespecquals.
12161         (reserved_declspecs): Don't accept typespecqual_reserved at the
12162         beginning of the list.  The typed_declspecs rule will deal with this
12163         omission.
12164         (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
12165         directly.
12166
12167         * parse.y (direct_notype_declarator,
12168         direct_after_type_declarator, direct_abstract_declarator): Split up
12169         the declarator1 nonterminals to match the draft standard and avoid
12170         ambiguities.
12171         (new_type_id, new_declarator, direct_new_declarator,
12172         new_member_declarator): New nonterminals to implement the subset of
12173         'typename' allowed in new expressions.
12174         (unary_expr): Use new_type_id instead of typename.
12175         (after_type_declarator1, absdcl1): Fix semantics of member pointers.
12176         (abs_member_declarator, after_type_member_declarator): Lose.
12177
12178         * parse.y (absdcl1): Don't require parens around
12179         abs_member_declarator.
12180         (abs_member_declarator): Lose see_typename from rules.
12181         (after_type_member_declarator): Likewise.
12182
12183         * tree.c (get_identifier_list): New function, containing code
12184         previously duplicated in get_decl_list and list_hash_lookup_or_cons.
12185         (get_decl_list): Use it.
12186         (list_hash_lookup_or_cons): Likewise.
12187
12188         * parse.y (typed_declspecs, declmods): It's not necessary to hash
12189         the declspecs on class_obstack, so don't.  This way typed_typespecs
12190         can reduce to typed_declspecs.
12191
12192 Wed Mar  2 14:29:18 1994  Jason Merrill <jason@cygnus.com>
12193
12194         * cvt.c (build_up_reference): If we aren't checking visibility,
12195         also allow base->derived conversions.
12196
12197 Mon Feb 28 15:14:29 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12198
12199         * typeck.c (build_c_cast): Remove bogus hack when converting
12200         to a reference type.
12201
12202         * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
12203         Removed, not used.
12204         (lang_stype::methods, lang_decl::next_method): New fields.
12205         (CLASSTYPE_METHODS, DECL_NEXT_METHOD):  New macros.
12206         * decl.c (duplicate_decls):  Preserve DECL_NEXT_METHOD.
12207
12208         * cp-tree.h, decl2.c (flag_vtable_hack):  New flag.
12209         * decl2.c (finish_vtable_vardecl):  If flag_vtable_hack,
12210         and  !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
12211         a non-inline virtual function to control emitting of vtables.
12212         * class.c (finish_struct):  Build CLASSTYPE_METHODS list.
12213         * search.c (build_vbase_vtables_init):  Don't assemble_external
12214         (yet) if flag_vtable_hack.
12215         * class.c (build_vfn_ref):  Likewise.
12216
12217 Mon Feb 28 14:54:13 1994  Jason Merrill  <jason@deneb.cygnus.com>
12218
12219         * parse.y (component_decl): Don't include "typed_declspecs
12220         declarator ';'" speedup, since it breaks enums.
12221
12222 Fri Feb 25 15:43:44 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12223
12224         * class.c (finish_struct):  Minor optimization for building
12225         fn_fields list.
12226
12227 Fri Feb 25 15:23:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
12228
12229         * decl.c (start_function): Fix detection of function overloading.
12230
12231 Thu Feb 24 22:26:19 1994  Mike Stump  <mrs@cygnus.com>
12232
12233         * lex.c (check_newline): #pragma interface can take a string
12234         argument, just like #pragma implementation.  #pragma implementation
12235         checks for garbage on the line, line #pragma interface does.  Main
12236         input files do not auto implement like named files, #pragma
12237         implementation must be used explicitly.
12238
12239 Thu Feb 24 17:09:01 1994  Jason Merrill  <jason@deneb.cygnus.com>
12240
12241         * parse.y (components): Handle list of one again.
12242         (notype_components): Likewise.
12243         (after_type_declarator1): Take maybe_raises out again.
12244
12245         * gxxint.texi (Parser): Document additional r/r conflict.
12246
12247 Wed Feb 23 14:42:55 1994  Jason Merrill  <jason@deneb.cygnus.com>
12248
12249         * gxxint.texi (Parser): Add node.
12250
12251         * Makefile.in (stamp-parse): Update expected conflict count.
12252
12253         * parse.y (various): Replace "declmods declarator" with "declmods
12254         notype_declarator".  The comment saying that "declmods declarator ';'"
12255         corresponds to "int i;" was wrong; it corresponds to "const i;".
12256         (component_decl): Add "typed_declspecs declarator ';'" rule; this
12257         *does* correspond to "int i;".  Change "declmods components" to
12258         "declmods notype_components".
12259         (components): Don't deal with a list of one anymore.
12260         (notype_components): New nonterminal, corresponds to notype_declarator.
12261         ({after_,no}type_component_decl{,0}): More new nonterminals.
12262         ({after_,no}type_declarator): Fold in START_DECLARATOR token.
12263         Eliminates four reduce/reduce conflicts.
12264
12265         (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
12266         (nontrivial_exprlist): New nonterminal: A list of at least two
12267         expr_no_commas's.
12268         (nonnull_exprlist): Depend on nontrival_exprlist.
12269         Eliminates four reduce/reduce conflicts.
12270
12271         (named_class_head): Move intermediate code block into separate
12272         nonterminal so that we can stick %prec EMPTY on it.
12273
12274         Add more %prec EMPTY's to eliminate remaining shift/reduce
12275         conflicts.
12276
12277         (after_type_declarator): Add maybe_raises to fndecl rules.
12278         (after_type_declarator_no_typename): Remove.
12279         For correctness.
12280
12281         Document remaining reduce/reduce conflicts.
12282
12283 Tue Feb 22 12:10:32 1994  Jason Merrill  <jason@deneb.cygnus.com>
12284
12285         * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
12286         (TYPE_BINFO (type)) if we care about the path.
12287
12288         * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
12289         options are.
12290
12291 Mon Feb 21 19:59:40 1994  Mike Stump  <mrs@cygnus.com>
12292
12293         * Makefile.in (mostlyclean): lex.c is a source file, don't
12294         remove.
12295
12296 Sat Feb 19 01:27:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
12297
12298         * parse.y: Eliminate 20 shift/reduce conflicts.
12299
12300 Fri Feb 18 11:49:42 1994  Jason Merrill  <jason@deneb.cygnus.com>
12301
12302         * pt.c (type_unification): Add subr argument; if set, it means
12303         that we are calling ourselves recursively, so a partial match is OK.
12304         (unify): Support pointers to methods and functions.
12305         (tsubst): Support method pointers.
12306         * decl.c (build_ptrmemfunc_type): No longer static, so that
12307         tsubst can get at it.
12308
12309         * init.c (is_aggr_typedef): Pretend template type parms are
12310         aggregates.
12311         * decl2.c (build_push_scope): If cname refers to a template type
12312         parm, just grin and nod.        
12313
12314         * call.c (build_overload_call_real): Pass subr argument to
12315         type_unification.
12316         * pt.c (do_function_instantiation): Likewise.
12317         * class.c (instantiate_type): Likewise.
12318
12319         * search.c (get_base_distance): If BINFO is a binfo, use it and
12320         don't mess with its BINFO_INHERITANCE_CHAIN.
12321
12322         * cvt.c (convert_to_reference): Fix temporary generation.
12323         If ambiguous, return error_mark_node.
12324
12325         * init.c (build_new): Put back some necessary code.
12326
12327 Thu Feb 17 15:39:47 1994  Jason Merrill  <jason@deneb.cygnus.com>
12328
12329         * init.c (build_new): Deal with array types properly.
12330
12331         * search.c (get_binfo): Become a shell for get_base_distance.
12332         (get_binfo_recursive): Lose.
12333         (get_base_distance_recursive): Find the path to the via_virtual base
12334         that provides the most access.
12335         (get_base_distance): Likewise.
12336
12337         * parse.y (explicit_instantiation): Syntax is 'template class
12338         A<int>', not 'template A<int>'.
12339
12340         * typeck.c (convert_for_initialization): Remove bogus warning.
12341
12342         * parse.y (datadef): Revert patch of Oct 27.
12343
12344 Thu Feb 17 15:12:29 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12345
12346         * class.c (build_vfn_ref):  Cast delta field to ptrdiff_type_node,
12347         rather than integer_type_node.  Does wonders for the Alpha.
12348
12349 Thu Feb 17 13:36:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
12350
12351         * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
12352         goes onto the same obstack as its target type.
12353
12354 Wed Feb 16 00:34:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
12355
12356         * cvt.c (convert_to_reference): If converting via constructor
12357         on local level, go back to build_cplus_new approach.
12358
12359         * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
12360         to error_mark_node to prevent expand_expr from building a cleanup
12361         for this variable.
12362
12363         * lex.c (default_assign_ref_body): Return *this from the memcpy
12364         version, too.
12365
12366         * decl.c (grok_reference_init): Just return if called with
12367         error_mark_node, don't worry about initializing non-const reference
12368         with temporary.
12369
12370         * cvt.c (convert_to_reference): Do the right thing for
12371         non-aggregate reference conversions, pedwarn when generating a
12372         non-const reference to a temporary.
12373
12374         * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
12375         TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
12376         again.
12377
12378 Tue Feb 15 19:47:19 1994  Jason Merrill  <jason@deneb.cygnus.com>
12379
12380         * decl.c (grok_reference_init): Pawn off a lot of the work on
12381         convert_to_reference.  Generally do the right thing.
12382
12383         * cvt.c (convert_to_reference): Conform to the initial comment;
12384         i.e. don't create temps if decl != error_mark_node.  Handle
12385         cleanups better for temps that do get created.  Don't pretend
12386         that we can use an 'A' to initialize a 'const double &' just by
12387         tacking on a NOP_EXPR.  Support LOOKUP_SPECULATIVELY.
12388
12389         * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
12390         constructor calls.      
12391
12392 Mon Feb 14 14:50:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
12393
12394         * decl.c (grok_reference_init): Make a temporary for initializing
12395         const reference from constant expression.
12396
12397 Mon Feb 14 11:31:31 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12398
12399         * cp-tree.h, decl.c (set_identifier_local_value):  Deleted function.
12400         * decl.c (pushdecl):  Define decl in correct binding_level
12401         (which isn't always the inner_binding_level).
12402
12403         * cvt.c (build_up_reference):  Don't ever call expand_aggr_init.
12404         It's ugly, and I don't think it's the right thing to do.
12405
12406         * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 
12407         Remove NEW_CLASS_SCOPING, assuming it is always 1.
12408         * decl.c (pop_decl_level):  Removed; manually inlined.
12409
12410 Sun Feb 13 19:04:56 1994  Jason Merrill  <jason@deneb.cygnus.com>
12411
12412         * class.h (candidate): Add basetypes field.
12413
12414         * call.c (build_method_call): Do access checking after choosing a
12415         function, not before.
12416
12417         * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
12418         (mostlyclean): Remove ../cc1plus.
12419
12420 Fri Feb 11 11:52:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
12421
12422         * class.c (finish_struct): Don't allow adjusting access to a field
12423         of a base class if a local field has the same name.
12424
12425         * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
12426
12427 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan <gs4t@virginia.edu>
12428
12429             * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
12430             with destructor names when either NO_DOLLAR_IN_LABEL or
12431             NO_DOT_IN_LABEL are not defined.
12432
12433             Now `template <class T, T f(T&), const T*> class A {...}' works.
12434
12435             * pt.c (grok_template_type): substitute template parm types
12436             with actual types in complex type as well.
12437             (coerce_template_parms): update the grok_template_type ()
12438             function call.
12439
12440         * pt.c (tsubst): Traverse method list using DECL_CHAIN.
12441
12442         * decl.c (grok_op_properties): Allow operator++/-- to have
12443         default arguments.
12444
12445         * typeck2.c (store_init_value): Don't abort when called to
12446         initialize a type that needs constructing with a CONSTRUCTOR.
12447
12448         * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
12449         store_init_value fails, build and expand an INIT_EXPR.  If
12450         store_init_value succeeds, call expand_decl_init.
12451
12452 Fri Feb 11 02:49:23 1994  Mike Stump  <mrs@cygnus.com>
12453
12454         * class.c (build_vbase_path): Use complete_type_p instead of
12455         resolves_to_fixed_type_p to determine if the virtual bases are in
12456         their right place for the type of expr.  Cures problem of thinking a
12457         virtual base class is one place, when it is in fact someplace else.
12458
12459 Fri Feb 11 00:26:46 1994  Mike Stump  <mrs@cygnus.com>
12460
12461         * init.c (resolve_offset_ref): Make sure we first convert to
12462         intermediate type, if given, when dealing with members off `this'.
12463         Solves an incorrrect `type `foo' is not a base type for type
12464         `multiple'' when it is infact, a base type.
12465
12466 Thu Feb 10 21:49:35 1994  Mike Stump  <mrs@cygnus.com>
12467
12468         * class.c (modify_other_vtable_entries): Use get_binfo, instead
12469         of binfo_value.  Solves problem with compiler giving a `base class
12470         `B' ambiguous in binfo_value (compiler error)' on complex MI
12471         herarchies, when a virtual function is first defied in a virtual
12472         base class.
12473
12474 Thu Feb 10 17:19:32 1994  Mike Stump  <mrs@cygnus.com>
12475
12476         * class.c (build_vbase_path): Don't complain about ambiguous
12477         intermediate conversion when converting down to a virtual base
12478         class, even if they might seem to be ambiguous.
12479
12480 Thu Feb 10 12:18:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
12481
12482         * typeck2.c (build_functional_cast): #if 0 out constructor
12483         inheritance code, improve error messages.
12484
12485         * class.c (finish_base_struct): Complain about base with only
12486         non-default constructors in derived class with no constructors.
12487
12488         * decl.c (grokdeclarator): Fix detection of virtual new/delete.
12489
12490 Wed Feb  9 22:02:32 1994  Mike Stump  <mrs@cygnus.com>
12491
12492         * search.c (build_mi_virtuals, add_mi_virtuals,
12493         report_ambiguous_mi_virtuals): Removed unneeded code.
12494         * class.c (finish_struct_bits): Likewise.
12495
12496 Wed Feb  9 11:27:17 1994  Jason Merrill  <jason@deneb.cygnus.com>
12497
12498         * pt.c (end_template_instantiation): Push decl before
12499         pop_from_top_level.
12500
12501         * typeck2.c (build_m_component_ref): Make sure datum is of
12502         aggregate type.
12503
12504         * init.c (get_type_value): New function, returns
12505         IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
12506
12507         * call.c (build_method_call): Don't die on call to destructor for
12508         non-type.
12509
12510         * decl.c (grokdeclarator): Complain about virtual op new and op
12511         delete, make static virtuals unvirtual instead of unstatic.
12512
12513         * typeck.c (build_c_cast): Also call default_conversion on
12514         methods.
12515
12516         * decl.c (grokdeclarator): Don't complain about anonymous
12517         bitfields.
12518
12519         * parse.y (simple_stmt, for loops): Move the continue point after
12520         the cleanups.
12521
12522         * class.c (finish_struct): Fix setting of
12523         TYPE_HAS_COMPLEX_INIT_REF.
12524
12525 Tue Feb  8 13:21:40 1994  Jason Merrill  <jason@deneb.cygnus.com>
12526
12527         * init.c (build_new): Deal with `new double (1)'.
12528
12529         * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
12530         TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
12531         TYPE_NEEDS_CONSTRUCTING.
12532
12533         * decl.c (duplicate_decls): Propagate access decls.
12534
12535         * typeck2.c (process_init_constructor): Accept empty_init_node
12536         for initializing unions.
12537
12538         * class.c, lex.c, cp-tree.h: Use
12539         TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
12540         before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
12541         some places.
12542
12543         * decl.c (finish_decl): Don't complain about uninitialized const
12544         if it was initialized before.
12545
12546 Mon Feb  7 18:12:34 1994  Jason Merrill  <jason@deneb.cygnus.com>
12547
12548         * lex.c (default_assign_ref_body): Don't deal with vbases for
12549         now.
12550
12551         * decl.c (finish_decl): Fix reversed logic for objects and other
12552         things that need to be constructed but have no initializer.
12553
12554         * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
12555         set by grok_op_properties or finish_decl.
12556
12557         * decl.c: Don't warn about extern redeclared inline unless
12558         -Wextern-inline is given.
12559         * decl2.c (lang_decode_option): Likewise.
12560         * cp-tree.h: Likewise.
12561
12562 Mon Feb  7 17:29:24 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12563
12564         * decl.c (pushdecl_with_scope): Fix thinko.  Add forward
12565         declaration.
12566
12567         * decl.c (pushdecl_with_scope):  New function.
12568         * decl.c (pushdecl_top_level):  Use new function.
12569         * decl.c (pushtag):  Initialize newdecl.
12570         * decl.c (pushtag):  Push new type decl into correct scope.
12571
12572 Mon Feb  7 14:42:03 1994  Jason Merrill  <jason@deneb.cygnus.com>
12573
12574         * call.c, cvt.c, init.c, search.c, cp-tree.h:
12575         Eradicate LOOKUP_PROTECTED_OK.
12576
12577 Mon Feb  7 13:57:19 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12578
12579         * decl.c (pushtag, xref_tag), cp-tree.h:  Add extra parameter
12580          'globalize' to signify implicit declarations.
12581         * decl.c (globalize_nested_type, maybe_globalize_type):  Removed.
12582         * decl.c (set_identifier_type_value_with_scope):  New function.
12583         * decl.c (set_identifier_local_value):  Simplify.
12584         * spew.c (yylex, do_addr):  Modify to return a _DEFN if a
12585         forward declaration (followed by ';' and not preceded by 'friend').
12586         * class.c, decl.c, except.c, init.c, parse.y,
12587         pt.c, search.c: Add new argument to calls to xref_tag and
12588         pushtag.
12589
12590 Mon Feb  7 00:22:59 1994  Jason Merrill  <jason@deneb.cygnus.com>
12591
12592         * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
12593         ACCESSIBLY_DERIVED_FROM_P meant before.
12594         (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
12595
12596         * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
12597
12598         * search.c (get_base_distance_recursive): Members and friends of
12599         a class X can implicitly convert an X* to a pointer to a private or
12600         protected immediate base class of X.
12601         (get_binfo_recursive): Likewise.
12602         (get_base_distance): Ignore ambiguity if PROTECT < 0.
12603         (get_binfo): Lose multiple values of PROTECT.
12604         (compute_access): Protected is OK if the start of the
12605         search is an accessible base class of current_class_type.
12606
12607         * method.c (build_opfncall): Do check access on operator new here.
12608
12609         * decl.c (finish_function): Don't check access on operator new
12610         here.
12611
12612 Sun Feb  6 14:06:58 1994  Jason Merrill  <jason@deneb.cygnus.com>
12613
12614         * decl.c (xref_tag): The base of a derived struct is NOT always
12615         public.  Duh.
12616
12617         * pt.c (do_explicit_instantiation): New function, called from
12618         parser to do explicit function instantiation.
12619         (type_unification): Allow the args list to be terminated with
12620         void_list_node.
12621         (do_pending_expansions): Look at i->interface for non-member
12622         templates.
12623
12624         * parse.y (datadef): Move explicit_instantiation here.
12625         (structsp): From here.
12626         (datadef): Complain about `int;'.
12627
12628 Sun Feb  6 12:33:18 1994  Per Bothner  <bothner@kalessin.cygnus.com>
12629
12630         * pt.c (end_template_instantiation), cp-tree.h:  Remove unused
12631         second parameter, and simplify first from a TREE_LIST where
12632         we only care about its TREE_VALUE to just the value (an IDENTIFIER).
12633         * pt.c (instantiate_member_templates):  Simplify argument list
12634         from a TREE_LIST to just an IDENTIFIER.
12635         * lex.c (yyprint):  PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
12636         * parse.y (template_instantiate_once):  Simplify accordingly.
12637         * decl.c (inner_binding_level): New.  Use various places to
12638         simplify.
12639
12640 Sun Feb  6 02:49:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
12641
12642         * typeck2.c (build_functional_cast): int() -> int(0).
12643
12644 Sat Feb  5 00:53:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
12645
12646         * class.c (finish_struct): Don't do a bitwise copy for op= if the
12647         class has a virtual function table.
12648
12649         * typeck.c (convert_for_initialization): Restore warnings about
12650         not using defined op=.  Should really be my_friendly_aborts, I
12651         s'pose.
12652
12653 Fri Feb  4 14:21:00 1994  Jason Merrill  <jason@deneb.cygnus.com>
12654
12655         * class.c (finish_struct): Tidy up conditions for doing bitwise
12656         copies of objects.
12657
12658         * decl.c (build_default_constructor): #if 0 out.
12659
12660         * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
12661         CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
12662
12663         * decl.c (grokdeclarator): Don't return void_type_node for
12664         friends being defined here.
12665
12666         * init.c (perform_member_init): Only do the init if it's useful.
12667
12668         * lex.c (default_copy_constructor_body): If we don't need to do
12669         memberwise init, just call __builtin_memcpy.
12670         (default_assign_ref_body): Likewise.
12671
12672         * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
12673
12674 Fri Feb  4 13:02:56 1994  Mike Stump  <mrs@cygnus.com>
12675
12676         * lex.c (reinit_parse_for_method, cons_up_default_function):
12677         Don't give warn_if_unknown_interface warning when it came from a
12678         system header file.
12679         * pt.c (end_template_decl, instantiate_template): Likewise.
12680         * decl.c (start_decl): Likewise.
12681
12682 Fri Feb  4 00:41:21 1994  Jason Merrill  <jason@deneb.cygnus.com>
12683
12684         * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
12685         enums.
12686
12687         * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
12688         IS_AGGR_TYPE, since we don't know it's a type.
12689
12690 Thu Feb  3 11:36:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
12691
12692         * decl.c (grokdeclarator): Don't complain about anonymous unions.
12693
12694         * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
12695         anonymous, but had a name given to it by a typedef.
12696
12697         * decl.c (grokdeclarator): When renaming an anonymous struct, set
12698         TYPE_WAS_ANONYMOUS.
12699
12700         * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
12701
12702         * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
12703
12704         * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
12705         (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
12706         
12707         * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
12708         anonymous structs that get typedef'd.
12709
12710         * decl.c (grokdeclarator): Always return void_type_node for
12711         friends.
12712
12713         * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
12714         friends.
12715         (dump_function_decl): Don't print out default args for
12716         a function used in an expression.
12717
12718         * decl.c (grokdeclarator): Give error on abstract declarator used
12719         in an invalid context (i.e. `void (*)();').
12720
12721         * error.c (cp_line_of): Support _TYPE nodes.
12722         (cp_file_of): Likewise.
12723
12724         * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
12725         it can happen for the RHS of an assignment stmt where the LHS is
12726         a COND_EXPR.
12727
12728         * init.c (expand_aggr_init_1): Deal with bracketed initializer
12729         lists properly.
12730
12731         * class.c (finish_struct): Deal with enumerators and typedefs
12732         again.
12733
12734 Wed Feb  2 11:30:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
12735
12736         * class.c (finish_struct): Tidy up loop over fields.
12737
12738         * errfn.c (cp_thing): Don't advance twice after a format.
12739
12740         * class.c (finish_struct): Complain about needing a constructor
12741         if a member has only non-default constructors, and don't try to
12742         generate a default constructor.
12743
12744         * decl.c (finish_decl): Also do the constructor thing if
12745         TYPE_NEEDS_CONSTRUCTING is set (for arrays).
12746
12747         * search.c (unuse_fields): New function: mark all fields in this
12748         type unused.
12749         (dfs_unuse_fields): Helper function.
12750
12751         * class.c (pushclass): If the new class is the same as the old
12752         class, still unuse the fields.
12753         (unuse_fields): Move to search.c.
12754
12755         * decl.c (grok_op_properties): Add friendp argument.
12756         (grokfndecl): Pass it.
12757         (start_method): Likewise.
12758
12759         * decl2.c (delete_sanity): Add use_global_delete parameter to catch
12760         ::delete calls.
12761
12762         * parse.y (unary_expr): Pass new parameter to delete_sanity.
12763
12764         * lex.c (default_copy_constructor_body): Don't choke if the union
12765         has no fields.
12766         (default_assign_ref_body): Likewise.
12767
12768         * call.c (compute_conversion_costs_ansi): Do the right thing for
12769         ellipsis matches.
12770
12771         * decl.c (push_to_top_level): Optimize.
12772
12773         * decl.c (start_function): Look for the lexical scope of a friend
12774         in DECL_CLASS_CONTEXT.
12775
12776         * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
12777
12778 Tue Feb  1 15:59:24 1994  Jason Merrill  <jason@deneb.cygnus.com>
12779
12780         * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
12781
12782         * init.c (init_init_processing): Don't assign BIN/BID to the
12783         IDENTIFIER_GLOBAL_VALUEs of their respective operators.
12784         (build_new): Check TREE_GETS_PLACED_NEW.
12785
12786         * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
12787         op new with placement, set TREE_GETS_PLACED_NEW.
12788
12789         * cp-tree.h (ANON_UNION_P): New macro.  Applies to decls.
12790
12791         * class.c (finish_struct): Don't treat anonymous unions like
12792         other aggregate members.  Do synthesize methods for unions without
12793         a name, since they may or may not be "anonymous unions".
12794
12795         * decl2.c (grok_x_components): Wipe out memory of synthesized methods
12796         in anonymous unions.
12797
12798         * lex.c (default_copy_constructor_body): Support unions.
12799         (default_assign_ref_body): Likewise.
12800
12801 Mon Jan 31 12:07:30 1994  Jason Merrill  <jason@deneb.cygnus.com>
12802
12803         * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
12804
12805         * error.c (args_as_string): New function (%A), like type_as_string
12806         except NULL_TREE -> "..."
12807
12808         * call.c (build_overload_call_real): Fix for new overloading.
12809
12810         * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
12811         here.
12812
12813         * parse.y (operator_name): Instead of here.
12814
12815         * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
12816         of functions.
12817
12818         * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
12819
12820         * method.c (build_opfncall): Don't need to massage return value
12821         any more, call build_overload_call with all flags.
12822
12823         * typeck.c (build_x_binary_op): Put back speculative call to
12824         build_opfncall.
12825         (build_x_unary_op): Likewise.
12826         (build_x_conditional_expr): Likewise.
12827
12828 Mon Jan 31 10:00:30 1994  Mike Stump  <mrs@cygnus.com>
12829
12830         * cvt.c (build_type_conversion_1): Change call to pedwarn into
12831         warning, and conditionalize upon warn_cast_qual.
12832
12833 Fri Jan 28 11:48:15 1994  Jason Merrill  <jason@deneb.cygnus.com>
12834
12835         * search.c (lookup_field): If xbasetype is a binfo, copy it to
12836         avoid clobbering its inheritance info.
12837
12838         * call.c (build_method_call): Don't overwrite basetype_path with
12839         TYPE_BINFO (inst_ptr_basetype) if they have the same type.
12840
12841         * search.c (compute_access): Fix handling of protected inheritance
12842         and friendship with the enclosing class.
12843
12844         * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
12845         initialization of arbitrary variable.
12846
12847         * typeck2.c (build_functional_cast): Only try calling a method if
12848         one exists.
12849
12850         * decl.c (grokdeclarator): Move handling of constructor syntax
12851         initialization into first loop for generality.
12852         (parmlist_is_random): Lose.
12853
12854         * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
12855         to default function.
12856
12857 Thu Jan 27 19:26:51 1994  Jason Merrill  <jason@deneb.cygnus.com>
12858
12859         * decl.c (grokparms): Abort if we get called with something we don't
12860         expect.
12861
12862 Thu Jan 27 17:37:25 1994  Mike Stump  <mrs@cygnus.com>
12863
12864         * call.c (build_overload_call_real): Change argument complain to
12865         flags to match style of rest of code.  Pass it down to
12866         build_function_call_real as necessary.
12867         * call.c (build_overload_call, build_overload_call_maybe): Change
12868         argument complain to flags to match style of rest of code.
12869         * cp-tree.h (build_function_call_real): Added fourth flags
12870         argument.
12871         * cvt.c (convert_to_reference): Only give warning messages, if
12872         LOOKUP_COMPLAIN is set.
12873         * typeck.c (build_x_function_call): Change simple complain
12874         argument to build_overload_call_maybe and build_overload_call, to
12875         LOOKUP_COMPLAIN to match style of rest of code.
12876         * typeck2.c (build_functional_cast): Likewise.
12877         * typeck.c (build_function_call_real): Add flags, so that we can
12878         not complain, if we don't want to complain.  Complain about
12879         arguments, if we are complaining, otherwise don't.
12880         * typeck.c (build_function_call, build_function_call_maybe):
12881         Stick in flags argument.
12882         * typeck.c (build_x_binary_op, build_x_unary_op,
12883         build_x_conditional_expr, build_x_compound_expr): Follow style of
12884         build_x_indirect_ref, as it is more correct and more common.
12885
12886 Thu Jan 27 14:36:20 1994  Jason Merrill  <jason@deneb.cygnus.com>
12887
12888         * call.c (build_method_call): Don't check for being called with
12889         a pointer.
12890
12891         * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
12892         static initializer function.
12893
12894         * init.c (build_member_call): Use convert_force here, too.
12895
12896         * search.c (compute_access): Only treat static members specially
12897         if they are referenced directly.
12898
12899 Wed Jan 26 18:28:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
12900
12901         * gxxint.texi (Access Control): New node.
12902
12903         * search.c (current_scope): New function; returns whichever of
12904         current_class_type and current_function_decl is the most nested.
12905         (compute_access): Total overhaul to make it clearer and more
12906         correct.  Don't use the cache for now; in the only situation where
12907         it was used before, it gained nothing.  This frees up three of the
12908         DECL_LANG_FLAGs for possible other use!
12909
12910         * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
12911
12912         * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
12913
12914         * call.c (build_method_call): Use convert_force to cast `this' --
12915         rely on the access checking for the method itself.
12916
12917         * init.c (is_friend): Do the nesting thing, handle types.  I am
12918         my own friend.
12919         (is_friend_type): Become a shell for is_friend.
12920         (add_friend): Never stick in ctype.
12921         Why are the friendship functions in init.c, anyway?
12922
12923 Wed Jan 26 17:50:00 1994  Mike Stump  <mrs@cygnus.com>
12924
12925         * cvt.c (build_type_conversion_1): Don't conditionalize call to
12926         pedwarn upon pedantic.
12927
12928 Wed Jan 26 17:20:46 1994  Mike Stump  <mrs@cygnus.com>
12929
12930         * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
12931         gets a warning if one tries to initialize a non-const & from a
12932         non-lvalue.
12933         * cvt.c (convert_to_reference): Use %P format for argument
12934         numbers in warnings.
12935
12936 Wed Jan 26 14:35:06 1994  Mike Stump  <mrs@cygnus.com>
12937
12938         * init.c (build_delete): Follow style in call.c to construct the
12939         virtual call to the desctructor, as that code is right.  Fixes a
12940         problem of the compiler saying a pointer conversion is ambiguous.
12941
12942 Wed Jan 26 11:28:14 1994  Jason Merrill  <jason@deneb.cygnus.com>
12943
12944         * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
12945         VTABLE_NAME_FORMAT to VTABLE_NAME.
12946
12947         * *: s/visibility/access/g
12948
12949 Tue Jan 25 18:39:12 1994  Jason Merrill  <jason@deneb.cygnus.com>
12950
12951         * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
12952
12953 Tue Jan 25 13:54:29 1994  Mike Stump  <mrs@cygnus.com>
12954
12955         * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
12956         they break libg++.
12957
12958 Tue Jan 25 13:11:45 1994  Jason Merrill  <jason@deneb.cygnus.com>
12959
12960         * decl.c (duplicate_decls): Fix pointer arithmetic.
12961
12962 Mon Jan 24 15:50:06 1994  Chip Salzenberg  <chip@fin.uucp>
12963
12964             [ cp-* changes propagated from c-* changes in 940114 snapshot ]
12965             * cp-parse.y (maybe_attribute): Allow multiple __attribute__
12966             clauses on a declaration.
12967
12968 Mon Jan 24 17:06:23 1994  Jason Merrill  <jason@deneb.cygnus.com>
12969
12970         * class.c (finish_struct): Do synthesize methods for anon
12971         structs, just not unions.
12972
12973 Mon Jan 24 13:50:13 1994  Kung Hsu  <kung@mexican.cygnus.com>
12974
12975         * decl.c (xref_tag): handle anonymous nested type.
12976         * decl.c (globalize_nested_type): add no globalize bit check.
12977         * spew.c (hack_more_ids) : templated nested decl not push top
12978         level.
12979
12980         * parse.y : get rid of 'goto do_components'. It is much better
12981         for debugging.
12982
12983         * decl.c (is_anon_name): get rid of the function and use the
12984         macro ANON_AGGRNAME_P.
12985         * pt.c : ditto.
12986
12987 Fri Jan 21 14:06:02 1994  Jason Merrill  <jason@deneb.cygnus.com>
12988
12989         * class.c (finish_struct): Don't synthesize any methods for
12990         anonymous structs/unions.
12991
12992         * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
12993
12994 Thu Jan 20 18:56:46 1994  Jason Merrill  <jason@deneb.cygnus.com>
12995
12996         * method.c (build_opfncall): Call build_indirect_ref on
12997         synthesized instance for operator delete.
12998
12999         * pt.c (type_unification): Don't abort if called with a list of
13000         types in ARGS.
13001
13002         * class.c (instantiate_type): Deal with function templates.
13003
13004 Thu Jan 20 16:55:35 1994  Jim Wilson  <wilson@sphagnum.cygnus.com>
13005
13006         * Makefile.in (CC): Default to cc not gcc.
13007
13008 Thu Jan 20 13:47:54 1994  Jason Merrill  <jason@deneb.cygnus.com>
13009
13010         * typeck.c (build_modify_expr): Call constructor if appropriate.
13011
13012         * decl.c (push_to_top_level): Clear out class-level bindings cache.
13013
13014 Wed Jan 19 13:51:22 1994  Jason Merrill  <jason@deneb.cygnus.com>
13015
13016         * call.c (resolve_scope_to_name): Work recursively (previously only
13017         looked down one level).
13018
13019         * lex.c (do_pending_inlines): If we're still dealing with the last
13020         batch of inlines, don't start working on a new one.
13021
13022         * Makefile.in (stamp-parse): Update conflict count.
13023         (TAGS): Fix.
13024
13025         * parse.y (explicit_instantiation): New rule; implements
13026         'template A<int>' syntax (though not 'template foo(int)' yet).
13027         (structsp): Add explicit_instantiation.
13028
13029 Tue Jan 18 13:53:05 1994  Jason Merrill  <jason@deneb.cygnus.com>
13030
13031         * class.c (finish_struct, etc.): Simplify decision to synthesize
13032         a destructor.
13033
13034         * call.c, class.c, cp-tree.h, decl.c, init.c,
13035         ptree.c, search.c, typeck.c, typeck2.c: Nuke
13036         TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
13037         * init.c (expand_aggr_init_1): Don't try non-constructor methods
13038         of initializing objects.
13039         (build_new): Don't try other methods if the constructor lookup fails.
13040
13041         * class.c (finish_base_struct): Set cant_have_default_ctor and
13042         cant_synth_copy_ctor properly.
13043         (finish_struct): Likewise.
13044
13045 Mon Jan 17 13:58:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
13046
13047         * typeck.c (build_modify_expr_1): #if 0 out again.
13048         (build_modify_expr): #if 0 out memberwise init code again.
13049
13050         * lex.c (default_copy_constructor_body): Be const-correct.
13051         (default_assign_ref_body): Likewise.
13052
13053         * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
13054         whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
13055         (expand_aggr_init): Disable silent conversion from initializer list
13056         to list of args for a constructor.
13057
13058         * class.c (base_info): Lose needs_default_ctor.
13059         (finish_base_struct): Likewise.
13060         (finish_struct): Likewise.
13061
13062         * decl.c (init_decl_processing): Don't turn off flag_default_inline
13063         just because flag_no_inline is on.
13064         (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
13065         constructor.
13066
13067         * class.c (finish_struct): Synthesize default ctor whenever
13068         allowed.
13069
13070         * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
13071
13072 Sat Jan 15 18:34:33 1994  Mike Stump  <mrs@cygnus.com>
13073
13074         * Makefile.in, configure: Handle the C++ front-end in a
13075         subdirectory.
13076         * cp-*: Move C++ front-end to cp/*.
13077
13078 Fri Jan 14 14:09:37 1994  Jason Merrill  <jason@deneb.cygnus.com>
13079
13080         * cp-typeck.c (build_function_call_real): Modify to match other
13081         instances of taking the address of the function.
13082
13083         * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
13084         there are non-synthesized constructors.
13085         Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
13086         Always generate copy constructor if possible.
13087
13088         * cp-tree.h (lang_type): Add has_real_constructor bitfield.
13089         (TYPE_HAS_REAL_CONSTRUCTOR): Define.
13090
13091         * cp-lex.c (default_copy_constructor_body): Use init syntax
13092         for all bases.
13093
13094         * cp-type2.c (store_init_value): Only give error for initializer list
13095         if TYPE_HAS_REAL_CONSTRUCTOR.
13096
13097 Thu Jan 13 15:38:29 1994  Jason Merrill  <jason@deneb.cygnus.com>
13098
13099         * cp-tree.h (DECL_SYNTHESIZED): Add defn.
13100         (lang_decl): Add synthesized bitfield to decl_flags.
13101
13102         * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
13103         artificial methods, rather than a line # of 0.
13104
13105 Fri Jan 14 18:25:29 1994  Kung Hsu  <kung@mexican.cygnus.com>
13106
13107         * cp-decl (xref_tag): fix a bug in conflict type.
13108         * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
13109         type reference.
13110         * cp-spew.c (yylex) : generated SCOPED_NAME token.
13111         * cp-lex.c (yyprint): handle SCOPED_NAME.
13112
13113 Fri Jan 14 17:00:29 1994  Mike Stump  <mrs@cygnus.com>
13114
13115         * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
13116         not right.
13117
13118 Thu Jan 13 14:00:35 1994  Kung Hsu  <kung@mexican.cygnus.com>
13119
13120         * cp-decl2.c (grok_x_components): fix a bug that enum type does not
13121         have type_flags.
13122
13123 Thu Jan 13 11:39:34 1994  Mike Stump  <mrs@cygnus.com>
13124
13125         Ensure that all vtable pointers are initialized with all the right
13126         values.
13127
13128         * cp-class.c (is_normal): Changed to reflect new meaning of
13129         CLASSTYPE_VFIELD_PARENT.
13130         * cp-class.c (maybe_fixup_vptrs): Use of
13131         CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided.  Use
13132         BINFO_MODIFIED instead.
13133         * cp-class.c (finish_struct): Changed to reflect new meaning of
13134         CLASSTYPE_VFIELD_PARENT.
13135         * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
13136         * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
13137         coding it here.
13138         * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
13139         re-implement.
13140         * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
13141         * cp-tree.h (vfield_parent): Changed to integer.
13142         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
13143         meaning.
13144         * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
13145
13146 Wed Jan 12 18:24:16 1994  Kung Hsu  <kung@mexican.cygnus.com>
13147
13148         * cp-decl.c (xref_tag): re-implement globalize nested type.
13149         * cp-decl2.c (grok_x_components): ditto.
13150         * cp-parse.y: ditto.
13151         * cp-tree.h (lang_type): add no_globalize bit in type_flags.
13152
13153 Wed Jan 12 14:08:09 1994  Jason Merrill  <jason@deneb.cygnus.com>
13154
13155         * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
13156         decls with a definition attached.
13157
13158         * cp-typeck.c (build_modify_expr): Undo previous change in the case
13159         of INIT_EXPRs.
13160
13161 Tue Jan 11 19:33:03 1994  Jason Merrill  <jason@deneb.cygnus.com>
13162
13163         * cp-typeck.c (build_modify_expr): Replace code for generating
13164         assignment semantics for classes with an error.
13165         (build_modify_expr_1): #if 0 out.
13166
13167         * cp-decl.c (pushdecl): Patch bogus design of pushdecl
13168         behavior for overloaded functions (it doesn't push anything).
13169
13170         * cp-class.c (finish_struct): When generating default op=,
13171         set TYPE_HAS_ASSIGNMENT.
13172
13173 Mon Jan 10 18:48:06 1994  Mike Stump  <mrs@cygnus.com>
13174
13175         * cp-cvt.c (convert): Make {double, clashing enum} -> enum
13176         invalid.
13177         * cp-typeck.c (convert_for_assignment): Simplify.
13178         * cp-decl2.c (warn_enum_clash): Removed.
13179         * invoke.texi (-Wenum-clash): Removed.
13180         * toplev.c (-Wenum-clash): Removed.
13181
13182 Mon Jan 10 17:48:37 1994  Kung Hsu  <kung@mexican.cygnus.com>
13183
13184         * cp-decl.c (finish_decl): fix incorrect popclass call.
13185
13186         * cp-decl.c (is_anon_name): new function, check whether the name
13187         is anonymous name generated by compiler.
13188         * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
13189         * cp-spew.c (hack_more_ids): handle nested type in template.
13190         * cp-parse.y : handle nested type reference in uninstantiated
13191         template.
13192         * cp-call.c (build_method_call): handle uninstantiated template
13193         case.
13194         * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 
13195         type in template.
13196         * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 
13197         type by name.
13198         * cp-pt.c (tsubst): handle nested type search by name.
13199
13200 Mon Jan 10 14:32:18 1994  Jason Merrill  <jason@deneb.cygnus.com>
13201
13202         * cp-init.c (build_member_call): Propagate qualifiers to new type.
13203
13204         * cp-call.c (build_method_call): Count functions the new way.
13205
13206 Fri Jan  7 19:03:26 1994  Jason Merrill  <jason@deneb.cygnus.com>
13207
13208         * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
13209         too.
13210
13211 Tue Jan  4 16:45:51 1994  Kung Hsu  <kung@cirdan.cygnus.com>
13212
13213         * cp-parse.y: change to handle whether to globalize nested class.
13214         * cp-decl.c(xref_tag, maybe_globalize_type): Likewise.
13215
13216 Mon Jan  3 22:22:32 1994  Gerald Baumgartner  <gb@cygnus.com>
13217
13218         * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
13219         cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
13220         cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
13221         gplus.gperf toplev.c: Incorporated C++ signature extension.
13222         * cp-sig.c: New file, contains most of signature processing.
13223         * cp-hash.h: Regenerated from gplus.gperf.
13224
13225         * gcc.1 g++.1: Added explanation for  the `-fhandle-signatures'
13226         and `-fno-handle-signatures' command line flags.
13227
13228         * gcc.texi: Changed the last-modification date.
13229         * invoke.texi: Added `-fhandle-signatures' in the list of
13230         C++ language options.  Added explanation for this option.
13231
13232 Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>
13233
13234         * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
13235         harsh here.
13236
13237 Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>
13238
13239         * cp-pt.c (do_pending_expansions): Decide to expand a template
13240         member function, based upon it's class type, not the class type of
13241         the first place it was declared.
13242
13243 Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>
13244
13245         * cp-class.c (is_normal): New routine, use to determine when the
13246         given binfo is the normal one.  (The one that should have the simple
13247         vtable name.)
13248         * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
13249         to check if two fndecls are `the same'.  Sometimes this routine can
13250         modify the main vtable, and normal should be 1, in that case, so use
13251         is_normal() to determine if this is the main vtable for the class.
13252         Don't recurse down virtual bases, as they are shared, and we take
13253         care of them elsewhere.
13254         * cp-class.c (modify_vtable_entries): If we have already updated the
13255         vtable with the new virtual, don't do it again.
13256         * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
13257         appropriate.  Do virtual function overriding in virtual bases, after
13258         normal overriding, so that the base function list in DECL_VINDEX is
13259         not overridden, before we have a chance to run through the list.
13260         Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
13261         Make sure we pass the right address into modify_vtable_entries.
13262         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
13263         binfo is the one that has the vtable that we based our vtable on.
13264
13265 Fri Dec 24 09:40:52 1993  Michael Tiemann  <tiemann@blues.cygnus.com>
13266
13267         * cp-typeck.c (c_expand_start_case): Use default_conversion to
13268         convert expression from reference type if necessary.
13269
13270 Wed Dec 22 17:58:43 1993  Jason Merrill  <jason@deneb.cygnus.com>
13271
13272         * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
13273         trying to read its TREE_VALUE.
13274
13275         * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
13276         (finish_struct): Instead of here.
13277
13278 Tue Dec 21 14:34:25 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13279
13280         * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
13281         have TYPE_PTRMEMFUNC_P set before we try to build its
13282         CLASSTYPE_ID_AS_LIST.
13283         (get_decl_list): Likewise, when trying to read it.
13284
13285         * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
13286         (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
13287
13288 Mon Dec 20 13:35:03 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13289
13290         * cp-typeck.c (rationalize_conditional_expr): New function.
13291         (unary_complex_lvalue): Use it.
13292         (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
13293         with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
13294         SAVE_EXPR either.
13295
13296         * cp-decl2.c (explicit_warn_return_type): Deleted variable.
13297         (lang_decode_option): Set warn_return_type, not explicit_*, for
13298         -Wreturn-type and -Wall.  This is what rest_of_compilation uses to
13299         decide if it should go into jump_optimize or not.
13300         * cp-tree.h (explicit_warn_return_type): Deleted.
13301         * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
13302         (finish_function): Also complain about no return in a non-void fn if
13303         we're being pedantic (don't rely on use of -Wreturn-type).
13304
13305 Fri Dec 17 15:45:46 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13306
13307         * cp-decl.c (grokdeclarator): Forbid declaration of a function as
13308         static if it's being done inside another function.
13309
13310         * cp-search.c (compute_visibility): Check for friendship both ways.
13311
13312 Fri Dec 17 14:28:25 1993  Jason Merrill  <jason@deneb.cygnus.com>
13313
13314         * cp-cvt.c (build_default_binary_type_conversion): Make error
13315         messages more helpful.
13316
13317         * cp-error.c (op_as_string): New function, returns "operator =="
13318         given EQ_EXPR or suchlike.
13319
13320 Fri Dec 17 13:28:11 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13321
13322         * cp-call.c (print_n_candidates): New function.
13323         (build_overload_call_real): Use it when we complain about a call
13324         being ambiguous.
13325
13326 Fri Dec 17 12:41:17 1993  Jason Merrill  <jason@deneb.cygnus.com>
13327
13328         * cp-call.c (build_method_call): Fix checking for static call
13329         context.
13330
13331         * cp-method.c (build_opfncall): Call build_indirect_ref on argument
13332         to operator new.
13333
13334         * cp-init.c (build_new): Don't mess with rval when building
13335         indirect ref.
13336
13337 Thu Dec 16 16:48:05 1993  Kung Hsu  <kung@cirdan.cygnus.com>
13338
13339         * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
13340         NAME(type) may not be exist. It's not a problem for old compiler.
13341
13342 Thu Dec 16 14:46:06 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13343
13344         * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
13345         never used for anything.
13346         (struct lang_type, member type_flags): Delete field
13347         `alters_visibility', and up `dummy' by 1.
13348         * cp-class.c (finish_base_struct): Delete code that copies the
13349         setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
13350         (finish_struct): Delete code that sets it.
13351
13352 Thu Dec 16 14:44:39 1993  Jason Merrill  <jason@deneb.cygnus.com>
13353
13354         * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
13355         build_method_call that I messed up before.
13356
13357         * cp-search.c (get_base_distance): If protect > 1, allow immediate
13358         private base.
13359
13360         * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
13361         (finish_struct): Likewise.  Well, nigh-correctly; it won't deal
13362         properly with the case where a class contains an object of an
13363         ambiguous base class which has a protected op=.  Should be fixed
13364         when the access control code gets overhauled.
13365         (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
13366
13367 Thu Dec 16 12:17:06 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13368
13369         * cp-lex.c (real_yylex): Turn the code back on that deals with
13370         __FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
13371         avoid the ambiguity problems that led to it being turned off in the
13372         first place.
13373
13374         * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
13375         to see if something is a method.
13376
13377 Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>
13378
13379         * cp-typeck.c (build_modify_expr): Avoid error messages on small
13380         enum bit fields.
13381         * cp-typeck.c (convert_for_assignment): Add missing argument to
13382         cp_warning and cp_pedwarn calls.
13383
13384 Wed Dec 15 18:25:32 1993  Jason Merrill  <jason@deneb.cygnus.com>
13385
13386         * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
13387         initializers; it's just anachronistic.
13388
13389         * cp-decl.c (finish_decl): Don't require external-linkage arrays
13390         to have a complete type at declaration time when pedantic.
13391
13392 Tue Dec 14 11:37:23 1993  Jason Merrill  <jason@deneb.cygnus.com>
13393
13394         * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
13395
13396         * cp-call.c (build_method_call): Don't dereference pointer given
13397         as instance.
13398
13399         * cp-decl.c (finish_function): Don't pass pointer to
13400         build_method_call.
13401         (finish_function): Likewise.
13402
13403         * cp-typeck.c (build_x_function_call): Likewise.
13404
13405         * cp-method.c (build_component_type_expr): Likewise.
13406
13407         * cp-init.c (build_member_call): Likewise.
13408         (build_new): Likewise.
13409
13410 Mon Dec 13 18:04:33 1993  Kung Hsu  <kung@cirdan.cygnus.com>
13411
13412         * cp-decl.c (xref_tag): fix regression created by changes made 
13413         in Dec. 7 1993.
13414         * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
13415
13416 Fri Dec 10 12:40:25 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13417
13418         * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
13419         out the final evaluation of the function, so we can see if ELLIPSIS,
13420         USER, and EVIL were set at the end.
13421
13422         * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
13423         only go for setting TRIVIAL_CODE if we are dealing with types that
13424         are compatible.
13425
13426 Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>
13427
13428         * cp-decl.c (flag_huge_objects): New flag to allow large objects.
13429         * toplev.c (lang_options): Likewise.
13430         * cp-decl2.c (flag_huge_objects, lang_f_options): Likewise.
13431         * cp-decl.c (delta_type_node): New type for delta entries.
13432         * cp-tree.h (delta_type_node): Likewise.
13433         * cp-decl.c (init_decl_processing): Setup delta_type_node.
13434         * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
13435         delta_type_node instead of short_integer_type_node. 
13436         * cp-class.c (build_vtable_entry): Likewise.
13437
13438 Thu Dec  9 16:19:05 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13439
13440         * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
13441         NO_{DOLLAR,DOT} macro checks, so it always gets defined.
13442         (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
13443
13444 Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>
13445
13446         * cp-decl.c (finish_decl): Make sure things that can go into
13447         "common", do go into common, if -fcommon is given.
13448
13449 Wed Dec  8 13:01:54 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13450
13451         * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
13452         (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
13453         argument matching diagnostics to make instantly clear what the
13454         compiler is doing.
13455
13456         * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
13457         then check to see if the penalty was increased due to
13458         signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
13459
13460 Tue Dec  7 18:29:14 1993  Kung Hsu  <kung@cirdan.cygnus.com>
13461
13462         * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
13463         problem.
13464
13465 Tue Dec  7 16:09:34 1993  Jason Merrill  <jason@deneb.cygnus.com>
13466
13467         * cp-class.c (finish_struct): Before synthesizing methods, if no
13468         methods have yet been declared then set nonprivate_method.  Don't
13469         set non_private method after synthesizing a method.
13470
13471         * cp-lex.c (extract_interface_info): If flag_alt_external_templates
13472         is set, tie emitted code to the location of template instantiation,
13473         rather than definition.
13474
13475         * cp-tree.h: Declare flag_alt_external_templates.
13476
13477         * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
13478
13479         * toplev.c (lang_options): Likewise.
13480
13481 Mon Oct  4 12:50:02 1993  Chip Salzenberg  <chip@fin.uucp>
13482
13483         [changes propagated from 930810 snapshot]
13484         * cp-decl.c (init_decl_processing): Make long long available for use
13485         as SIZE_TYPE and PTRDIFF_TYPE.
13486         (finish_decl): Allow file-scope static incomplete array.
13487         (grokdeclarator): Don't pass on const and volatile fron function
13488         value type to function type.
13489         Warn here for volatile fn returning non-void type.
13490         * cp-parse.y (attrib): Accept attributes `volatile' with alias
13491         `noreturn', and `const'.
13492         * cp-typeck.c (default_conversion): Don't lose const and volatile.
13493         (build_binary_op_nodefault): Generate pedantic warning for comparison
13494         of complete pointer type with incomplete pointer type.
13495         (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
13496
13497 Tue Dec  7 10:46:48 1993  Jason Merrill  <jason@deneb.cygnus.com>
13498
13499         * cp-init.c (expand_vec_init): When creating a temporary for copying
13500         arrays, use the type of the source, not the target.
13501
13502         * cp-cvt.c (convert): Pass an argument for errtype to
13503         convert_to_reference.
13504
13505         * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
13506         methods, -> and `this'.
13507
13508 Mon Dec  6 17:12:33 1993  Jason Merrill  <jason@deneb.cygnus.com>
13509
13510         * cp-error.c (parm_as_string): New function; returns `this' or arg
13511         number.  Corresponds to %P.
13512         (dump_expr): Deal with method calls.
13513
13514         * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
13515         * cp-typeck.c (convert_for_assignment): Likewise.
13516         (warn_for_assignment): Lose.
13517
13518 Mon Dec  6 11:33:35 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13519
13520         * cp-call.c (ideal_candidate_ansi): Delete code that was never
13521         doing anything useful.  Instead, sort once, and DO NOT wipe
13522         out any codes with EVIL_CODE, since that's what we use as a
13523         marker for the end of the list of candidates.
13524
13525         * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
13526
13527 Mon Dec  6 12:49:17 1993  Jason Merrill  <jason@deneb.cygnus.com>
13528
13529         * cp-init.c (get_aggr_from_typedef): New function, like
13530         is_aggr_typedef but returns the _TYPE.
13531
13532         * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
13533
13534 Sun Dec  5 18:12:48 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13535
13536         * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
13537
13538 Thu Nov 25 23:50:19 1993  Chip Salzenberg  <chip@fin.uucp>
13539
13540         Delay language context change until beginning of next decl.
13541
13542         * cp-lex.h (c_header_level): Removed.
13543         (pending_lang_change): Declared.
13544         * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
13545         (pending_lang_change): Defined.
13546         (check_newline): Rework code that recognizes line number and
13547         filename changes.  Instead of pushing and popping lang context,
13548         increment and decrement pending_lang_change.
13549         (do_pending_lang_change):  Push and pop lang context according
13550         to value of pending_lang_change.
13551         * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
13552         (extdef): Same as extdef, but call do_pending_lang_change() first.
13553
13554 Mon Nov 15 15:39:15 1993  Chip Salzenberg  <chip@fin.uucp>
13555
13556         * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
13557         compare of ptr with 0 only if pedantic in both cases.
13558
13559 Thu Nov 25 13:31:37 1993  Chip Salzenberg  <chip@fin.uucp>
13560
13561         Reinstate the below patch, which got lost in the Cygnus merge:
13562         Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
13563         * cp-parse.y (maybe_type_qual): Don't fail to set $$.
13564
13565 Wed Nov 17 19:03:30 1993  Chip Salzenberg  <chip@fin.uucp>
13566
13567         * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
13568
13569 Fri Oct 22 20:43:37 1993  Paul Eggert  <eggert@twinsun.com>
13570
13571         * cp-lex.c (real_yylex): Diagnose floating point constants
13572         that are too large.
13573
13574 Wed Nov 17 19:10:37 1993  Chip Salzenberg  <chip@fin.uucp>
13575
13576         * cp-type2.c (build_functional_cast): ARM page 16: When a class
13577         and an object, function or enumerator are declared in the same
13578         scope with the same name, the class name is hidden.
13579
13580 Wed Nov 17 19:07:18 1993  Chip Salzenberg  <chip@fin.uucp>
13581
13582         * cp-call.c (convert_harshness_ansi): Distinguish float, double,
13583         and long double from each other when overloading.
13584         (compute_conversion_costs_{ansi,old}, build_method_call,
13585         build_overlay_call_real, convert_to_aggr): Always set and
13586         always use H_LEN member of candidate structure.
13587
13588 Mon Oct 11 23:10:53 1993  Chip Salzenberg  <chip@fin.uucp>
13589
13590         * cp-decl.c (duplicate_decls): Note redeclarations of library
13591         functions, and generate distinct warnings for them.
13592
13593 Mon Oct  4 12:26:49 1993  Chip Salzenberg  <chip@fin.uucp>
13594
13595         Support format warnings in G++.
13596
13597         * cp-tree.h: Protect against multiple inclusion.
13598         Declare all public functions in c-common.c (copy from c-tree.h).
13599         (STDIO_PROTO): Define.
13600         (warn_format): Declare.
13601         (record_format_info): Remove declaration.
13602         * cp-decl.c (init_decl_processing): Call init_function_format_info.
13603         * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
13604         * cp-typeck.c (build_function_call_real): Call check_function_format.
13605         (record_format_info): Remove -- obsolete stub.
13606
13607 Sat Jul 24 12:04:29 1993  Chip Salzenberg  <chip@fin.uucp>
13608
13609         * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
13610         following an extern one (for -Wredundant-decls).
13611         * cp-parse.y (primary): In statement expression case, if compstmt
13612         returns something other than a BLOCK, return it unchanged.
13613
13614 Thu Dec  2 20:44:58 1993  Chip Salzenberg  <chip@fin.uucp>
13615
13616         * cp-decl.c (warn_extern_redeclared_static): New function made
13617         from code extracted from pushdecl.
13618         (duplicate_decls, pushdecl): Call new function.
13619         (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
13620         to be a TREE_LIST when function is declared in 'extern "C" {}'.
13621
13622 Fri Dec  3 16:01:10 1993  Jason Merrill  <jason@deneb.cygnus.com>
13623
13624         * cp-class.c (duplicate_tag_error): Use cp_error.
13625         (finish_base_struct): Check for ambiguity with direct base, and don't
13626         generate op= or copy ctor if it exists.
13627
13628 Fri Dec  3 15:32:34 1993  Kung Hsu  <kung@cirdan.cygnus.com>
13629
13630         * cp-init.c (expand_member_init): when initializer name is null,
13631         don't try to build it now because emit_base_init will handle it.
13632
13633 Fri Dec  3 12:28:59 1993  Jason Merrill  <jason@deneb.cygnus.com>
13634
13635         * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
13636         code such as ExceptionHandler::operator=.
13637
13638 Fri Dec  3 10:32:08 1993  Jason Merrill  <jason@deneb.cygnus.com>
13639
13640         * cp-decl.c (grokdeclarator): Don't try to print out dname when
13641         complaining about arrays of references if decl_context==TYPENAME,
13642         since it will be null.
13643
13644         * cp-decl2.c: Default to flag_ansi_overloading.
13645
13646 Thu Dec  2 18:05:56 1993  Kung Hsu  <kung@cirdan.cygnus.com>
13647
13648         * cp-call.c (build_method_call): use binfo from instance if it's
13649         different from binfo (basetype_path) passed from above.
13650
13651 Wed Nov 17 19:14:29 1993  Chip Salzenberg  <chip@fin.uucp>
13652
13653         cp-error.c (dump_expr): Use unsigned chars to output a
13654         TREE_REAL_CST in hex.
13655
13656 Thu Dec  2 11:05:48 1993  Jason Merrill  <jason@deneb.cygnus.com>
13657
13658         * cp-class.c (finish_struct): Fix typo in setting
13659         cant_synth_asn_ref.
13660
13661         * cp-tree.h (TYPE_NESTED_NAME): New macro, does
13662         DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
13663
13664         * cp-lex.c (default_copy_constructor_body): Change
13665         DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
13666         (default_assign_ref_body): Likewise.
13667         (default_copy_constructor_body): Call operator= explicitly for
13668         base classes that have no constructor.
13669
13670 Thu Dec  2 10:47:15 1993  Michael Tiemann  <tiemann@blues.cygnus.com>
13671
13672         * cp-call.c (build_method_call): If the instance variable is
13673         converted to error_mark_node when we're trying to convert it to the
13674         base type of a method we're looking up, return error_mark_node.
13675
13676 Thu Dec  2 10:41:16 1993  Torbjorn Granlund  <tege@cygnus.com>
13677
13678         * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
13679         cases, tests for unsigned operands by peeking inside a NOP_EXPR.
13680
13681 Wed Dec  1 13:33:34 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13682
13683         * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
13684         harshness_code, not the size of short, for clearing out the
13685         ansi_harshness.
13686
13687         * cp-call.c (print_candidates): New function.
13688         (build_method_call): When we had some candidates, but didn't get a
13689         usable match, don't report that we got an error with the first
13690         candidate.  Instead, say there were no matches, and list the
13691         candidates with print_candidates.  In the second pass, make sure we
13692         clear out ever_seen, so we can accurately count the number of
13693         functions that qualified.
13694
13695 Wed Dec  1 09:53:59 1993  Torbjorn Granlund  <tege@cygnus.com>
13696
13697         * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
13698         only if op1 is known to be != -1.
13699         (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
13700
13701 Tue Nov 30 14:07:26 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>
13702
13703         * cp-method.c (hack_identifier): If the field itself is private, and
13704         not from a private base class, say so.
13705
13706 Mon Nov 29 03:00:56 1993  Jason Merrill  <jason@deneb.cygnus.com>
13707
13708         * cp-decl.c (grokdeclarator): Always warn on initialization of
13709         const member.
13710
13711 Wed Nov 24 00:49:35 1993  Jason Merrill  <jason@deneb.cygnus.com>
13712
13713         * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
13714         (finish_base_struct): Set cant_synth_asn_ref properly.
13715
13716         * cp-lex.c (cons_up_default_function): Add section for operator=.
13717         (default_assign_ref_body): New function, mostly cribbed from
13718         default_copy_constructor_body.
13719
13720         * cp-class.c (base_info): Add members cant_synth_copy_ctor,
13721         cant_synth_asn_ref, no_const_asn_ref.
13722         (finish_base_struct): Update no_const_asn_ref, note that you should
13723         update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
13724         (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
13725         initialize them properly.  Set no_const_asn_ref properly.  Set
13726         cant_synth_* in some of the situations where they should be set.
13727         Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
13728         to cons_up_default_function for operator=.
13729
13730 Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>
13731
13732         * cp-cvt.c (convert_force): Add code to perform casting of pointer
13733         to member function types.
13734         * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
13735         when the conversion should be done, regardless.
13736         * cp-tree.h (build_ptrmemfunc): Likewise.
13737         * cp-type2.c (digest_init): Likewise.
13738         * cp-typeck.c (convert_for_assignment): Likewise.
13739
13740 Tue Nov 23 18:06:58 1993  Jason Merrill  <jason@deneb.cygnus.com>
13741
13742         * cp-error.c (dump_expr): Do the right thing for variables of
13743         reference type.
13744
13745         * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
13746         and its kin properly.
13747         (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
13748
13749 Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>
13750
13751         * cp-method.c (build_opfncall): Don't count pointer to member
13752         functions as aggregates here, as we don't want to look up methods in
13753         them.  The compiler would core dump if we did, as they don't have
13754         normal names.
13755         * cp-typeck.c (build_indirect_ref): Improve wording on error
13756         message.
13757
13758 Mon Nov 22 14:22:23 1993  Jason Merrill  <jason@deneb.cygnus.com>
13759
13760         * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
13761         (since it's supported in other compiler bits).
13762
13763         * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
13764         argument.
13765
13766         * cp-error.c (dump_function_decl): Don't print return type for
13767         constructors and destructors.
13768
13769         * cp-cvt.c (cp_convert_to_pointer): Import code from
13770         convert_to_pointer so we can return error_mark_node in the case of an
13771         error, and to allow more meaningful error messages.
13772         (build_type_conversion): Don't go through void* when trying
13773         to convert to a pointer type.
13774
13775         * cp-decl.c (grokfndecl): Move call to grok_op_properties back
13776         after grokclassfn so that it's dealing with the right decl.
13777         (grok_op_properties): Don't assert !methodp for op new and op delete.
13778
13779         * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
13780         no uses of it in the compiler).
13781
13782         * cp-call.c (build_scoped_method_call): Fix for destructors of simple
13783         types.
13784         (build_method_call): Likewise.
13785
13786 Fri Nov 19 12:59:38 1993  Jason Merrill  <jason@deneb.cygnus.com>
13787
13788         * cp-tree.c (count_functions): Abstraction function.
13789
13790         * cp-call.c (build_overload_call_real): Deal with new overloading
13791         properly, remove dead code.
13792
13793         * gcc.c (default_compilers): Generate and use .ii files in the
13794         intermediate stage of compiling C++ source.
13795
13796 Fri Nov 19 11:26:09 1993  Jim Wilson  <wilson@sphagnum.cygnus.com>
13797
13798         * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
13799         address before using it, so it can be later safely compared.
13800
13801 Fri Nov 12 15:30:27 1993  Jason Merrill  <jason@deneb.cygnus.com>
13802
13803         * cp-pt.c (tsubst): Deal with new overloading.
13804
13805         * cp-typeck.c (fntype_p): is the arg function type?
13806         (comp_target_parms): pedwarn on conversion from (anything) to (...).
13807         (build_x_function_call): Deal with new overloading.
13808
13809         * cp-tree.c (decl_list_length): Deal with new overloading.
13810         (decl_value_member): Like value_member, but for DECL_CHAINs.
13811
13812         * cp-decl.c (duplicate_decls): Deal with new overloading.
13813         (start_decl): Likewise.
13814
13815         * cp-class.c (instantiate_type): Deal with new overloading.
13816
13817         * cp-call.c (convert_harshness_ansi): Deal with new overloading.
13818         (convert_harshness_old): Deal with new overloading.
13819         (build_overload_call_real): Likewise.
13820
13821 Mon Nov  8 13:50:49 1993  Jason Merrill  <jason@deneb.cygnus.com>
13822
13823         * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
13824         if unambiguous, NULL_TREE otherwise.
13825         (get_first_fn): Returns the first appropriate FUNCTION_DECL.
13826         (is_overloaded_fn): Returns whether or not the passed tree is
13827         a function or list of functions.
13828
13829         * cp-init.c (init_init_processing): use `get_first_fn' to find
13830         the FUNCTION_DEFN for new and delete.
13831
13832         * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
13833         code size in half (I spit on special cases).
13834
13835 Tue Sep  7 20:03:33 1993  Jason Merrill  <jason@deneb.cygnus.com>
13836
13837         * cp-decl.c: Allow references and template type parameters as well