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.