OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [cp/] [ChangeLog-1998] - Blame information for rev 711

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 710 jeremybenn
Tue Dec 22 15:09:25 1998  Kaveh R. Ghazi  
2
 
3
        * Makefile.in (cvt.o): Depend on toplev.h.
4
 
5
        * cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.
6
 
7
        * cvt.c: Include toplev.h.
8
 
9
        * except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
10
        definitions.
11
 
12
        * init.c (expand_vec_init): Initialize variable `itype'.
13
 
14
        * lex.c (yyerror): Cast the argument passed to a ctype function to
15
        an unsigned char.
16
 
17
        * method.c (build_mangled_C9x_name): Wrap prototype and definition
18
        in "HOST_BITS_PER_WIDE_INT >= 64".
19
 
20
        * typeck.c (build_binary_op): Mark parameter `convert_p' with
21
        ATTRIBUTE_UNUSED.
22
 
23
1998-12-22  Mark Mitchell  
24
 
25
        * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation.
26
        * tree.c (build_exception_variant): Don't crash on empty throw
27
        specs.
28
 
29
1998-12-18  DJ Delorie  
30
 
31
        * cvt.c (convert_to_reference): Check for both error_mark_node
32
        and NULL_NODE after call to convert_for_initialization.
33
 
34
1998-12-17  Jason Merrill  
35
 
36
        * error.c (interesting_scope_p): New fn.
37
        (dump_simple_decl): Use it.
38
        (dump_expr, case CONSTRUCTOR): Force a & for a PMF.
39
        (dump_expr, case OFFSET_REF): Print ->* if appropriate.
40
 
41
1998-12-16  Mark Mitchell  
42
 
43
        * class.c (resolve_address_of_overloaded_function): Do conversion
44
        to correct type here, rather than ...
45
        (instantiate_type): Here.
46
 
47
        * cp-tree.h (DECL_TEMPLATE_PARM_P): New macro.
48
        (DECL_TEMPLATE_TEMPLATE_PARM_P): Use it.
49
        (decl_template_parm_p): Remove.
50
        * decl.c (pushdecl): Don't set DECL_CONTEXT for a template
51
        parameter.
52
        * lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P.
53
        * pt.c (push_inline_template_parms_recursive): Set it.
54
        (decl_template_parm_p): Remove.
55
        (check_template_shadow): Use DECL_TEMPLATE_PARM_P.
56
        (process_template_parm): Set it.
57
 
58
Wed Dec 16 16:33:58 1998  Dave Brolley  
59
 
60
        * lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
61
        if configured with cpplib.
62
 
63
1998-12-15  Mark Mitchell  
64
 
65
        * decl.c (poplevel): Make sure ns_binding is initialized.
66
 
67
        * decl.c (finish_function): Undo inadvertent change in previous
68
        patch.
69
 
70
1998-12-14  Mark Mitchell  
71
 
72
        * class.c (pushclass): Tweak handling of class-level bindings.
73
        (resolve_address_of_overloaded_function): Update pointer-to-member
74
        handling.
75
        (instantiate_type): Likewise.
76
        * cvt.c (cp_convert_to_pointer): Likewise.
77
        * decl.c (pop_binding): Take the DECL to pop, not just the name.
78
        Deal with `struct stat' hack.
79
        (binding_level): Add to documentation.
80
        (push_binding): Clear BINDING_TYPE.
81
        (add_binding): New function.
82
        (push_local_binding): Use it.
83
        (push_class_binding): Likewise.
84
        (poplevel): Adjust calls to pop_binding.
85
        (poplevel_class): Likewise.
86
        (pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden
87
        declarations to current binding level.
88
        (push_class_level_binding): Likewise.
89
        (push_overloaded_decl): Adjust handling of OVERLOADs in local
90
        bindings.
91
        (lookup_namespace_name): Don't crash when confronted with a
92
        TEMPLATE_DECL.
93
        (lookup_name_real): Do `struct stat' hack in local binding
94
        contexts.
95
        (build_ptrmemfunc_type): Adjust documentation.
96
        (grokdeclarator): Don't avoid building real array types when
97
        processing templates unless really necessary.
98
        (finish_method): Adjust calls to pop_binding.
99
        * decl2.c (reparse_absdcl_as_expr): Recursively call ourselves,
100
        not reparse_decl_as_expr.
101
        (build_expr_from_tree): Deal with a template-id as the function to
102
        call in a METHOD_CALL_EXPR.
103
        * pt.c (convert_nontype_argument): Tweak pointer-to-member handling.
104
        (maybe_adjust_types_For_deduction): Don't do peculiar things with
105
        METHOD_TYPEs here.
106
        (resolve_overloaded_unification): Handle COMPONENT_REFs.  Build
107
        pointer-to-member types where necessary.
108
        * tree.c (build_cplus_array_type_1): Don't avoid building real
109
        array types when processing templates unless really necessary.
110
        (build_exception_variant): Compare the exception lists correctly.
111
 
112
1998-12-13  Mark Mitchell  
113
 
114
        * cp-tree.def (CPLUS_BINDING): Update documentation.
115
        * cp-tree.h (LOCAL_BINDING_P): New macro.
116
        (lang_identifier): Rename local_value to bindings.
117
        (tree_binding): Make `scope' of type `void*', not `tree'.
118
        (BINDING_SCOPE): Update documentation.
119
        (IDENTIFIER_LOCAL_VALUE): Remove.
120
        (IDENTIFIER_CLASS_VALUE): Document.
121
        (IDENTIFIER_BINDING): New macro.
122
        (IDENTIFIER_VALUE): Likewise.
123
        (TIME_IDENTIFIER_TIME): Likewise.
124
        (TIME_IDENTIFIER_FILEINFO): Likewise.
125
        (IMPLICIT_TYPENAME_P): Likewise.
126
        (set_identifier_local_value): Remove.
127
        (push_local_binding): New function.
128
        (push_class_binding): Likewise.
129
        * class.c (pushclass): Update comments; use push_class_binding.
130
        * decl.c (set_identifier_local_value_with_scope): Remove.
131
        (set_identifier_local_value): Likewise.
132
        (push_binding): New function.
133
        (pop_binding): Likewise.
134
        (binding_level): Update documentation.  Remove shadowed.
135
        (BINDING_LEVEL): New macro.
136
        (free_binding_nodes): New variable.
137
        (poplevel): Adjust for new name-lookup scheme.  Don't mess up
138
        BLOCK_VARs when doing for-scope extension.  Remove effectively
139
        dead code.
140
        (pushlevel_class): Tweak formatting.
141
        (poplevel_class): Adjust for new name-lookup scheme.
142
        (print_binding_level): Likewise.
143
        (store_bindings): Likewise.
144
        (pushdecl): Likewise.
145
        (pushdecl_class_level): Likewise.
146
        (push_class_level_binding): Likewise.
147
        (push_overloaded_decl): Update comments.  Adjust for new
148
        name-lookup scheme.
149
        (lookup_name_real): Likewise.
150
        (lookup_name_current_level): Likewise.
151
        (cp_finish_decl): Likewise.
152
        (require_complete_types_for_parms): Likewise.  Remove misleading
153
        #if 0'd code.
154
        (grok_parms): Likewise.  Don't call
155
        require_complete_types_for_parms here.
156
        (grok_ctor_properties): Don't treat templates as copy
157
        constructors.
158
        (grop_op_properties): Or as assignment operators.
159
        (start_function): Document.  Adjust for new name-lookup scheme.
160
        (finish_function): Likewise.
161
        * decl2.c (do_local_using_decl): Use push_local_binding.
162
        * lex.c (begin_definition_of_inclass_inline): New function, split
163
        out from ...
164
        (do_pending_inlines): Here, and ...
165
        (process_next_inline): Here.
166
        (get_time_identifier): Use TIME_IDENTIFIER_* macros.
167
        (init_filename_times): Likewise.
168
        (extract_interface_info): Likewise.
169
        (ste_typedecl_interface_info): Likewise.
170
        (check_newline): Likewise.
171
        (dump_time_statistics): Likewise.
172
        (handle_cp_pragma): Likewise.
173
        (do_identifier): Adjust for new name-lookup scheme.
174
        * parse.y (function_try_block): Return ctor_initializer_opt value.
175
        (fndef): Use it.
176
        (fn.defpen): Pass appropriate values to start_function.
177
        (pending_inline): Use functor_try_block value, and pass
178
        appropriate values to finish_function.
179
        * pt.c (is_member_template): Update documentation; remove handling
180
        of FUNCTION_DECLs.  As per name, this function should deal only in
181
        TEMPLATE_DECLs.
182
        (decl_template_parm_p): Change name of olddecl parameter to decl.
183
        (check_template_shadow): Adjust for new name-lookup scheme.
184
        (lookup_template_class): Likewise.
185
        (tsubst_decl): Tweak so as not to confuse member templates with
186
        copy constructors and assignment operators.
187
        (unify): Handle UNION_TYPEs.
188
        * ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
189
        (lang_print_xnode): Adjust for new name-lookup scheme.
190
        * typeck.c (mark_addressable): Likewise.
191
        (c_expand_return): Likewise.
192
 
193
1998-12-08  Jason Merrill  
194
 
195
        * decl.c (grokdeclarator): Allow field with same name as class
196
        in extern "C".
197
 
198
        * decl.c (lookup_name_real): Don't limit field lookup to types.
199
        * class.c (check_member_decl_is_same_in_complete_scope): No error
200
        if icv and x are the same.
201
        * lex.c (do_identifier): Tweak error message.
202
 
203
1998-12-10  Mark Mitchell  
204
 
205
        * decl.c (start_enum): Use push_obstacks, not
206
        end_temporary_allocation.
207
        (finish_enum): Call pop_obstacks.
208
 
209
1998-12-10  Mark Mitchell  
210
 
211
        * class.c (instantiate_type): Return error_mark_node rather than
212
        junk.
213
 
214
1998-12-09  Mark Mitchell  
215
 
216
        * cp-tree.h (most_specialized_instantiation): New function.
217
        (print_candidates): Likewise.
218
        * class.c (validate_lhs): Remove.
219
        (resolve_address_of_overloaded_function): New function, split out
220
        and then substantially reworked, from ...
221
        (instantiate_type): Use it.  Simplify.
222
        * cvt.c (convert_to_reference): Complain when caller has indicated
223
        that's the right thing to do.  Don't crash if instantiate_type
224
        fails.
225
        * pt.c: Substitute `parameters' for `paramters' throughout.
226
        (print_candidates): Don't make it static.
227
        (most_specialized_instantiation): Split out from ...
228
        (most_specialized): Here.
229
 
230
Wed Dec  9 15:33:01 1998  Dave Brolley  
231
 
232
        * lex.c (lang_init_options): Initialize cpplib.
233
        * decl2.c (parse_options,cpp_initialized): Removed.
234
        (lang_decode_option): Move initialization of cpplib to
235
        lang_init_options.
236
 
237
1998-12-09  Mark Mitchell  
238
 
239
        * decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as
240
        well as the TYPE_DECL, when a typedef name is assigned to a
241
        previously anonymous type.
242
 
243
1998-12-08  Andrew MacLeod  
244
 
245
        * cp/except.c (call_eh_info): Use __start_cp_handler instead of
246
        __cp_eh_info for getting the eh info pointer.  Add table_index to
247
        field list.
248
        (push_eh_cleanup): Don't increment 'handlers' data field.
249
        (process_start_catch_block): Don't set the 'caught' field.
250
 
251
        * cp/exception.cc (CP_EH_INFO): New macro for getting the
252
        exception info pointer within library routines.
253
        (__cp_eh_info): Use CP_EH_INFO.
254
        (__start_cp_handler): Get exception info pointer, set caught field,
255
        and increment the handlers field.  Avoids this being done by handlers.
256
        (__uncatch_exception, __check_eh_spec): Use CP_EH_INFO macro.
257
        (uncaught_exception): Use CP_EH_INFO macro.
258
 
259
Tue Dec  8 10:48:21 1998  Jeffrey A Law  (law@cygnus.com)
260
 
261
        * Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h
262
 
263
Mon Dec  7 17:56:06 1998  Mike Stump  
264
 
265
        * lex.c (check_newline): Add support for \ as `natural'
266
        characters in file names in #line to be consistent with #include
267
        handling.  We support escape processing in the # 1 "..." version of
268
        the command.  See also support in cp/lex.c.
269
 
270
1998-12-07  Zack Weinberg  
271
 
272
        * cp/decl2.c: s/data/opts/ when initializing cpp_reader
273
        structure.
274
 
275
1998-12-07  Jason Merrill  
276
 
277
        * decl.c (build_typename_type): Set DECL_ARTIFICIAL.
278
 
279
        * error.c (dump_simple_decl): Also print namespace context.
280
        (dump_function_decl): Likewise.
281
 
282
        * decl2.c (ambiguous_decl): Don't print old value if it's
283
        error_mark_node.
284
 
285
        * decl.c (lookup_name_real): Fix handling of local types shadowed
286
        by a non-type decl.  Remove obsolete code.
287
        * cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro.
288
 
289
        * lang-options.h: Add -fpermissive.
290
        * decl2.c: Likewise.
291
        * cp-tree.h: Add flag_permissive.
292
        * decl.c (init_decl_processing): If neither -fpermissive or -pedantic
293
        were specified, set flag_pedantic_errors.
294
        * call.c (build_over_call): Turn dropped qualifier messages
295
        back into pedwarns.
296
        * cvt.c (convert_to_reference): Likewise.
297
        * typeck.c (convert_for_assignment): Likewise.
298
 
299
1998-12-05  Jason Merrill  
300
 
301
        * decl2.c (coerce_new_type): Use same_type_p.
302
        (coerce_delete_type): Likewise.
303
 
304
        * call.c (check_dtor_name): Return 1, not error_mark_node.
305
 
306
1998-12-04  Jason Merrill  
307
 
308
        * lex.c (handle_cp_pragma): Disable #pragma interface/implementation
309
        if MULTIPLE_SYMBOL_SPACES.
310
 
311
        * pt.c (check_template_shadow): New fn.
312
        * decl2.c (grokfield): Use it.
313
        * decl.c (pushdecl): Likewise.
314
        (pushdecl_class_level): Likewise.
315
        (start_method): Likewise.
316
        (xref_tag): Don't try to use 't' if we're defining.
317
 
318
        * call.c (check_dtor_name): Just return an error_mark_node.
319
        * pt.c (lookup_template_class): Complain about using non-template here.
320
        * parse.y (apparent_template_type): Not here.
321
 
322
        * pt.c (check_explicit_specialization): Complain about specialization
323
        with C linkage.
324
 
325
        * lang-options.h: Add -f{no-,}implicit-inline-templates.
326
 
327
        * pt.c (convert_nontype_argument): Don't assume that any integer
328
        argument is intended to be a constant-expression.
329
 
330
1998-12-03  Mark Mitchell  
331
 
332
        * class.c (handle_using_decl): Fix comment.  Don't lookup
333
        constructors in base classes.
334
        (validate_lhs): Fix typo in comment.
335
        * search.c (lookup_field_1): Don't return a USING_DECL.
336
 
337
        * cp-tree.h (DECL_ACCESS): Improve documentation.
338
 
339
        * decl.c (expand_static_init): Don't set the initialization-done
340
        flag until the initialization is done.
341
 
342
1998-12-02  Mark Mitchell  
343
 
344
        * decl2.c (validate_nonmember_using_decl): Complain about using
345
        declarations for class members.
346
 
347
1998-11-29  Jason Merrill  
348
 
349
        * typeck2.c (process_init_constructor): Use same_type_p.
350
 
351
        * decl.c (check_tag_decl): Don't warn about null decl inside a
352
        class.
353
 
354
        * pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than
355
        UNIFY_ALLOW_NONE.
356
        (convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE.
357
        (resolve_overloaded_unification): Strip baselinks.
358
 
359
Fri Nov 27 13:07:23 1998  Kaveh R. Ghazi  
360
 
361
        * g++spec.c: Don't prototype xmalloc.
362
 
363
1998-11-25  Jason Merrill  
364
 
365
        * except.c (expand_throw): Use TYPE_PTR_P to check for pointers.
366
 
367
        * decl.c (check_tag_decl): Do complain about null friend decl at
368
        file scope.
369
 
370
1998-11-25  Andreas Schwab  
371
 
372
        * lex.c (make_lang_type): Clear the whole struct lang_type, not
373
        only the first multiple of sizeof (int).
374
 
375
1998-11-24  Jason Merrill  
376
 
377
        * decl.c (start_decl): An explicit specialization of a static data
378
        member is only a definition if it has an initializer.
379
 
380
        * except.c (expand_throw): Use cp_finish_decl for the throw temp.
381
        * cvt.c (build_up_reference): Pass DIRECT_BIND down into
382
        cp_finish_decl.
383
        * init.c (expand_default_init): Check for DIRECT_BIND instead of
384
        DECL_ARTIFICIAL.
385
 
386
        * call.c (build_over_call): Use build_decl.
387
 
388
        * except.c (expand_throw): Just use convert, not
389
        build_reinterpret_cast.
390
 
391
        * lex.c (handle_generic_pragma): Use token_buffer.
392
 
393
        * decl.c (check_tag_decl): Don't complain about null friend decl.
394
 
395
1998-11-24  Dave Pitts  
396
 
397
        * Make-lang.in (DEMANGLER_PROG): Move the output arguments to the
398
        first position.
399
        * lex.c (check_newline): Use ISALPHA.
400
        (readescape): Use ISGRAPH.
401
        (yyerror): Use ISGRAPH.
402
 
403
1998-11-24  Nathan Sidwell  
404
 
405
        * search.c (get_abstract_virtuals): Do not use initial
406
        CLASSTYPE_ABSTRACT_VIRTUALS.
407
        * typeck2.c (abstract_virtuals_error): Show location of abstract
408
        declaration.
409
        * call.c (build_new_method_call): Use
410
        CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate.
411
        * class.c (finish_struct_bits): Don't bother working out whether
412
        get_abstract_virtuals will do anything, just do it.
413
 
414
1998-11-24  Graham  
415
 
416
        * typeck.c (build_component_ref): Remove unused statement.
417
 
418
1998-11-24  Jason Merrill  
419
 
420
        * class.c (add_method): Catch invalid overloads.
421
 
422
        * class.c (add_method): Build up OVERLOADs properly for conversion ops.
423
        * search.c (lookup_conversions): Handle getting real OVERLOADs.
424
        (add_conversions): Likewise.  Revert last change.
425
        * call.c (add_conv_candidate): Pass totype to add_candidate instead
426
        of fn.  Don't add a new candidate if the last one was for the same
427
        type.
428
        (print_z_candidates): Handle getting a type as a function.
429
        (joust): If we got two conversion candidates to the same type,
430
        just pick one.
431
        (build_object_call): Lose 'templates'.
432
        (build_user_type_conversion_1): Handle getting real OVERLOADs.
433
 
434
1998-11-23  Jason Merrill  
435
 
436
        * typeck2.c (process_init_constructor): If there are elements
437
        that don't have initializers and they need to have constructors
438
        run, supply them with initializers.
439
 
440
        * class.c (finish_struct_1): A class with a 0-width bitfield is
441
        still empty.
442
 
443
1998-11-23  Mark Mitchell  
444
 
445
        * pt.c (instantiate_class_template): Don't try to figure out what
446
        specialization to use for a partial instantiation.  Correct
447
        typos in a couple of comments.  Avoid calling uses_template_parms
448
        multiple times.
449
 
450
1998-11-23  Benjamin Kosnik  
451
 
452
        * method.c (process_overload_item): Add call to
453
        build_mangled_C9x_name for intTI_type_nodes.
454
        (build_mangled_C9x_name): Add prototype, define.
455
        * decl.c (init_decl_processing): Add names for
456
        TImode_type_node.
457
 
458
1998-11-23  Jason Merrill  
459
 
460
        * parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS.
461
 
462
        * class.c (finish_struct_1): Set things up for 0-width bitfields
463
        like we do for others.
464
 
465
        * decl.c (check_tag_decl): New fn.
466
        (shadow_tag): Split out from here.
467
        * decl2.c (grok_x_components): Call it.
468
 
469
1998-11-22  Jason Merrill  
470
 
471
        * decl.c: Lose warn_about_return_type.
472
        (grokdeclarator): Always complain about implicit int, except for
473
        `main () { ... }'.
474
 
475
        * decl.c (tag_name): New fn.
476
        (xref_tag): Complain about using typedef-name after class-key.
477
 
478
        * init.c (expand_vec_init): Also keep going if from_array.
479
 
480
        * tree.c (is_overloaded_fn): Also handle the output of
481
        build_offset_ref.
482
 
483
        * decl.c (grokdeclarator): Use constructor_name when comparing
484
        field name against enclosing class.
485
        * class.c (finish_struct_anon): Likewise.
486
 
487
1998-11-22  Mark Mitchell  
488
 
489
        * decl.c (poplevel): Remove code to handle KEEP == 2.
490
        (finish_function): Don't confuse BLOCK-order when
491
        processing a destructor.
492
 
493
1998-11-21  Jason Merrill  
494
 
495
        * decl.c (require_complete_types_for_parms): Call layout_decl
496
        after we've completed the type.
497
 
498
1998-11-21  Martin von Löwis  
499
 
500
        * decl2.c (validate_nonmember_using_decl): Allow using templates
501
        from the global namespace.
502
 
503
1998-11-21  Jason Merrill  
504
 
505
        Handle specifying template args to member function templates.
506
        * tree.c (build_overload): Always create an OVERLOAD for a template.
507
        * search.c (add_conversions): Handle finding an OVERLOAD.
508
        * decl2.c (check_classfn): Likewise.
509
        * lex.c (identifier_type): See through a baselink.
510
        * parse.y (do_id): Don't call do_identifier if we got a baselink.
511
        * class.c (instantiate_type, case TREE_LIST): Recurse.
512
 
513
        * decl.c (grokdeclarator): Allow a boolean constant for array
514
        bounds, odd as that sounds.
515
 
516
        * pt.c (unify): Be more strict about non-type parms, except for
517
        array bounds.
518
        (UNIFY_ALLOW_INTEGER): New macro.
519
 
520
1998-11-19  Manfred Hollstein  
521
 
522
        * Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir).
523
 
524
1998-11-19  Jason Merrill  
525
 
526
        * semantics.c (begin_class_definition): Call
527
        maybe_process_partial_specialization before push_template_decl.
528
        Don't call push_template_decl for a specialization.
529
        * search.c (lookup_field): Do return a member template class.
530
        * decl2.c (handle_class_head): Handle member template classes.
531
 
532
        * decl.c (grokdeclarator): A parm type need not be complete.
533
 
534
        * pt.c (convert_nontype_argument): Fix thinko.
535
 
536
1998-11-18  Mark Mitchell  
537
 
538
        * cp-tree.h (PTRMEM_CST_CLASS): Fix typo.
539
        (global_delete_fndecl): New variable.
540
        * decl.c (global_delete_fndecl): Define it.
541
        (init_decl_processing): Set it.
542
        * init.c (build_builtin_delete_call): Use it.
543
        * tree.c (mapcar): Recursively call mapcar for the type of EXPR
544
        nodes.
545
 
546
1998-11-18  Jason Merrill  
547
 
548
        * decl.c (cplus_expand_expr_stmt): Always complain about unresolved
549
        type.
550
 
551
        * tree.c (lvalue_p_1): An INDIRECT_REF to a function is an lvalue.
552
        * call.c (build_object_call): Also support references to functions.
553
        * typeck.c (convert_for_initialization): Don't decay a function
554
        if the target is a reference to function.
555
 
556
        * search.c (add_conversions): Get all the overloads from a class.
557
 
558
        * decl.c (grok_ctor_properties): Complain about any constructor
559
        that will take a single arg of the class type by value.
560
 
561
        * typeck2.c (build_functional_cast): Can't create objects of
562
        abstract classes this way.
563
        * cvt.c (ocp_convert): Likewise.
564
 
565
        * decl.c (grokfndecl): Member functions of local classes are not
566
        public.
567
 
568
1998-11-18  Mark Mitchell  
569
 
570
        * Make-lang.in (cc1plus): Add dependency on hash.o.
571
 
572
1998-11-18  Jason Merrill  
573
 
574
        * search.c (get_abstract_virtuals): Complain about virtuals with
575
        no final overrider.
576
        * typeck2.c (abstract_virtuals_error): Remove handling for virtuals
577
        with no final overrider.
578
        * class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P
579
        on virtuals with no final overrider.
580
 
581
        * lex.c (reinit_parse_for_block): Add a space after the initial ':'.
582
 
583
        * class.c (finish_struct_1): Don't remove zero-width bit-fields until
584
        after layout_type.
585
 
586
        * friend.c (do_friend): Don't set_mangled_name_for_decl.
587
 
588
        * class.c (finish_struct_anon): Complain about non-fields.
589
        * decl2.c (build_anon_union_vars): Likewise.
590
 
591
        * decl.c (grokdeclarator): Normal data members can't have the same
592
        name as the class, either.
593
        * class.c (finish_struct_anon): Neither can members of an
594
        anonymous union.
595
 
596
1998-11-17  Mark Mitchell  
597
 
598
        * cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
599
        (TYPE_BINFO): Likewise.
600
        (IS_AGGR_TYPE): Tweak.
601
        (SET_IS_AGGR_TYPE): New macro.
602
        (CLASS_TYPE_P): Tweak.
603
        (lang_type): Group mark bitfields together.  Remove linenum.
604
        (CLASSTYPE_SOURCE_LINE): Remove macro.
605
        (CLASSTYPE_MARKED_N): New macro.
606
        (SET_CLASSTYPE_MARKED_N): Likewise.
607
        (CLEAR_CLASSTYPE_MARKED_N): Likewise.
608
        (CLASS_TYPE_MARKED_*): Use them.
609
        (SET_CLASSTYPE_MARKED_*): Likewise.
610
        (CLEAR_CLASSTYPE_MARKED_*): Likewise.
611
        (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
612
        (TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well.
613
        (TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE.
614
        * class.c (class_cache_obstack): New variable.
615
        (class_cache_firstobj): Likewise.
616
        (finish_struct): Don't set CLASSTYPE_SOURCE_LINE.
617
        (pushclass): Free the cache, when appropriate.
618
        (popclass): Tidy.
619
        (maybe_push_cache_obstack): Use class_cache_obstack.
620
        * decl.c (include hash.h).
621
        (typename_hash): New function.
622
        (typename_compare): Likewise.
623
        (build_typename_type): Check the hash table to avoid creating
624
        duplicates.
625
        (build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE.
626
        (grokdeclarator): Use CLASS_TYPE_P.
627
        (xref_basetypes): Likewise.
628
        (start_function): Likewise.  Don't put current_class_ref on the
629
        permanent obstack.
630
        * error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
631
        and TYPE_TI_ARGS.
632
        * lex.c (note_got_semicolon): Use CLASS_TYPE_P.
633
        (make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated
634
        fields for types other than class types.  Do clear TYPE_ALIAS_SET
635
        for types other than class types, though.
636
        * method.c (build_overload_identifier): Use CLASS_TYPE_P and
637
        TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
638
        * pt.c (process_template_parm): Don't set
639
        CLASSTYPE_GOT_SEMICOLON.
640
        (lookup_template_class): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
641
        Coerce arguments on the momentary obstack.
642
        (for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
643
        (instantiate_class_template): Calculate template arguments on the
644
        momentary obstack.  Tidy.
645
        (tsubst_template_arg_vector): Use make_temp_vec.
646
        (tsubst_aggr_type): Put template arguments on the momentary
647
        obstack.
648
        (tsubst_decl): Likewise.
649
        (tsubst): Copy the array bounds index to the permanent obstack
650
        before building index types.  Use new macros.
651
        (unify): Use new macros.
652
        (do_type_instantiation): Likewise.
653
        * search.c (lookup_fnfields_1): Use new macros.
654
        (dfs_pushdecls): Build envelopes on the cache obstack.
655
        (dfs_compress_decls): Use new macros.
656
        (push_class_decls): Build on the cache obstack.
657
        * semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON.
658
        * sign.c (build_signature_pointer_or_reference_type): Use
659
        SET_IS_AGGR_TYPE.
660
        * tree.c (make_binfo): Check CLASS_TYPE_P.
661
        (copy_template_template_parm): Adjust.
662
        (make_temp_vec): Use push_expression_obstack.
663
        * typeck.c (complete_type): Use new macros.
664
        (comptypes): Likewise.
665
 
666
1998-11-17  Jason Merrill  
667
 
668
        * pt.c (tsubst): Add diagnostics for invalid array, reference
669
        and pointer to member types.
670
 
671
1998-11-16  Jason Merrill  
672
 
673
        * typeck2.c (my_friendly_abort): Don't fatal twice in a row.
674
 
675
        * typeck.c (c_expand_start_case): Use build_expr_type_conversion.
676
        Simplify.
677
 
678
        * parse.y (structsp): Fix cut-and-paste error.
679
 
680
        * init.c (build_new): Complain about non-integral size.
681
 
682
        * parse.y (unary_expr): Complain about defining types in sizeof.
683
 
684
        * typeck.c (expr_sizeof): Complain about sizeof an overloaded fn.
685
 
686
        * rtti.c (build_x_typeid): Complain about typeid without
687
        including .
688
        (get_typeid): Likewise.  Complain about typeid of incomplete type.
689
        (get_tinfo_fn_dynamic): Likewise.
690
        (get_typeid_1): Not static anymore.
691
        * except.c (build_eh_type_type): Use get_typeid_1.
692
 
693
        * rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to
694
        ambiguous or private bases.  Fix warning for reference cast.
695
 
696
1998-11-16  Mark Mitchell  
697
 
698
        * cp-tree.h (DECL_TEMPLATE_INSTANTIATED): New macro.
699
        * decl.c (duplicate_decls): Remove special-case code to deal with
700
        template friends, and just do the obvious thing.
701
        * pt.c (register_specialization): Tweak for clarity, and also to
702
        clear DECL_INITIAL for an instantiation before it is merged with a
703
        specialization.
704
        (check_explicit_specialization): Fix indentation.
705
        (tsubst_friend_function): Handle both definitions in friend
706
        declaration and outside friend declarations.
707
        (tsubst_decl): Don't clear DECL_INITIAL for an instantiation.
708
        (regenerate_decl_from_template): Tweak accordingly.
709
        (instantiate_decl): Likewise.
710
 
711
1998-11-16  Jason Merrill  
712
 
713
        * decl.c (cplus_expand_expr_stmt): Promote warning about naked
714
        member function reference to error.
715
        * cvt.c (ocp_convert): Complain about converting an overloaded
716
        function to void.
717
 
718
        * init.c (build_offset_ref): Just return a lone static member
719
        function.
720
 
721
        * decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs,
722
        not internal ones.
723
 
724
        * typeck.c (build_binary_op_nodefault): Improve error handling.
725
 
726
        * decl.c (grokfndecl): Complain about making 'main' a template.
727
 
728
        * typeck.c (string_conv_p): Don't convert from wchar_t[] to char*.
729
 
730
        * call.c (build_method_call): Handle a BIT_NOT_EXPR around a
731
        TYPE_DECL in a template.
732
 
733
1998-11-15  Jason Merrill  
734
 
735
        * typeck2.c (my_friendly_abort): Add URL in the other case, too.
736
 
737
        * decl.c (struct cp_function): Add named_label_uses.
738
        (push_cp_function_context): Save it.
739
        (pop_cp_function_context): Restore it.
740
        (define_label): Also complain about jumping into the scope of
741
        non-POD objects that don't have constructors.
742
        * tree.c (pod_type_p): New fn.
743
 
744
        * pt.c (instantiate_class_template): Clear TYPE_BEING_DEFINED sooner.
745
        * rtti.c (synthesize_tinfo_fn): Call import_export_decl here.
746
        (get_tinfo_fn): Not here.
747
        * repo.c (repo_get_id): Abort if we get called for an incomplete
748
        type.
749
 
750
1998-11-13  Mark Mitchell  
751
 
752
        * except.c (expand_throw): Make sure first argument to
753
        __cp_push_exception is of type `void*' to avoid spurious error
754
        messages.
755
 
756
1998-11-11  Jason Merrill  
757
 
758
        * pt.c (try_one_overload): Take orig_targs again.  Only check for
759
        mismatches against them; we don't care what a previous call found.
760
        (resolve_overloaded_unification): Adjust.
761
 
762
        * search.c (lookup_field): Don't return anything for a non-type
763
        field from a dependent type.
764
        * decl.c (grokdeclarator): Resolve SCOPE_REFs of the current class
765
        in an array declarator.
766
        (start_decl): Push into the class before looking for the field.
767
 
768
1998-11-08  Mark Mitchell  
769
 
770
        * method.c (build_overload_value): Handle REFERENCE_TYPE.
771
 
772
1998-11-08  Martin von Löwis  
773
 
774
        * decl.c (grokdeclarator): Allow namespace-scoped members if they
775
        are friends.
776
 
777
1998-11-08  Jason Merrill  
778
 
779
        * pt.c (tsubst_decl): Don't mess with the global value of an
780
        un-mangled DECL_ASSEMBLER_NAME.
781
 
782
1998-11-03  Christopher Faylor  
783
 
784
        * decl.c (init_decl_processing): Remove CYGWIN conditional
785
        since CYGWIN is now able to deal with trapping signals.
786
 
787
Sat Nov  7 15:48:02 1998  Kaveh R. Ghazi  
788
 
789
        * cp-tree.h: Don't include gansidecl.h.
790
        * exception.cc: Include gansidecl.h (since we don't include config.h)
791
        * g++spec.c: Don't include gansidecl.h.
792
 
793
1998-11-06  Mark Mitchell  
794
 
795
        * cp-tree.h (lang_decl_flags): Add defined_in_class.  Decrease
796
        size of dummy.
797
        (DECL_DEFINED_IN_CLASS_P): New macro.
798
        (TEMPLATE_PARMS_FOR_INLINE): Document.
799
        (check_static_variable_definition): New function.
800
        * decl.c (cp_finish_decl): Set DECL_DEFINED_IN_CLASS_P, if
801
        appropriate.
802
        (check_static_variable_definition): Split out from ...
803
        (grokdeclarator): Here.
804
        * pt.c (check_default_tmpl_args): New function, split out from ...
805
        (push_template_decl_real): Here.
806
        (instantiate_template): Fix comment.
807
 
808
1998-11-04  Mark Mitchell  
809
 
810
        * cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued.
811
        (CP_TYPE_VOLATILE_P): Likewise.
812
        (CP_TYPE_RESTRICT_P): Likewise.
813
 
814
1998-11-03  Mark Mitchell  
815
 
816
        * pt.c (tsubst): Use build_index_type, not build_index_2_type.
817
 
818
1998-11-02  Jason Merrill  
819
 
820
        * class.c (instantiate_type): Be more helpful.
821
 
822
        * decl2.c (import_export_decl): Call import_export_class.
823
 
824
        * cp-tree.h (EMPTY_CONSTRUCTOR_P): Check !TREE_HAS_CONSTRUCTOR.
825
        * decl2.c (build_expr_from_tree): Propagate TREE_HAS_CONSTRUCTOR.
826
        * pt.c (tsubst_copy): Likewise.
827
 
828
1998-11-02  Mark Mitchell  
829
 
830
        * init.c (expand_vec_init): Fix off-by-one error.
831
 
832
1998-11-02  Alexandre Oliva  
833
 
834
        * parse.y (apparent_template_type): New type.
835
        (named_complex_class_head_sans_basetype): Use it.
836
        * Makefile.in (CONFLICTS): One new conflict.
837
        * parse.c: Regenerated.
838
 
839
1998-11-01  Mark Mitchell  
840
 
841
        * cp-tree.h (COMPARE_STRICT): New macro.
842
        (COMPARE_BASE): Likewise.
843
        (COMPARE_RELAXED): Likewise.
844
        (COMPARE_REDECLARATION): Likewise.
845
        (same_type_p): Likewise.
846
        (same_or_base_type_p): Likewise.
847
        * call.c (standard_conversion): Use them, in place of comptypes
848
        with numeric arguments.
849
        (reference_binding): Likewise.
850
        (convert_like): Likewise.
851
        (build_over_call): Likewise.
852
        (is_subseq): Likewise.
853
        (is_properly_derived_from): Likewise.
854
        (compare_ics): Likewise.
855
        (joust): Likewise.
856
        * class.c (delete_duplicate_fields_1): Likewise.
857
        (resolves_to_fixed_type_p): Likewise.
858
        (instantiate_type): Likewise.  Remove #if 0'd code.
859
        * decl.c (decls_match): Likewise.  Use COMPARE_REDECLARATION here.
860
        (pushdecl): Likewise.
861
        (lookup_name_real): Likewise.
862
        (grokdeclarator): Likewise.  Check for illegal array declarations.
863
        (grokparms): Likewise.
864
        (grok_op_properties): Likewise.
865
        * decl2.c (check_classfn): Likewise.
866
        * friend.c (is_friend): Likewise.
867
        (make_friend_class): Likewise.
868
        * init.c (expand_aggr_init): Likewise.
869
        (expand_vec_init): Likewise.
870
        * pt.c (is_member_template_class): Remove declaration.
871
        (is_specialization_of): Use COMPARE_* and new macros.
872
        (comp_template_parms): Likewise.
873
        (convert_nontype_argument): Likewise.
874
        (coerce_template_template_parms): Likewise.
875
        (template_args_equal): Likewise.
876
        (lookup_template_class): Likewise.
877
        (type_unification_real): Likewise.
878
        (unify): Likewise.
879
        (get_bindings_real): Likewise.
880
        * search.c (covariant_return_p): Likewise.
881
        (get_matching_virtual): Likewise.
882
        * sig.c (match_method_types): Likewise.
883
        * tree.c (vec_binfo_member): Likewise.
884
        (cp_tree_equal): Likewise.
885
        * typeck.c (common_type): Likewise.
886
        (comp_array_types): Likewise.  Get issues involving unknown array
887
        bounds right.
888
        (comptypes): Update comments.  Use new flags.
889
        (comp_target_types): Use new macros.
890
        (compparms): Likewise.
891
        (comp_target_parms): Likewise.
892
        (string_conv_p): Likewise.
893
        (build_component_ref): Likewise.
894
        (build_indirect_ref): Likewise.
895
        (build_conditional_expr): Likewise.
896
        (build_static_cast): Likewise.
897
        (build_reinterpret_cast): Likewise.
898
        (build_const_cast): Likewise.
899
        (build_modify_expr): Likewise.
900
        (convert_for_assignment): Likewise.
901
        (comp_ptr_ttypes_real): Likewise.
902
        (ptr_reasonably_similar): Likewise.
903
        (comp_ptr_ttypes_const): Likewise.
904
 
905
1998-10-31  Jason Merrill  
906
 
907
        * rtti.c (build_dynamic_cast_1): Fix cut-and-paste error.
908
 
909
1998-10-30  Mark Mitchell  
910
 
911
        * decl2.c (delete_sanity): Pass integer_zero_node, not
912
        integer_two_node, to build_vec_delete.
913
        * init.c (build_array_eh_cleanup): Remove.
914
        (expand_vec_init_try_block): New function.
915
        (expand_vec_init_catch_clause): Likewise.
916
        (build_vec_delete_1): Don't deal with case that auto_delete_vec
917
        might be integer_two_node anymore.
918
        (expand_vec_init): Rework for initialization-correctness and
919
        exception-correctness.
920
        * typeck2.c (process_init_constructor): Make mutual exclusivity
921
        of cases more obvious.
922
 
923
1998-10-29  Jason Merrill  
924
 
925
        * decl.c (lookup_name_real): OK, only warn if not lexing.
926
        Simplify suggested fix.
927
 
928
        * cp-tree.h (IDENTIFIER_MARKED): New macro.
929
        * search.c (lookup_conversions): Use breadth_first_search.
930
        (add_conversions): Avoid adding two conversions to the same type.
931
        (breadth_first_search): Work with base binfos, rather
932
        than binfos and base indices.
933
        (get_virtual_destructor): Adjust.
934
        (tree_has_any_destructor_p): Adjust.
935
        (get_matching_virtual): Adjust.
936
 
937
        * pt.c (push_template_decl_real): Generalize check for incorrect
938
        number of template parms.
939
        (is_member_template_class): #if 0.
940
 
941
1998-10-29  Richard Henderson  
942
 
943
        * Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@,
944
        last.
945
 
946
1998-10-28  Zack Weinberg  
947
 
948
        * lex.c: Call check_newline from lang_init always.  After
949
        calling cpp_start_read, set yy_cur and yy_lim to read from the
950
        cpplib token buffer.
951
 
952
1998-10-28  Jason Merrill  
953
 
954
        * class.c (instantiate_type): Don't consider templates for a normal
955
        match.
956
 
957
        * class.c (finish_struct_1): Don't complain about non-copy
958
        assignment ops in union members.
959
 
960
        * class.c (build_vtable): Don't pass at_eof to import_export_vtable.
961
        (prepare_fresh_vtable): Likewise.
962
        (finish_struct_1): Don't call import_export_class.
963
        * decl2.c (finish_vtable_vardecl): Do import/export stuff.
964
        (finish_prevtable_vardecl): Lose.
965
        (finish_file): Don't call it.
966
        * pt.c (instantiate_class_template): Likewise.
967
        * cp-tree.h: Remove it.
968
 
969
        * init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
970
        * decl.c (finish_function): Not here.
971
        (start_function): Do set DECL_INITIAL.
972
 
973
        * pt.c (push_template_decl_real): Complain about default template
974
        args for enclosing classes.
975
 
976
        * call.c (add_function_candidate): Treat conversion functions
977
        as coming from the argument's class.
978
        * cp-tree.h (DECL_CONV_FN_P): New fn.
979
        (DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE.
980
        * class.c (add_method): Use DECL_CONV_FN_P.
981
        * decl2.c (check_classfn): Likewise.
982
        * error.c (dump_function_name): Likewise.
983
        (dump_function_decl): Likewise.
984
        * pt.c (fn_type_unification): Likewise.
985
        * search.c (add_conversions): Likewise.
986
 
987
1998-10-27  Jason Merrill  
988
 
989
        * lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
990
        * method.c (hack_identifier): Also check for using RESULT_DECL
991
        from outer context.
992
 
993
1998-10-27  Mark Mitchell  
994
 
995
        * decl.c (grokdeclarator): Use type_quals, rather than constp,
996
        consistently.
997
 
998
1998-10-27  Jason Merrill  
999
 
1000
        * call.c (standard_conversion): instantiate_type here.
1001
        (reference_binding): And here.
1002
        (implicit_conversion): Not here.
1003
        (build_op_delete_call): No need to cons up an OVERLOAD.
1004
        * cvt.c (cp_convert_to_pointer): instantiate_type here.
1005
        (convert_to_reference): And here.
1006
        * decl.c (grok_reference_init): Not here.
1007
        (grokparms): Or here.
1008
        * typeck2.c (digest_init): Or here.
1009
        * typeck.c (decay_conversion): Take the address of overloaded
1010
        functions, too.
1011
        (require_instantiated_type): Lose.
1012
        (convert_arguments): Don't handle unknown types here.
1013
        (build_c_cast): Likewise.
1014
        (build_binary_op): Gut.
1015
        (build_conditional_expr): Don't require_instantiated_type.
1016
        (build_modify_expr): Likewise.
1017
        (build_static_cast): Don't instantiate_type.
1018
        (build_reinterpret_cast): Likewise.
1019
        (build_const_cast): Likewise.
1020
        (convert_for_initialization): Likewise.
1021
        (build_ptrmemfunc): Use type_unknown_p.
1022
        (convert_for_assignment): Also do default_conversion on overloaded
1023
        functions.  Hand them off to ocp_convert.
1024
 
1025
1998-10-26  Mark Mitchell  
1026
 
1027
        * error.c (dump_decl): Deal with TEMPLATE_DECLs that are
1028
        VAR_DECLs.  Handle vtables whose DECL_CONTEXT is not a type.
1029
 
1030
        * class.c (finish_struct_1): Use build_cplus_array_type to build
1031
        array types.
1032
        * decl.c (init_decl_processing): Likewise.
1033
        * except.c (expand_end_eh_spec): Likewise.
1034
        * search.c (expand_upcast_fixups): Simplify very slightly.
1035
 
1036
1998-10-26  Jason Merrill  
1037
 
1038
        * decl.c (grokdeclarator): Complain about a variable using
1039
        constructor syntax coming back null from start_decl.
1040
 
1041
        * friend.c (make_friend_class): Complain about trying to make
1042
        a non-class type a friend.
1043
 
1044
        * decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
1045
        (start_function): Not here.
1046
 
1047
1998-10-26  Brendan Kehoe  
1048
 
1049
        * decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.
1050
 
1051
1998-10-26  Jason Merrill  
1052
 
1053
        * typeck2.c (process_init_constructor): Only skip anonymous fields
1054
        if they are bitfields.
1055
 
1056
        * cp-tree.def (TYPEOF_TYPE): New code.
1057
        * error.c (dump_type_real): Handle it.
1058
        * pt.c (tsubst): Likewise.
1059
        * tree.c (search_tree): Likewise.
1060
        * semantics.c (finish_typeof): New fn.
1061
        * parse.y (typespec): Use it.
1062
        * cp-tree.h: Declare it.
1063
 
1064
1998-10-26  Manfred Hollstein  
1065
 
1066
        * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
1067
 
1068
1998-10-26  Jason Merrill  
1069
 
1070
        * typeck.c (convert_arguments): Don't handle pmf references
1071
        specially.
1072
 
1073
        * init.c (build_member_call): Don't try to convert to the base type
1074
        if it's ambiguous or pedantic.
1075
 
1076
        * typeck2.c (check_for_new_type): Only depend on pedantic for
1077
        C-style casts.
1078
 
1079
1998-10-25  Mark Mitchell  
1080
 
1081
        * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
1082
        non-converting constructors.
1083
 
1084
1998-10-24  Martin von Löwis  
1085
 
1086
        * gxxint.texi: Correct documentation for n, N, Q, and B.
1087
 
1088
1998-10-23  Martin von Löwis  
1089
 
1090
        * parse.y (condition): Convert VAR_DECL from reference to indirect
1091
        reference.
1092
 
1093
1998-10-23  Andrew MacLeod  
1094
 
1095
        * exception.cc (__cp_pop_exception): Free the original exception
1096
        value, not the potentially coerced one.
1097
 
1098
1998-10-23  Mark Mitchell  
1099
 
1100
        * Makefile.in (hash.h): Run gperf when necessary.
1101
 
1102
        * cp-tree.h (CP_TYPE_READONLY): Remove.
1103
        (CP_TYPE_VOLATILE): Likewise.
1104
        (CP_TYPE_QUALS): New macro.
1105
        (CP_TYPE_CONST_P): Likewise.
1106
        (CP_TYPE_VOLATILE_P): Likewise.
1107
        (CP_TYPE_RESTRICT_P): Likewise.
1108
        (CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
1109
        (cp_build_type_variant): Rename to ...
1110
        (cp_build_qualified_type): New function.
1111
        (c_apply_type_quals_to_decl): Declare.
1112
        (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
1113
        (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
1114
        (cp_type_qual_from_rid): New function.
1115
        (compparms): Remove unused parameter.  All callers changed.
1116
        (cp_type_quals): New function.
1117
        (at_least_as_qualified_p): Likewise.
1118
        (more_qualified_p): Likewise.
1119
 
1120
        * call.c (standard_conversion): Replace calls to
1121
        cp_build_type_variant with cp_build_qualified_type.  Use
1122
        CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
1123
        compare them.  Use CP_TYPE_* macros to check qualifiers.
1124
        (reference_binding): Likewise.
1125
        (implicit_conversion): Likewise.
1126
        (add_builtin_candidates): Likewise.
1127
        (build_over_call): Likewise.
1128
        * class.c (overrides): Compare all qualifiers, not just `const',
1129
        on method declarations.
1130
        * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
1131
        (convert_pointer_to_real): Likewise.
1132
        (type_promotes_to): Likewise.
1133
        * decl.c (check_for_uninitialized_const_var): New function.
1134
        (init_decl_processing): More CP_TYPE_QUALS conversion, etc.
1135
        (cp_finish_decl): Use check_for_uninitialized_const_var.
1136
        (grokdeclarator): More CP_TYPE_QUALS conversion, etc.  Update to
1137
        handle `restrict'.
1138
        (grok_ctor_properties): Likewise.
1139
        (grok_op_properties): Likewise.
1140
        (start_function): Likewise.
1141
        (rever_static_member_fn): Likewise.
1142
        * decl2.c (grok_method_quals): Likewise.
1143
        (grokfield): Likewise.
1144
        * error.c (dump_readonly_or_volatile): Rename to ...
1145
        (dump_qualifiers): New function.  Handle `restrict'.
1146
        (dump_type_real): Use it.
1147
        (dump_aggr_type): Likewise.
1148
        (dump_type_prefix): Likewise.
1149
        (dump_type_suffix): Likewise.
1150
        (dump_function_decl): Likewise.
1151
        (cv_as_string): Likewise.
1152
        * gxx.gperf: Add __restrict and __restrict__.
1153
        * gxxint.texi: Document `u' as used for `__restrict', and a few
1154
        other previously undocumented codes.
1155
        * hash.h: Regenerated.
1156
        * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
1157
        (build_member_call): Likewise.
1158
        (build_new_1): Likewise.
1159
        * lex.c (init_parse): Add entry for RID_RESTRICT.
1160
        (cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
1161
        (cp_type_qual_from_rid): Define.
1162
        * lex.h (enum rid): Add RID_RESTRICT.
1163
        * method.c (process_modifiers): Deal with `restrict'.
1164
        * parse.y (primary): More CP_TYPE_QUALS conversion, etc.
1165
        * parse.c: Regenerated.
1166
        * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
1167
        (tsubst_aggr_type): Likewise.
1168
        (tsubst): Likewise.
1169
        (check_cv_quals_for_unify): Likewise.
1170
        (unify): Likewise.
1171
        * rtti.c (init_rtti_processing): Likewise.
1172
        (build_headof): Likewise.
1173
        (get_tinfo_var): Likewise.
1174
        (buidl_dynamic_cast_1): Likewise.  Fix `volatile' handling.
1175
        (expand_class_desc): Likewise.
1176
        (expand_attr_desc): Likewise.
1177
        (synthesize_tinfo_fn): Likewise.
1178
        * search.c (covariant_return_p): Likewise.  Fix `volatile' handling.
1179
        (get_matching_virtual): Likewise.
1180
        (expand_upcast_fixups): Likewise.
1181
        * sig.c (build_signature_pointer_or_reference_name): Take
1182
        type_quals, not constp and volatilep.
1183
        (build_signature_pointer_or_reference_type): Likewise.
1184
        (match_method_types): More CP_TYPE_QUALS conversion, etc.
1185
        (build_signature_pointer_constructor): Likewise.
1186
        (build_signature_method_call): Likewise.
1187
        * tree.c (build_cplus_array_type): Likewise.
1188
        (cp_build_type_variant): Rename to ...
1189
        (cp_build_qualified_type): New function.  Deal with `__restrict'.
1190
        (canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
1191
        (build_exception_variant): Likewise.
1192
        (mapcar): Likewise.
1193
        * typeck.c (qualif_type): Likewise.
1194
        (common_type): Likewise.
1195
        (comptypes): Likewise.
1196
        (comp_cv_target_types): Likewise.
1197
        (at_least_as_qualified_p): Define.
1198
        (more_qualified_p): Likewise.
1199
        (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
1200
        (compparms): Likewise.
1201
        (inline_conversion): Likewise.
1202
        (string_conv_p): Likewise.
1203
        (build_component_ref): Likewise.
1204
        (build_indirect_ref): Likewise.
1205
        (build_array_ref): Likewise.
1206
        (build_unary_op): Likewise.
1207
        (build_conditional_expr): Likewise.
1208
        (build_static_cast): Likewise.
1209
        (build_c_cast): Likewise.
1210
        (build_modify_expr): Likewise.
1211
        (convert_For_assignment): Likewise.
1212
        (comp_ptr_ttypes_real): Likewise.
1213
        (cp_type_quals): New function.
1214
 
1215
1998-10-23  Jason Merrill  
1216
 
1217
        * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
1218
        (CP_TYPE_VOLATILE): Likewise.
1219
        * decl.c (grokdeclarator): Use them.
1220
        * tree.c (canonical_type_variant): Likewise.
1221
 
1222
1998-10-22  Martin von Löwis  
1223
 
1224
        * parse.y (named_class_head): Push into class while parsing the
1225
        base class list.
1226
        * decl2.c (push_scope, pop_scope): New functions.
1227
        * cp-tree.h: Declare them.
1228
        * init.c (build_new_1): Delay cleanup until end of full expression.
1229
 
1230
1998-10-21  Jason Merrill  
1231
 
1232
        * typeck.c (build_component_ref): Use of a type here is an error.
1233
 
1234
1998-10-19  Jason Merrill  
1235
 
1236
        Revamp references to member functions.
1237
        * method.c (hack_identifier): Call build_component_ref for a
1238
        reference to a member function.
1239
        * typeck.c (build_component_ref): Only return a single function
1240
        if it's static.  Otherwise, return a COMPONENT_REF.
1241
        (build_x_function_call): Handle a COMPONENT_REF.
1242
        (build_unary_op): Handle all unknown-type things.
1243
        * decl2.c (arg_assoc): Handle COMPONENT_REF.
1244
        * class.c (instantiate_type): Complain if the function we get is a
1245
        nonstatic member function.  Remove code for finding "compatible"
1246
        functions.
1247
        * pt.c (tsubst_copy): Handle NOP_EXPR.
1248
        * tree.c (build_dummy_object): New fn.
1249
        (maybe_dummy_object): New fn.
1250
        (is_dummy_object): New fn.
1251
        * cp-tree.h: Declare them.
1252
        * cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
1253
        * error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
1254
        * init.c (build_member_call): Use maybe_dummy_object and
1255
        is_dummy_object.
1256
        (build_offset_ref): Use maybe_dummy_object.
1257
        (resolve_offset_ref): Use is_dummy_object.
1258
        * typeck.c (build_x_function_call): Call build_dummy_object.
1259
        (unary_complex_lvalue): Call is_dummy_object.
1260
 
1261
        * typeck.c (build_component_addr): Make sure field is a field.
1262
 
1263
        * call.c (build_new_op): Delete obsolete code.
1264
 
1265
        * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
1266
 
1267
1998-10-18  Martin von Löwis  
1268
 
1269
        * decl2.c (validate_nonmember_using_decl): Fix using-directives of
1270
        std if std is ignored.
1271
 
1272
1998-10-18  Jason Merrill  
1273
 
1274
        * decl.c (grokvardecl): Fix thinko.
1275
 
1276
        * decl.c (grokdeclarator): Embedded attrs bind to the right,
1277
        not the left.
1278
 
1279
        * parse.y (fn.def2): Fix 'attrs' format.
1280
 
1281
1998-10-18  Alastair J. Houghton  
1282
 
1283
        * Makefile.in (CONFLICTS): Update.
1284
        * parse.y (expr_or_declarator_intern): New rule.
1285
        (expr_or_declarator, direct_notype_declarator, primary,
1286
        functional_cast): Use it.
1287
        (notype_declarator_intern): New rule.
1288
        (notype_declarator, complex_notype_declarator): Use it.
1289
 
1290
1998-10-17  Jason Merrill  
1291
 
1292
        * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
1293
        (grokvardecl): Likewise.
1294
 
1295
Sat Oct 17 23:27:20 1998  Kaveh R. Ghazi  
1296
 
1297
        * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
1298
        (add_method): Likewise for arguments 1 & 2 of `bcopy'.
1299
 
1300
        * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
1301
 
1302
        * pt.c (process_partial_specialization): Cast 1st argument of
1303
        `bzero' to (PTR).
1304
 
1305
        * tree.c (build_base_fields): Cast `base_align' to (int) when
1306
        comparing against one.
1307
 
1308
1998-10-16  Mark Mitchell  
1309
 
1310
        * decl.c (lookup_name_real): Handle template parameters for member
1311
        templates where said parameters have the same name as the
1312
        surrounding class.
1313
 
1314
        * decl.c (expand_static_init): Build cleanups before entering the
1315
        anonymous function used to do them to avoid access-checking
1316
        confusion.
1317
 
1318
        * decl.c (grokfndecl): Add back call to cplus_decl_attributes
1319
        accidentally removed by previous change, and make DECL_RTL here.
1320
        * class.c (add_method): Don't make DECL_RTL here.
1321
 
1322
        * pt.c (for_each_template_parm): Don't examine uninstantiated
1323
        default arguments.
1324
 
1325
1998-10-16  Dave Brolley  
1326
 
1327
        * lex.c (real_yylex): Fix unaligned access of wchar_t.
1328
 
1329
1998-10-16  Mark Mitchell  
1330
 
1331
        * class.c (add_method): Fix documentation to reflect previous
1332
        changes.  Check for duplicate method declarations here.
1333
        * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
1334
        correctly; such things never match.
1335
        (grokfndecl): Don't look for duplicate methods here.
1336
        * decl2.c (check_classfn): Don't assume names are mangled.
1337
        Don't add bogus member function declarations to a class before the
1338
        class type is complete.
1339
        (grokfield): Reformat error message.
1340
        * method.c (set_mangled_name_for_decl): Don't mangle names while
1341
        processing_template_decl.
1342
 
1343
1998-10-16  Jason Merrill  
1344
 
1345
        * typeck.c (build_indirect_ref): Complain about a pointer to data
1346
        member, too.
1347
        * typeck2.c (build_m_component_ref): Don't indirect a pointer to
1348
        data member.
1349
        * init.c (resolve_offset_ref): Don't undo the above.
1350
 
1351
        * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
1352
        (struct lang_decl_flags): Add `bitfield'.
1353
        * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
1354
        DECL_BIT_FIELD.
1355
        * decl2.c (grokbitfield, grok_alignof): Likewise.
1356
        * init.c (build_offset_ref): Likewise.
1357
        * typeck.c (build_component_addr, expr_sizeof): Likewise.
1358
        * cvt.c (build_up_reference): Don't crash if taking the address
1359
        returns error_mark_node.
1360
 
1361
        * decl.c (grokfndecl): Also check ctype when checking for ::main().
1362
 
1363
1998-10-15  Jason Merrill  
1364
 
1365
        * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
1366
        Do mangling here.
1367
        (grokdeclarator): Instead of here.
1368
        * friend.c (do_friend): Lose special handling of ::main and
1369
        __builtin_*.
1370
        * cp-tree.h (DECL_MAIN_P): Check for C linkage.
1371
 
1372
        * spew.c (yylex): Clear looking_for_typename if we got
1373
        'enum { ... };'.
1374
 
1375
1998-10-15  Mark Mitchell  
1376
 
1377
        * class.c (maybe_warn_about_overly_private_class): Improve error
1378
        messages for class with only private constructors.
1379
 
1380
        * cp-tree.def (TYPENAME_TYPE): Add to documentation.
1381
        * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
1382
        (build_typename_type): New function.
1383
        * decl.c (build_typename_type): Broken out from ...
1384
        (make_typename_type): Use it.
1385
        * search.c (lookup_field): Likewise.
1386
 
1387
1998-10-14  Benjamin Kosnik  
1388
 
1389
        * pt.c (convert_nontype_argument): Check against type_referred_to.
1390
        * decl.c (grokvardecl): Check for declarator name before building
1391
        DECL_ASSEMBLER_NAME.
1392
 
1393
1998-10-14  Mark Mitchell  
1394
 
1395
        * pt.c (lookup_template_class): Add comment.
1396
        (instantiate_class_template): Don't mark the _TYPE node for
1397
        member class templates as an instantiation.
1398
 
1399
1998-10-14  Jason Merrill  
1400
 
1401
        * decl.c (grokfndecl): Fix my thinko.
1402
 
1403
1998-10-13  Jason Merrill  
1404
 
1405
        * tinfo2.cc (fast_compare): Remove.
1406
        (before): Just use strcmp.
1407
        * tinfo.cc (operator==): Just use strcmp.
1408
 
1409
1998-10-13  Klaus-Georg Adams  
1410
 
1411
        * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
1412
        declarations.
1413
 
1414
1998-10-13  Mark Mitchell  
1415
 
1416
        * cp-tree.h (specializations_of_same_template_p): Remove.
1417
        * search.c (get_template_base): Don't use it.
1418
        (get_template_base_recursive): Likewise.
1419
        * pt.c (specializations_of_same_template_p): Remove.
1420
        (unify): Don't use it.
1421
        (lookup_template_class): Find the correct parent when setting
1422
        CLASSTYPE_TI_TEMPLATE.
1423
 
1424
1998-10-12  Jason Merrill  
1425
 
1426
        * tinfo.cc (operator==): Always compare names.
1427
 
1428
1998-10-12  Herman ten Brugge  
1429
 
1430
        * decl.c (start_function): Fix cut-and-paste error.
1431
 
1432
1998-10-12  Jason Merrill  
1433
 
1434
        * inc/typeinfo: Add #pragma interface.
1435
        (operator!=): Just call operator==.
1436
        * tinfo.cc: Add #pragma implementation.
1437
        (operator==): Move from inc/typeinfo and tinfo2.cc.
1438
        Check __COMMON_UNRELIABLE instead of _WIN32.
1439
 
1440
        * typeck2.c (my_friendly_abort): Add URL.
1441
 
1442
1998-10-12  Alastair J. Houghton  
1443
 
1444
        * decl.c (start_method): Added extra parameter for attributes.
1445
        * cp-tree.h (start_method): Update prototype.
1446
        * parse.y (fn.def2): Update start_method parameter list.
1447
 
1448
1998-10-11  Mark Mitchell  
1449
 
1450
        * cp-tree.h (specializations_of_same_template_p): Declare.
1451
        * pt.c (specializations_of_same_template_p): New function.
1452
        (unify): Use it.
1453
        * search.c (get_template_base): Use it.
1454
        (get_template_base_recursive): Likewise.
1455
 
1456
1998-10-10  Manfred Hollstein  
1457
 
1458
        * decl2.c (start_objects): Add new variable `joiner' and
1459
        initialize it properly.
1460
 
1461
1998-10-09  Mark Mitchell  
1462
 
1463
        * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
1464
        change to vtable types.
1465
 
1466
        * cvt.c (ocp_convert): Avoid infinite recursion caused by
1467
        1998-10-03 change.
1468
 
1469
1998-10-08  Jason Merrill  
1470
 
1471
        * pt.c (resolve_overloaded_unification): New fn.
1472
        (try_one_overload): Likewise.
1473
        (unify): Don't fail on unknown type.
1474
        (type_unification_real): Likewise.  Use resolve_overloaded_unification
1475
        to handle an overloaded argument.
1476
        (template_args_equal): Split out...
1477
        (comp_template_args): From here.
1478
        (determine_specialization): Also allow a template with more
1479
        parms than were explicitly specified.
1480
        * cp-tree.h: Add template_args_equal.
1481
        * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
1482
 
1483
Thu Oct  8 15:58:30 1998  Anthony Green  
1484
 
1485
        * semantics.c (finish_asm_stmt): Revert my 1998-09-28
1486
        change.
1487
 
1488
Thu Oct  8 06:00:19 1998  Jeffrey A Law  (law@cygnus.com)
1489
 
1490
        * typeck.c (unsigned_type): Only return TItype nodes when
1491
        HOST_BITS_PER_WIDE_INT is >= 64 bits.
1492
        (signed_type): Likewise.
1493
        * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
1494
        when HOST_BITS_PER_WIDE_INT is >= 64 bits.
1495
        (init_decl_processing): Only create TItype nodes when
1496
        HOST_BITS_PER_WIDE_INT is >= 64 bits.
1497
        * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
1498
        when HOST_BITS_PER_WIDE_INT is >= 64 bits.
1499
 
1500
Wed Oct  7 12:32:44 1998  Kaveh R. Ghazi  
1501
 
1502
        * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
1503
        (gxx.gperf): Update comments describing invocation flags.
1504
        (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
1505
 
1506
1998-10-07  Mark Mitchell  
1507
 
1508
        * class.c (finish_struct_1): Add commentary on previous change.
1509
 
1510
        * cp-tree.h (vtbl_ptr_type_node): New variable.
1511
        * class.c (build_vtbl_ref): Don't indirect through the vptr; it's
1512
        already of the right type.
1513
        (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
1514
        Simplify code to grow vtable.
1515
        * decl.c (vtbl_ptr_type_node): Define.
1516
        (init_decl_processing): Initialize it.
1517
 
1518
1998-10-06  Mark Mitchell  
1519
 
1520
        * cp-tree.def (PTRMEM_CST): New tree node.
1521
        * cp-tree.h (ptrmem_cst): New type.
1522
        (lang_type): Remove local_typedecls.
1523
        (dummy): Increase to 12 bits from 11.
1524
        (CLASSTYPE_LOCAL_TYPEDECLS): Remove.
1525
        (PTRMEM_CST_CLASS): New macro.
1526
        (PTRMEM_CST_MEMBER): Likewise.
1527
        (current_access_specifier): New variable.
1528
        (current_class_type): Remove duplicate declaration.
1529
        (finish_struct): Change prototype.
1530
        (unreverse_member_declarations): New function.
1531
        (pushdecl_class_level): Change prototype.
1532
        (grok_enum_decls): Remove.
1533
        (fixup_anonymous_union): New function.
1534
        (grok_x_components): Change prototype.
1535
        (tsubst_chain): Remove.
1536
        (finish_member_template_decl): Likewise.
1537
        (check_explicit_specialization): Fix indentation.
1538
        (finish_class_definition): Change prototype.
1539
        (finish_member_class_template): Likewise.
1540
        (finish_member_declaration): New function.
1541
        (check_multiple_declarators): Likewise.
1542
        * class.c (class_stack_node_t): New type.
1543
        (current_class_base): Remove.
1544
        (current_class_stack): Change type.
1545
        (current_access_specifier): New variable.
1546
        (grow_method): Remove.
1547
        (check_member_decl_is_same_in_complete_scope): Break out from
1548
        finish_struct.
1549
        (make_method_vec): New function.
1550
        (free_method_vec): Likewise.
1551
        (add_implicitly_declared_members): Break out from finish_struct_1.
1552
        (free_method_vecs): New variable.
1553
        (add_method): Rework for direct use from parser.
1554
        (handle_using_decl): Watch for NULL_TREE while iterating through
1555
        CLASSTYPE_METHOD_VEC.
1556
        (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
1557
        just do some error-checking.
1558
        (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
1559
        (finish_struct_1): Simplify.  Use add_implicitly_declared_members.
1560
        (finish_struct): Change prototype.  Simplify; fields and methods
1561
        are already set up at this point.
1562
        (init_class_processing): Set up current_class_stack.
1563
        (pushclass): Save current_access_specifier.
1564
        (popclass): Restore it.
1565
        (currently_open_class): Simplify.
1566
        (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
1567
        * decl.c (saved_scope): Add access_specifier.
1568
        (maybe_push_to_top_level): Save it.
1569
        (pop_from_top_level): Restore it.
1570
        (maybe_process_template_type_declaration): Use
1571
        finish_member_declaration.
1572
        (pushtag): Likewise.
1573
        (pushdecl_class_level): Don't return a value.
1574
        (fixup_anonymous_union): Break out from grok_x_components.
1575
        (shadow_tag): Use it.
1576
        (xref_tag): Complain about using an elaborated type specifier to
1577
        reference a template type parameter or typedef name.
1578
        (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
1579
        (current_local_enum): Remove.
1580
        (build_enumerator): Call finish_member_declaration.
1581
        (grok_enum_decls): Remove.
1582
        * decl2.c (grok_x_components): Simplify.
1583
        (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
1584
        (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
1585
        (merge_functions): Add to comment.
1586
        (arg_assoc_type): Prototype.
1587
        (arg_assoc): Pass as many arguments as there are parameters.
1588
        * error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
1589
        OFFSET_REF.
1590
        * expr.c (cpls_expand_expr): Remove dead code.  Handle
1591
        PTRMEM_CST.
1592
        * friend.c (do_friend): Lookup friends when in nested classes.
1593
        Change comments.
1594
        * init.c (build_offset_ref): Do lookup even for classes that are
1595
        only partially defined.
1596
        (decl_constant_value): Remove dead code.
1597
        * method.c (build_overload_value): Remove hack where by TYPE was
1598
        not a TYPE.  Handle PTRMEM_CST.
1599
        (build_template_parm_names): Don't pass a PARM_DECL where a TYPE
1600
        should go.
1601
        * parse.y (components, notype_components, component_decl,
1602
        component_decl_1, component_declarator, component_declarator0):
1603
        Now all are itype rather than ttype.  Rework to add members to
1604
        classes on the fly.
1605
        (typesqpecqual_reserved): Use check_multiple_declarators.
1606
        (structsp): Update class to finish_class_definition.
1607
        (do_xref_defn): Unsplit into named_class_head.
1608
        (access_specifier): Set current_access_specifier.
1609
        * pt.c (set_current_access_from_decl): New function.
1610
        (finish_member_template_decl): Don't take the parameters.
1611
        (comp_template_args): Make more robust.
1612
        (lookup_template_class): Don't use current_local_enum.
1613
        (for_each_template_parm): Handle PTRMEM_CST.
1614
        (instantiate_class_template): Use set_current_access_from_decl,
1615
        finish_member_declaration and unreverse_member_declarations.  Set
1616
        lineno/input_filename before generating implicit member functions.
1617
        (type_unification_real): Don't assume back-unification happens
1618
        only for the last argument.
1619
        (regenerate_decl_from_template): Call pushclass a bit earlier.
1620
        (tsubst_chain): Remove.
1621
        (tsubst_enum): Use set_current_access_from_decl.
1622
        (set_mangled_name_for_template_decl): Fix indentation.
1623
        * search.c (lookup_fnfields_1): Change iteration through
1624
        CLASSTYPE_METHOD_VEC.
1625
        (dfs_pushdecls): Likewise.
1626
        (dfs_compress_decls): Likewise.
1627
        (add_conversions): Likewise.
1628
        * semantics.c (finish_class_definition): Don't take components.
1629
        Change call to finish_struct.
1630
        (finish_member_declaration): New function.
1631
        (finish_member_class_template): Don't take template parameters.
1632
        Change call to grok_x_components.  Call finish_member_template_decl.
1633
        (check_multiple_declarators): New function.
1634
        * sig.c (append_signature_fields): Work from the TYPE_METHODS, not
1635
        a passed in fieldlist.
1636
        * tree.c (search_tree): Handle PTRMEM_CST.
1637
        (mapcar): Likewise.
1638
        * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
1639
        INTEGER_CSTs, for pointer-to-data members.
1640
 
1641
        * call.c (resolve_args): Resolve template specializations, if
1642
        possible.
1643
 
1644
Tue Oct  6 07:57:26 1998  Kaveh R. Ghazi  
1645
 
1646
        * Makefile.in (spew.o): Depend on toplev.h.
1647
 
1648
        * call.c (compare_ics): Initialize variables `deref_from_type2',
1649
        `deref_to_type1' and `deref_to_type2'.
1650
 
1651
        * except.c (get_eh_type): Hide prototype and definition.
1652
        (process_start_catch_block_old): Remove unused static prototype.
1653
 
1654
        * pt.c (tsubst_decl): Initialize variable `argvec'.
1655
 
1656
        * spew.c: Include toplev.h.
1657
 
1658
1998-10-05  Jason Merrill  
1659
 
1660
        * pt.c (instantiate_decl): Do save and restore file position.
1661
 
1662
1998-10-05  Martin von Löwis  
1663
 
1664
        * method.c (build_decl_overload_real): Clear
1665
        numeric_output_need_bar after __.
1666
 
1667
1998-10-05  Nathan Sidwell  
1668
 
1669
        * call.c (build_new_method_call): Issue 'incomplete type' error,
1670
        if class is not defined.
1671
 
1672
1998-10-05  Kaveh R. Ghazi  
1673
 
1674
        * call.c (build_object_call): Move declaration of variable
1675
        `fn' into the scope where it is used.  Don't access variable
1676
        `fn' when it is uninitialized, instead use `fns'.
1677
 
1678
1998-10-04  Theodore Papadopoulo  
1679
 
1680
        * errfn.c (cp_thing): Print buf as a string not as a printf format
1681
        to avoid problems with the operator%.  Consequently, `%%' sequences
1682
        in format are copied as `%' in buf.
1683
 
1684
1998-10-04  Jason Merrill  
1685
 
1686
        * pt.c (pop_tinst_level): Call extract_interface_info.
1687
        (instantiate_decl): Don't save and restore file position.
1688
 
1689
        * decl.c (cp_finish_decl): Make statics in extern inlines and
1690
        templates common, if possible and the target doesn't support weak
1691
        symbols.
1692
 
1693
        * decl.c (grokdeclarator): Remove redundant calls to
1694
        build_type_variant and some duplicated code.
1695
        * sig.c (build_signature_reference_type): Only take the type parm.
1696
        (build_signature_pointer_type): Likewise.
1697
        * tree.c (build_cplus_method_type): Adjust.
1698
        * cp-tree.h: Update.
1699
 
1700
1998-10-04  Mark Mitchell  
1701
 
1702
        * call.c (build_over_call): Make pedwarns about dropped qualifiers
1703
        into full-fledged errors.
1704
        * cvt.c (convert_to_reference): Likewise.
1705
        * typeck.c (convert_for_assignment): Likewise.
1706
 
1707
        * search.c (expand_upcast_vtables): In addition to unsetting
1708
        TREE_READONLY, remove top-level const type qualifier.
1709
 
1710
1998-10-03  Mark Mitchell  
1711
 
1712
        * class.c (current_class_ptr, current_class_ref): Clarify
1713
        documentation.
1714
        * cvt.c (ocp_convert): Don't expect fold to remove all trivial
1715
        NOP type conversions.
1716
        * decl.c (decls_match): Use comptypes directly; ignore
1717
        qualifiers on the DECL.
1718
        (duplicate_decls): Remove qualifier checks on DECL.
1719
        (grokdeclarator): Make the type built up include top-level
1720
        qualifiers.
1721
        * decl2.c (do_dtors): Fix spelling error.
1722
        * error.c (dump_simple_decl): Don't look at qualifiers on the decl
1723
        when printing type information.
1724
        * init.c (build_new_1): Add documentation.  Deal with the fact
1725
        that type of allocated memory now contains qualifiers.
1726
        * lex.c (is_global): Improve error-recovery.
1727
        * sig.c (build_member_function_pointer): Don't cast away const
1728
        on fields of sigtable_entry_type.
1729
        * tree.c (lvalue_type): Don't look at top-level qualifiers on
1730
        expressions.
1731
        * typeck.c (decay_conversion): Likewise.
1732
        (build_component_ref): Make sure the type of the COMPONENT_REF
1733
        contains top-level qualifiers, as appropriate.  Improve
1734
        error-handling.
1735
        (build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
1736
        (build_array_ref): Likewise.
1737
        (build_unary_op): Improve error-recovery.
1738
        (unary_complex_lvalue): Make taking the address a bound member
1739
        function an error, not a sorry.
1740
        (build_conditional_expr): Look at the type qualifiers, not the
1741
        qualifiers on the expression itself.
1742
 
1743
1998-10-03  Jason Merrill  
1744
 
1745
        * decl2.c (merge_functions): Remove duplicates.
1746
 
1747
        * decl2.c: Add -f{no-,}implicit-inline-templates.
1748
        (import_export_decl): Check it.
1749
 
1750
        * decl.c (lookup_name_real): Template parms also take precedence
1751
        over implicit typename.  Only warn if yylex.
1752
 
1753
        * typeck.c (build_conditional_expr): Only fold if ifexp is an
1754
        INTEGER_CST.
1755
 
1756
        * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
1757
        instead of linkage.
1758
 
1759
1998-10-01  Jason Merrill  
1760
 
1761
        * cp-tree.h (FORMAT_VBASE_NAME): New macro.
1762
        * class.c (build_vbase_pointer): Use it.
1763
        * rtti.c (expand_class_desc): Likewise.
1764
        * tree.c (build_vbase_pointer_fields): Likewise.
1765
 
1766
Thu Oct  1 10:43:45 1998  Nick Clifton  
1767
 
1768
        * decl.c (start_decl): Add invocation of
1769
        SET_DEFAULT_DECL_ATTRIBUTES, if defined.
1770
        (start_function): Add invocation of
1771
        SET_DEFAULT_DECL_ATTRIBUTES, if defined.
1772
 
1773
        * lex.c: Replace occurrences of HANDLE_SYSV_PRAGMA with
1774
        HANDLE_GENERIC_PRAGMAS.
1775
 
1776
1998-09-28  Anthony Green  
1777
 
1778
        * semantics.c (finish_asm_stmt): Always permit volatile asms.
1779
 
1780
1998-09-28  Mark Mitchell  
1781
 
1782
        * decl.c (grokdeclarator): Tighten checks for invalid
1783
        destructors.  Improve error-messages and error-recovery.
1784
        * decl2.c (check_classfn): Don't assume that mangled destructor
1785
        names contain type information.
1786
 
1787
1998-09-25  Jason Merrill  
1788
 
1789
        * search.c (get_base_distance): Remove assert.
1790
 
1791
        * decl2.c (build_anon_union_vars): Don't process a field with no
1792
        name.
1793
        (finish_anon_union): Also complain about local anon unions with no
1794
        members.
1795
 
1796
1998-09-25  Martin von Löwis  
1797
 
1798
        * decl.c (lookup_namespace_name): If the name is a namespace,
1799
        return it immediately.
1800
 
1801
Fri Sep 25 11:45:38 1998  Kaveh R. Ghazi  
1802
 
1803
        * cp-tree.h (define_case_label): Remove unused parameter.
1804
        (check_java_method): Likewise.
1805
        (grokclassfn): Likewise.
1806
        (expand_aggr_init): Likewise.
1807
        (build_x_delete): Likewise.
1808
        (maybe_end_member_template_processing): Likewise.
1809
        (unshare_base_binfos): Add prototype.
1810
        (string_conv_p): Likewise.
1811
        (my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
1812
 
1813
        * cvt.c (build_up_reference): Remove unused parameter
1814
        `checkconst', all callers changed.
1815
        (build_type_conversion): Mark parameter `code' with
1816
        ATTRIBUTE_UNUSED.
1817
        (build_expr_type_conversion): Initialize variable `conv'.
1818
 
1819
        * decl.c (push_namespace): Initialize variable `d'.
1820
        (define_case_label): Remove unused parameter `decl', all callers
1821
        changed.
1822
 
1823
        * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
1824
        `argc' with ATTRIBUTE_UNUSED.
1825
        (grokclassfn): Remove unused parameter `cname', all callers
1826
        changed.
1827
        (check_java_method): Likewise for parameter `ctype'.
1828
        (copy_assignment_arg_p): Mark parameter `virtualp' with
1829
        ATTRIBUTE_UNUSED.
1830
        (finish_prevtable_vardecl): Likewise for parameter `prev'.
1831
 
1832
        * expr.c (extract_init): Likewise for parameters `decl' and `init'.
1833
 
1834
        * init.c (expand_aggr_init_1): Remove unused parameter
1835
        `alias_this', all callers changed.
1836
        (expand_aggr_init): Likewise.
1837
        (expand_default_init): Likewise.
1838
        (build_new_1): Initialize variable `susp'.
1839
        (build_x_delete): Remove unused parameter `type', all callers
1840
        changed.
1841
 
1842
        * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
1843
        ATTRIBUTE_UNUSED.
1844
        (readescape): Use (unsigned) value in shift.
1845
        (real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
1846
        comparing to a signed quantity.
1847
 
1848
        * pt.c (maybe_end_member_template_processing): Remove unused
1849
        parameter `decl', all callers changed.
1850
        (check_explicit_specialization): Add braces around empty body in
1851
        an else-statement.
1852
        (current_template_args): Initialize variable `args'.
1853
        (lookup_template_class): Likewise for variable `prev_local_enum'.
1854
        (tsubst_decl): Likewise for variable `r'.
1855
        (set_mangled_name_for_template_decl): Initialize variable
1856
        `context'.
1857
 
1858
        * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
1859
        Likewise for variable `i'.
1860
        (yylex): Initialize variable `trrr'.
1861
 
1862
        * typeck.c (compparms): Mark variable `strict' with
1863
        ATTRIBUTE_UNUSED.
1864
 
1865
        * xref.c (simplify_type): Cast argument of ctype function to
1866
        `unsigned char'.
1867
 
1868
1998-09-24  Mark Mitchell  
1869
 
1870
        * cp-tree.h (language_lvalue_valid): Remove.
1871
        * decl.c (grokdeclarator): Don't disallow references to functions.
1872
        * tree.c (lvalue_p_1): New function, combining duplicated
1873
        code from ...
1874
        (lvalue_p): Use it.
1875
        (real_lvalue_p): Likewise.
1876
        * typeck.c (language_lvalue_valid): Remove.
1877
        (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
1878
        they don't have TREE_READONLY set.
1879
        * typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
1880
 
1881
1998-09-24  Benjamin Kosnik  
1882
 
1883
        * spew.c (yylex): Give diagnostic.
1884
        * hash.h (is_reserved_word): Add export.
1885
        * gxx.gperf: Likewise.
1886
        * lex.h (rid): Add RID_EXPORT.
1887
        * lex.c (init_parse): Likewise.
1888
 
1889
Tue Sep 22 21:01:19 1998  Gerald Pfeifer  
1890
 
1891
        * friend.c (do_friend): Make warning a full sentence.
1892
 
1893
1998-09-22  Mark Mitchell  
1894
 
1895
        * parse.y (component_decl_list): Improve error-recovery.
1896
 
1897
1998-09-22  Benjamin Kosnik  
1898
 
1899
        * decl.c (make_typename_type): Move error to point where name
1900
        variable can be used by dump_type.
1901
 
1902
1998-09-22  Mark Mitchell  
1903
 
1904
        * decl.c (grokfndecl): Improve error-recovery.
1905
        * decl2.c (grokfield): Likewise.
1906
        * pt.c (finish_member_template_decl): Likewise.
1907
 
1908
1998-09-20  Martin von Löwis  
1909
 
1910
        * method.c (hack_identifier): Finding multiple members is always
1911
        an error.
1912
 
1913
1998-09-21  Per Bothner  
1914
 
1915
        * Make-lang.in (c++-filt):  Link libiberty.a after cxxmain.o.
1916
 
1917
Mon Sep 21 01:53:05 1998  Felix Lee  
1918
 
1919
        * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
1920
 
1921
1998-09-20  Mark Mitchell  
1922
 
1923
        * class.c (maybe_warn_about_overly_private_class): Reformat.
1924
 
1925
1998-09-17  Andrew MacLeod  
1926
 
1927
        * exception.cc (__cplus_type_matcher): Realign some code.
1928
 
1929
1998-09-16  Mark Mitchell  
1930
 
1931
        * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
1932
        (tinfo2.o): Likewise.
1933
        (exception.o): Likewise.
1934
        (new.o): Likewise.
1935
        (opnew.o): Likewise.
1936
        (opnewnt.o): Likewise.
1937
        (opvnew.o): Likewise.
1938
        (opvnewnt.o): Likewise.
1939
        (opdel.o): Likewise.
1940
        (opdelnt.o): Likewise.
1941
        (opvdel.o): Likewise.
1942
        (opvdelnt.o): Likewise.
1943
 
1944
1998-09-16  Richard Henderson  
1945
 
1946
        * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
1947
 
1948
1998-09-15  Alexandre Oliva  
1949
 
1950
        * call.c (build_field_call): Handle static data members too.
1951
 
1952
        * typeck.c (comptypes): When comparing pointer types, check
1953
        whether referred types match even in strictest modes.
1954
 
1955
1998-09-15  Mark Mitchell  
1956
 
1957
        * cp-tree.h: Revert previous change.
1958
        (finish_struct_methods): Remove declaration.
1959
        * class.c: Revert previous change.
1960
        (maybe_warn_about_overly_private_class): New function.
1961
        (finish_struct_methods): Declare here, and make static.  Remove
1962
        unnecessary parameters.  Tidy slightly.  Use
1963
        maybe_warn_about_overly_private_class.
1964
        (finish_struct_1): Adjust.  Remove check for private constructors,
1965
        now done elsewhere.
1966
        (finish_struct): Adjust.
1967
 
1968
1998-09-15  Andrew MacLeod  
1969
 
1970
        * except.c (expand_start_catch_block): No need to check for new
1971
        exception model.
1972
        (process_start_catch_block_old): Deleted.
1973
        (process_start_catch_block): Add call to start_decl_1().
1974
        (expand_end_catch_block): Add call to end_catch_handler().
1975
        * exception.cc (__cplus_type_matcher): Only check the exception
1976
        language if there is an exception table.
1977
 
1978
1998-09-15  Andrew MacLeod  
1979
 
1980
        * search.c (expand_indirect_vtbls_init): Mark temporary stack slots
1981
        as used to prevent conflicts with virtual function tables.
1982
 
1983
1998-09-14  Mark Mitchell  
1984
 
1985
        * cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
1986
        (CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
1987
        * class.c (maybe_class_too_private_p): New function.
1988
        (finish_struct_methods): Use it.
1989
        (finish_struct_1): Likewise.
1990
        (finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
1991
        appropriate.
1992
 
1993
        * pt.c (check_specialization_scope): Fix spelling error.
1994
        (check_explicit_specialization): Remove code to handle explicit
1995
        specializations in class scope; they are now correctly diagnosed
1996
        as errors.
1997
 
1998
1998-09-10  Mark Mitchell  
1999
 
2000
        * decl.c (pushdecl): Don't copy types if the
2001
        DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
2002
        type.
2003
 
2004
1998-09-09  Kriang Lerdsuwanakij  
2005
 
2006
        * class.c (get_enclosing_class): New function.
2007
        (is_base_of_enclosing_class): Likewise.
2008
        * cp-tree.h (get_enclosing_class): Declare.
2009
        (is_base_of_enclosing_class): Likewise.
2010
        * pt.c (coerce_template_parms): Use them.
2011
 
2012
1998-09-09  Jason Merrill  
2013
 
2014
        * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
2015
        null to decide whether to use it.
2016
 
2017
        * error.c (dump_type_real): Handle NAMESPACE_DECL.
2018
        * parse.y (base_class.1): Avoid crash on error.
2019
 
2020
1998-09-08  Martin von Löwis  
2021
 
2022
        * decl.c (make_typename_type): If context is a namespace, the code
2023
        is in error.
2024
 
2025
1998-09-08  Mumit Khan  
2026
 
2027
        * parse.y (nomods_initdcl0): Set up the parser stack correctly.
2028
 
2029
1998-09-08  Mark Mitchell  
2030
 
2031
        * cp-tree.h (anonymous_namespace_name): Declare.
2032
        * decl.c: Define it.
2033
        (push_namespace): Use anonymous_namespace_name, rather than local
2034
        static anon_name.
2035
        * error.c (dump_decl): If a namespace is named
2036
        anonymous_namespace_name, call it {anonymous}.
2037
 
2038
        * decl.c (grokparms): Distinguish between references and pointers
2039
        in error message.
2040
 
2041
1998-09-08  Richard Henderson  
2042
            Mark Mitchell  
2043
 
2044
        * pt.c (process_partial_specialization): Consistently allocate
2045
        and zero tpd.parms based on ntparms.  Use tpd2.parms, not
2046
        tpd.parms, where appropriate.
2047
 
2048
Sun Sep  6 00:00:51 1998  Jeffrey A Law  (law@cygnus.com)
2049
 
2050
        * Makefile.in (INCLUDES): Update after recent toplevel gcc
2051
        reorganizations.
2052
 
2053
1998-09-05  Mark Mitchell  
2054
 
2055
        * cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
2056
        * class.c (finish_struct): Remove hackery to deal with explicit
2057
        specializations in class scope.
2058
        * decl.c (grokfndecl): Improve error-recovery.
2059
        * decl2.c (grokfield): Likewise.
2060
        * pt.c (check_specialization_scope): New function.
2061
        (begin_specialization): Call it.
2062
        (process_partial_specialization): New function, split out from
2063
        push_template_decl.  Check partial specializations more
2064
        stringently.
2065
        (push_template_decl): Call it.
2066
        (check_explicit_specialization): Don't attempt to handle explicit
2067
        specializations in class scope.
2068
        (template_parm_data): Document.  Add current_arg and
2069
        arg_uses_template_parms.
2070
        (mark_template_parm): Set it.
2071
        (tsubst_arg_types): Remove unused variable.
2072
        * semantics.c (begin_class_definition): Tweak.
2073
 
2074
1998-09-04  Mark Mitchell  
2075
 
2076
        * inc/typeinfo (type_info::type_info(const char*)): Make
2077
        `explicit'.
2078
 
2079
        * cp-tree.h (hash_tree_cons_simple): New macro.
2080
        * pt.c (tsubst_arg_types): New function.  Use hash_tree_cons.
2081
        (coerce_template_parms): Use make_temp_vec, instead of
2082
        make_tree_vec.  Document this behavior.
2083
        (lookup_template_class): Likewise.
2084
        (tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.
2085
        Remove dead code (and add assertion to check its deadness).  Fix
2086
        bug w.r.t. exception specifications.
2087
 
2088
1998-09-03  Jason Merrill  
2089
 
2090
        * decl2.c (import_export_vtable): Always make artificials comdat.
2091
        (import_export_decl): Likewise.
2092
        * pt.c (mark_decl_instantiated): Likewise.
2093
 
2094
1998-09-03  Mark Mitchell  
2095
 
2096
        * cp-tree.h (finish_globally_qualified_member_call_expr):
2097
        Rename to ...
2098
        (finish_qualified_call_expr).
2099
        * semantics.c: Likewise.
2100
        * parse.y (primary): Use it.
2101
        * method.c (hack_identifier): Remove redundant code.
2102
 
2103
        * init.c (resolve_offset_ref): Call convert_from_reference to
2104
        handle members of reference type.  Improve error recovery.
2105
 
2106
1998-09-03  Benjamin Kosnik  
2107
 
2108
        * cp-tree.h: Declare warn_nontemplate_friend.
2109
        * decl2.c (lang_decode_option): Set.
2110
        * lang-options.h: Add -Wnon-template-friend.
2111
        * friend.c (do_friend): Use to toggle non-template function warning.
2112
 
2113
1998-09-03  Mark Mitchell  
2114
 
2115
        * decl.c (finish_enum): Don't resolve CONST_DECLs to their
2116
        corresponding INTEGER_CSTs when processing_template_decl.
2117
        * pt.c (tsubst_enum): Tweak accordingly.
2118
 
2119
1998-09-03  Benjamin Kosnik  
2120
 
2121
        * decl.c (pushdecl_class_level): Add warning here.
2122
        (pushdecl): Tweak.
2123
 
2124
1998-09-02  Jason Merrill  
2125
 
2126
        * cvt.c (convert_pointer_to_real): Tidy.
2127
        * search.c (get_base_distance_recursive): Simplify.
2128
        (get_base_distance): Likewise.
2129
 
2130
        * pt.c (unify): Only special-case INTEGER_TYPE if it uses template
2131
        parms.
2132
 
2133
Wed Sep 02 09:25:29 1998  Nick Clifton  
2134
 
2135
        * lex.c (check_newline):  Call HANDLE_PRAGMA before
2136
        HANDLE_SYSV_PRAGMA if both are defined.  Generate warning messages
2137
        if unknown pragmas are encountered.
2138
        (handle_sysv_pragma): Interpret return code from
2139
        handle_pragma_token ().  Return success/failure indication rather
2140
        than next unprocessed character.
2141
        (pragma_getc): New function: retrieves characters from the
2142
        input stream.  Defined when HANDLE_PRAGMA is defined.
2143
        (pragma_ungetc): New function: replaces characters back into the
2144
        input stream.  Defined when HANDLE_PRAGMA is defined.
2145
 
2146
1998-09-01  Jason Merrill  
2147
 
2148
        * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
2149
        * class.c (build_vtable_entry_ref): Likewise.
2150
 
2151
1998-09-01  Mark Mitchell  
2152
 
2153
        * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
2154
        * decl2.c (import_export_decl): Likewise.
2155
        * pt.c (instantiate_decl): Use it.
2156
 
2157
1998-09-01  Jason Merrill  
2158
 
2159
        * decl.c (lookup_name_real): Also do implicit typename thing for
2160
        artificial TYPE_DECLs.
2161
        * search.c (lookup_field): Likewise.
2162
        (lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
2163
        * semantics.c (begin_constructor_declarator): Use enter_scope_of.
2164
        (enter_scope_of): Extract type from implicit typename.
2165
        (begin_class_definition): Likewise.
2166
        * lex.c (identifier_type): Handle implicit typename when checking
2167
        for SELFNAME.
2168
 
2169
        * cp-tree.h: Declare flag_strict_prototype.
2170
        * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
2171
        -fstrict-prototype.
2172
        * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
2173
        specified, set it to the value of pedantic.
2174
 
2175
1998-09-01  Mark Mitchell  
2176
 
2177
        * decl2.c (arg_assoc): Handle template-id expressions as arguments.
2178
 
2179
1998-08-31  Mark Mitchell  
2180
 
2181
        * decl.c (finish_enum): Handle member enums of classes declared in
2182
        template functions.
2183
 
2184
        * decl2.c (grok_x_components): Strip attributes before calling
2185
        groktypename.
2186
 
2187
1998-08-31  Jason Merrill  
2188
 
2189
        * cp-tree.h, decl2.c: Remove support for -fall-virtual,
2190
        -fenum-int-equivalence and -fno-nonnull-objects.
2191
        * class.c (check_for_override): Remove support for -fall-virtual.
2192
        (finish_struct_1): Likewise.
2193
        * call.c (build_new_op): Remove support for -fenum-int-equivalence.
2194
        * typeck.c (build_binary_op_nodefault): Likewise.
2195
        * cvt.c (ocp_convert): Likewise.
2196
        * call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
2197
        * class.c (build_vbase_path): Likewise.
2198
 
2199
Sun Aug 30 22:16:31 1998  H.J. Lu  (hjl@gnu.org)
2200
 
2201
        * Makefile.in (INTERFACE): New, set to 1.
2202
 
2203
1998-08-30  Mark Mitchell  
2204
 
2205
        * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
2206
        comparing with global_namespace.
2207
        (dump_aggr_type): Likewise.
2208
 
2209
        * decl.c (grokfndecl): Issue error on declaration of friend
2210
        templates with explicit template arguments.
2211
 
2212
        * pt.c (convert_template_argument): New function, split out
2213
        from...
2214
        (coerce_template_parms): Here.
2215
        (tsubst): Attempt better error-recovery.
2216
 
2217
1998-08-28  Benjamin Kosnik  
2218
 
2219
        * pt.c (decl_template_parm_p): Add checks for
2220
        TEMPLATE_TEMPLATE_PARM.
2221
 
2222
1998-08-28  Mark Mitchell  
2223
 
2224
        * lex.c (do_identifier): Fix thinko in previous change.
2225
 
2226
1998-08-28  Jason Merrill  
2227
 
2228
        * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
2229
        * decl2.c (output_vtable_inherit): Call binfo_for_vtable.
2230
 
2231
1998-08-28  Richard Henderson  
2232
 
2233
        Add support for discarding unused virtual functions.
2234
        * lang-options.h: Add -fvtable-gc.
2235
        * cp-tree.h: Add flag_vtable_gc.
2236
        * decl2.c (output_vtable_inherit): New fn.
2237
        (finish_vtable_vardecl): Call it.
2238
        * class.c (build_vtable_entry_ref): New fn.
2239
        (build_vtbl_ref): Call it.
2240
 
2241
1998-08-28  Mark Mitchell  
2242
 
2243
        * cp-tree.h (build_enumerator): Take the enumeration type as a
2244
        parameter.
2245
        * decl.c (finish_enum): Don't set the TREE_TYPE for the
2246
        enumeration constant values if we're processing_template_decls.
2247
        Don't set the type for the CONST_DECLs either; that's done in
2248
        build_enumerator.
2249
        (build_enumerator): Take the enumeration type as a
2250
        parameter.
2251
        * lex.c (do_identifier): Don't resolve enumeration constants while
2252
        processing template declarations, even if they happen to be
2253
        TEMPLATE_PARM_INDEXs.
2254
 
2255
        * parse.y (current_enum_type): New variable.
2256
        (primary): Don't allow statement-expression in local classes just
2257
        as we don't in global classes.
2258
        (structsp): Use current_enum_type.
2259
        (enum_list): Likewise.
2260
        * pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
2261
        finish_enum; they no longer occur.
2262
 
2263
        * cp-tree.h (finish_base_specifier): New function.
2264
        * parse.y (base_class): Use it.
2265
        * semantics.c (finish_base_specifier): Define it.
2266
 
2267
        * parse.y (structsp): Warn on use of typename outside of template
2268
        declarations.
2269
 
2270
1998-08-27  Jason Merrill  
2271
 
2272
        * lex.c (handle_cp_pragma): Remove #pragma vtable.
2273
        * lang-options.h: Remove +e options.
2274
        * decl2.c (lang_decode_option): Likewise.
2275
        (import_export_vtable): Don't check write_virtuals.
2276
        (finish_vtable_vardecl, finish_file): Likewise.
2277
        * search.c (dfs_debug_mark): Likewise.
2278
        * semantics.c (begin_class_definition): Likewise.
2279
        * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
2280
 
2281
        * call.c (build_over_call): Check flag_elide_constructors.
2282
        * decl2.c: flag_elide_constructors defaults to 1.
2283
        * typeck.c (convert_arguments): Remove return_loc parm.
2284
        (build_function_call_real): Adjust.
2285
 
2286
        * search.c: Tear out all mi_matrix and memoize code.
2287
        (lookup_field, lookup_fnfields): Use scratch_tree_cons.
2288
        * lang-options.h: Remove documentation for -fhandle-exceptions,
2289
        -fmemoize-lookups and -fsave-memoized.
2290
        * cp-tree.h: Lose mi_matrix and memoize support.
2291
        * decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
2292
        * class.c: Lose struct class_level.
2293
        (pushclass, popclass): Lose memoize support.
2294
        * init.c (build_offset_ref): Likewise.
2295
 
2296
        Never change BINFO_INHERITANCE_CHAIN.
2297
        * init.c (emit_base_init): Change modification of
2298
        BINFO_INHERITANCE_CHAIN to an assert.
2299
        * search.c (get_base_distance_recursive): Likewise.
2300
        (get_base_distance): Likewise.
2301
        (lookup_member): Likewise.
2302
        (convert_pointer_to_single_level): Likewise.
2303
        (lookup_field): Likewise.  Lose setting TREE_VIA_* on TREE_LISTs.
2304
        (lookup_fnfields): Likewise.
2305
        * tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
2306
        (unshare_base_binfos): Don't call propagate_binfo_offsets.
2307
        (layout_basetypes): Call propagate_binfo_offsets instead of
2308
        unshare_base_binfos.
2309
        * decl.c (xref_basetypes): Call unshare_base_binfos.
2310
        * pt.c (instantiate_class_template): Likewise.
2311
        * tree.c (reverse_path): Remove 'copy' parm; always make a
2312
        temporary copy.
2313
        * class.c (build_vbase_path): Just call it.
2314
        * search.c (compute_access): Likewise.  Don't re-reverse.
2315
 
2316
1998-08-27  Mark Mitchell  
2317
 
2318
        * class.c (build_vbase_path): Use reverse_path.
2319
        (finish_base_struct): Move warnings for inaccessible bases to
2320
        layout_basetypes.
2321
        (modify_one_vtable): Remove check of TREE_USED (binfo).
2322
        (fixup_vtable_deltas1): Likewise.
2323
        * cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
2324
        (xref_tag): Remove binfos parameter.
2325
        (make_binfo): Remove chain parameter.
2326
        (reverse_path): Add copy parameter.
2327
        * decl.c (init_decl_processing): Change calls to xref_tag.
2328
        (xref_tag): Remove binfos parameter.
2329
        (xref_basetypes): Change calls to make_binfo.
2330
        * decl2.c (grok_x_components): Change calls to xref_tag.
2331
        (handle_class_head): Likewise.
2332
        * friend.c (do_friend): Likewise.
2333
        * lex.c (make_lang_type): Change calls to make_binfo.
2334
        * parse.y (structsp): Change calls to xref_tag.
2335
        (named_complex_class_head_sans_basetype): Likewise.
2336
        (named_class_head): Likewise.
2337
        * rtti.c (init_rtti_processing): Likewise.
2338
        * search.c (compute_access): Change calls to reverse_path.
2339
        (dfs_get_vbase_types): Change calls to make_binfo.
2340
        (get_vbase_types): Remove dead code.
2341
        * tree.c (unshare_base_binfos): Change calls to make_binfo.
2342
        (layout_basetypes): Warn here about inaccessible bases.
2343
        (make_binfo): Remove chain parameter.
2344
        (reverse_path): Add copy parameter.
2345
 
2346
1998-08-27  Jason Merrill  
2347
 
2348
        * class.c: #if 0 complete_type_p.
2349
        * init.c (build_java_class_ref, build_new_1): Remove unused locals.
2350
        * method.c (process_overload_item): Likewise.
2351
        * typeck.c (comp_target_types): Likewise.
2352
 
2353
        Stop sharing binfos for indirect virtual bases.
2354
        * tree.c (propagate_binfo_offsets): Unshare vbases, too.
2355
        (layout_basetypes): Likewise.
2356
        (unshare_base_binfos): Copy vbases, too.
2357
        * cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
2358
        BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
2359
        (BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
2360
        CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
2361
        * search.c (lookup_field, lookup_fnfields, lookup_member): Remove
2362
        reference to BINFO_VIA_PUBLIC.
2363
        (marked_pushdecls_p, unmarked_pushdecls_p): New fns.
2364
        (push_class_decls): Use them.
2365
        (dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
2366
        (dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.
2367
 
2368
1998-08-27  Mark Mitchell  
2369
 
2370
        * decl.c (build_enumerator): Set DECL_CONTEXT for the
2371
        CONST_DECLs.
2372
 
2373
1998-08-26  Mark Mitchell  
2374
 
2375
        * cp-tree.h (finish_enum): Change prototype.
2376
        * decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
2377
        VALUES parameter.  Don't try to compute mins/maxs if
2378
        processing_template_decl.
2379
        * parse.y (structsp): Use new calling sequence for finish_enum.
2380
        * pt.c (tsubst_enum): Likewise.  Take the new type as input.
2381
        (lookup_template_class): Remove unused variables.  Tweak.
2382
        Register enums on instantiation list before substituting
2383
        enumeration constants.
2384
        (tsubst_decl): Remove unused variables.
2385
        (regenerate_decl_from_template): Likewise.
2386
 
2387
        * decl.c (duplicate_decls): Don't obliterate the
2388
        DECL_TEMPLATE_INFO for a template if we're not replacing it with
2389
        anything.
2390
 
2391
        * lex.c (do_identifier): Fix typo in comment.
2392
 
2393
Wed Aug 26 10:54:51 1998  Kaveh R. Ghazi  
2394
 
2395
        * errfn.c: Remove stdarg.h/varargs.h.
2396
        * tree.c: Likewise.
2397
 
2398
1998-08-25  Brendan Kehoe  
2399
 
2400
        * pt.c (tsubst_copy): Only do typename overloading on an
2401
        IDENTIFIER_NODE that happens to look like a typename if it actually
2402
        has a type for us to use.
2403
 
2404
1998-08-25  Jason Merrill  
2405
 
2406
        * typeck.c (comp_cv_target_types): Split out...
2407
        (comp_target_types): From here.  Don't allow cv-qual changes under
2408
        a pointer if nptrs == 0.  Fix OFFSET_TYPE handling.
2409
        (build_ptrmemfunc): Pass 1 to nptrs.
2410
        * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
2411
 
2412
1998-08-25  Mark Mitchell  
2413
 
2414
        * search.c (dependent_base_p): Don't compare a binfo to
2415
        current_class_type; use the TREE_TYPE of the binfo instead.
2416
 
2417
        * cp-tree.h (CLASS_TYPE_P): Revise definition.
2418
 
2419
1998-08-25  Jason Merrill  
2420
 
2421
        * decl.c (duplicate_decls): Don't complain about different
2422
        exceptions from an internal decl even if pedantic.
2423
 
2424
        * typeck.c (convert_for_assignment): Converting from pm of vbase
2425
        to derived is an error, not a sorry.
2426
 
2427
        * call.c (build_over_call): Use convert_pointer_to_real for 'this'.
2428
        * class.c (fixed_type_or_null): Rename from
2429
        resolves_to_fixed_type_p.  Return the dynamic type of the
2430
        expression, if fixed, or null.
2431
        (resolves_to_fixed_type_p): Use it.  Return 0 if the dynamic type
2432
        does not match the static type.
2433
        (build_vbase_path): Rename 'alias_this' to 'nonnull'.  Use
2434
        resolves_to_fixed_type_p again.
2435
 
2436
1998-08-24  Mark Mitchell  
2437
 
2438
        * pt.c (tsubst_decl): Move special case code for dealing with
2439
        tricky friend templates here from ...
2440
        (regenerate_decl_from_template): Here.
2441
 
2442
1998-08-24  Jason Merrill  
2443
 
2444
        * decl.c (start_decl): Remove redundant linkage check.
2445
 
2446
1998-08-24  Gavin Romig-Koch  
2447
 
2448
        * typeck.c (c_expand_return): Handle the case that valtype
2449
        is wider than the functions return type.
2450
 
2451
1998-08-24  Mark Mitchell  
2452
 
2453
        * cp-tree.h (CLASS_TYPE_P): New macro.
2454
        * decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
2455
        * pt.c (process_template_parm): Undo previous change.
2456
 
2457
1998-08-24  Benjamin Kosnik  
2458
 
2459
        * cp-tree.h: Declare.
2460
        * pt.c (decl_template_parm_p): New function.
2461
        * decl.c (pushdecl): Check decls for redeclaring template parms.
2462
        (xref_tag): Make redeclaration an error, print decl.
2463
        * decl2.c (grokfield): Check field_decls for redeclaration as well.
2464
 
2465
1998-08-24  Jason Merrill  
2466
 
2467
        * parse.y (primary): Fix up the type of string constants.
2468
 
2469
1998-08-24  Mark Mitchell  
2470
 
2471
        * typeck.c (convert_for_initialization): Move check for odd uses
2472
        of NULL to avoid duplicate warnings.
2473
 
2474
1998-08-24  Jason Merrill  
2475
 
2476
        * tree.c (lvalue_type): Fix for arrays.
2477
        * typeck.c (string_conv_p): New fn.
2478
        (convert_for_assignment): Use it.
2479
        (build_unary_op): Use lvalue_type.
2480
        * call.c (standard_conversion, convert_like): Use string_conv_p.
2481
        (add_function_candidate): Use lvalue_type.
2482
        * cvt.c (convert_to_reference): Likewise.
2483
        * decl2.c (lang_decode_option): Ignore -traditional.
2484
        * decl.c (init_decl_processing): flag_writable_strings inhibits
2485
        flag_const_strings.
2486
 
2487
1998-08-24  Andrew MacLeod  
2488
 
2489
        * lang-options.h (lang_options): Add fconst-strings to the list
2490
        of valid options.
2491
        * decl2.c (lang_f_options, lang_decode_option): Likewise.
2492
 
2493
1998-08-24  Nathan Sidwell  
2494
 
2495
        * lex.c (real_yylex): Don't warn about long long constants if
2496
        we're allowing long long.
2497
 
2498
1998-08-24  Martin von Löwis  
2499
 
2500
        * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
2501
        accessing bindings directly.
2502
 
2503
        * search.c (my_tree_cons): Reimplement.
2504
 
2505
        * lang-specs.h: Remove __HONOR_STD.
2506
        * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
2507
 
2508
1998-08-23  Mark Mitchell  
2509
 
2510
        * decl.c (grokdeclarator): Complain about in-class initialization
2511
        of aggregates and/or references.
2512
        * pt.c (process_template_parm): Clear IS_AGGR_TYPE for
2513
        TEMPLATE_TYPE_PARMs.
2514
 
2515
        * decl2.c (grok_array_decl): Add comment.
2516
        (mark_used): Don't instantiate an explicit instantiation.
2517
        * friend.c (make_friend_class): Remove bogus comment.  Fix check
2518
        for partial specializations.
2519
        * pt.c (check_explicit_specialization): Don't
2520
        SET_DECL_EXPLICIT_INSTANTIATION here.
2521
        (mark_decl_instantiated): Or here.
2522
        (do_decl_instantiation): Do it here, instead.  Add checks for
2523
        duplicate explicit instantiations, etc.  Tidy.
2524
        (do_type_instantiation): Likewise.
2525
        (instantiate_decl): Improve comments.  Complain about explicit
2526
        instantiations where no definition is available.
2527
 
2528
        * cp-tree.h (ansi_null_node): Remove.
2529
        * call.c (build_over_call): Warn about converting NULL to an
2530
        arithmetic type.
2531
        * cvt.c (build_expr_type_conversion): Likewise.  Use
2532
        null_ptr_cst_p instead of expanding it inline.
2533
        * decl.c (ansi_null_node): Remove.
2534
        (init_decl_processing): Make null_node always have integral type.
2535
        * except.c (build_throw): Warn about converting NULL to an
2536
        arithmetic type.
2537
        * lex.c (init_parse): Remove handling of ansi_null_node.
2538
        * pt.c (type_unification_real): Don't convert NULL to void* type.
2539
        * typeck.c (build_binary_op_nodefault): Fix NULL warnings.
2540
        (convert_for_assignment): Warn about converting NULL to an
2541
        arithmetic type.
2542
        (convert_for_initialization): Likewise.
2543
 
2544
1998-08-20  Jason Merrill  
2545
 
2546
        * tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
2547
        * pt.c (coerce_template_parms): Use no_linkage_check.
2548
        * decl.c (grokvardecl): Likewise.
2549
        (grokfndecl): Likewise.  Members of anonymous types have no linkage.
2550
 
2551
        * method.c (process_overload_item): Remove useless code.
2552
 
2553
1998-08-20  Per Bothner  
2554
 
2555
        Handle new'ing of Java classes.
2556
        * init.c (build_class_classref):  New function.
2557
        (build_new_1):  If type is TYPE_FOR_JAVA:  Call _Jv_AllocObject;
2558
        constructor does not return this;  don't need to exception-protect.
2559
 
2560
        * pt.c (lookup_template_class):  Copy TYPE_FOR_JAVA flag.
2561
        * decl2.c (acceptable_java_type):  Handle template-derived types.
2562
 
2563
1998-08-20  Per Bothner  
2564
 
2565
        * decl2.c (import_export_vtable):  Suppress vtables for Java classes.
2566
 
2567
1998-08-20  Mark Mitchell  
2568
 
2569
        * decl.c (duplicate_decls): Always merge the old and new patterns
2570
        for templates, regardless of whether or not the new one has
2571
        DECL_INITIAL.  Don't throw away specializations.  Merge
2572
        DECL_SAVED_TREE.
2573
        * pt.c (tsubst_decl): Use the right pattern when calculating the
2574
        complete args for a new template instance.
2575
        (do_decl_instantiation): Fix typo in comment.
2576
        (regenerate_decl_from_template): Deal with tricky friend template
2577
        case.
2578
        (instantiate_decl): Likewise.
2579
 
2580
Thu Aug 20 09:09:45 1998  Jeffrey A Law  (law@cygnus.com)
2581
 
2582
        * init.c (build_builtin_delete_call): Add missing assemble_external
2583
        call.
2584
 
2585
1998-08-20  Jason Merrill  
2586
 
2587
        * parse.y (notype_unqualified_id): Also accept ~A.
2588
 
2589
1998-08-19  Mark Mitchell  
2590
 
2591
        * typeck.c (build_binary_op_nodefault): Warn on use of NULL in
2592
        arithmetic.
2593
        * except.c (build_throw): Warn when NULL is thrown, even with
2594
        -ansi.  Use ansi_null_node, rather than integer_zero_node, in the
2595
        thrown expression.
2596
 
2597
        * cp-tree.h (ansi_null_node): New variable.
2598
        * decl.c (ansi_null_node): New variable.
2599
        (init_decl_processing): Initialize its type.
2600
        * lex.c (init_parse): Initialize its value.  Use ansi_null_node
2601
        for null_node in non-ANSI mode.
2602
        * typeck.c (build_binary_op_nodefault): Use ansi_null_node in
2603
        place of null_node to avoid spurious errors.
2604
 
2605
1998-08-17  Mark Mitchell  
2606
 
2607
        * cp-tree.h (enter_scope_of): New function.
2608
        * parse.y (complex_direct_notype_declarator): Use it.
2609
        * semantics.c (enter_scope_of): New function.
2610
 
2611
1998-08-17  Jason Merrill  
2612
 
2613
        * decl.c (grokparms): No, here.
2614
 
2615
        * decl.c (grokdeclarator): Catch parm with pointer to array of
2616
        unknown bound here...
2617
        * method.c (process_overload_item): ...not here.
2618
 
2619
        * gxxint.texi: Remove obsolete documentation of overloading code.
2620
 
2621
        * decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
2622
        * class.c (finish_struct_bits): Likewise.
2623
 
2624
        * tree.c (lvalue_type): Fix for arrays.
2625
        * typeck.c (build_unary_op): Use lvalue_type.
2626
        * call.c (add_function_candidate): Likewise.
2627
        * cvt.c (convert_to_reference): Likewise.
2628
 
2629
        * decl2.c (lang_decode_option): Ignore -traditional.
2630
 
2631
        * init.c (build_offset_ref): Don't mess with error_mark_node.
2632
        * lex.c (do_scoped_id): Use cp_error.
2633
 
2634
        * rtti.c (get_tinfo_fn): Don't mess with the context for now.
2635
 
2636
1998-08-17  Benjamin Kosnik  
2637
 
2638
        * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
2639
 
2640
Mon Aug 17 10:40:18 1998  Jeffrey A Law  (law@cygnus.com)
2641
 
2642
        * cp-tree.h (set_identifier_local_value): Provide prototype.
2643
 
2644
        * decl2.c (do_namespace_alias): Remove unused variables `binding'
2645
        and `old'.
2646
 
2647
Fri Aug 14 16:42:27 1998  Nick Clifton  
2648
 
2649
        * Makefile.in: Rename BBISON to BISON so that it can be properly
2650
        inherited from the parent makefile.
2651
 
2652
1998-08-13  Jason Merrill  
2653
 
2654
        * lang-options.h: Add -finit-priority.
2655
        * decl2.c: Likewise.  Check flag_init_priority instead of
2656
        USE_INIT_PRIORITY.
2657
 
2658
        * decl2.c (setup_initp): New fn.
2659
        (start_objects, finish_objects, do_ctors): Handle init_priority.
2660
        (do_dtors, finish_file): Likewise.
2661
 
2662
1998-08-13  Jason Merrill  
2663
 
2664
        * pt.c (tsubst_copy): Hush warning.
2665
 
2666
        * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
2667
 
2668
1998-08-12  Mark Mitchell  
2669
 
2670
        * pt.c (print_template_context): Don't abort when instantiating a
2671
        synthesized method.
2672
 
2673
        * decl.c (grokdeclarator): Issue errors on namespace qualified
2674
        declarators in parameter lists or in class scope.
2675
 
2676
1998-08-09  Mark Mitchell  
2677
 
2678
        * pt.c (check_explicit_specialization): Don't abort on bogus
2679
        explicit instantiations.
2680
 
2681
1998-08-07  Mark Mitchell  
2682
 
2683
        * typeck.c (require_complete_type): Use complete_type_or_else.
2684
        (complete_type_or_else): Always return NULL_TREE on failure, as
2685
        documented.
2686
 
2687
        * pt.c (tsubst_aggr_type): Prototype.
2688
        (tsubst_decl): New function, split out from tsubst.  Set
2689
        input_filename and lineno as appropriate.
2690
        (pop_tinst_level): Restore the file and line number saved in
2691
        push_tinst_level.
2692
        (instantiate_class_template): Set input_filename and lineno as
2693
        appropriate.
2694
        (tsubst): Move _DECL processing to tsubst_decl.  Make sure the
2695
        context for a TYPENAME_TYPE is complete.
2696
 
2697
        * decl2.c (grokbitfield): Issue errors on bitfields declared with
2698
        function type.
2699
        (do_dtors): As in do_ctors, pretend to be a member of the same
2700
        class as a static data member while generating a call to its
2701
        destructor.
2702
 
2703
        * cvt.c (cp_convert_to_pointer): Handle NULL pointer
2704
        conversions, even in complex virtual base class hierarchies.
2705
 
2706
1998-08-06  Mark Mitchell  
2707
 
2708
        * cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
2709
        (TYPE_TEMPLATE_INFO): Likewise.
2710
        (SET_TYPE_TEMPLATE_INFO): Likewise.
2711
        (ENUM_TI_TEMPLATE): Likewise.
2712
        (ENUM_TI_ARGS): Likewise.
2713
        (lookup_nested_type_by_name): Remove.
2714
        * decl.c (maybe_process_template_type_declaration): Handle enums.
2715
        (start_enum): Don't check for primary-template enum declarations
2716
        here.
2717
        (finish_enum): Clean up, document.  Make sure template enum
2718
        constants get the correct type.
2719
        (build_enumerator): Copy initializers for template enumerations,
2720
        too.
2721
        (grok_enum_decls): Document.
2722
        * lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
2723
        better.  Build LOOKUP_EXPRs for local variables, even if they are
2724
        TREE_PERMANENT.
2725
        * pt.c (tsubst_enum): Remove field_chain parameter.
2726
        (template_class_depth): Include the depth of surrounding function
2727
        contexts.
2728
        (push_template_decl): Check for primary-template enum declarations
2729
        here.  Deal with enumeration templates.
2730
        (lookup_template_class): Likewise.
2731
        (for_each_template_parm): Likewise.
2732
        (instantiate_class_template): Don't call tsubst_enum directly,
2733
        call tsubst instead, to instantiate enums.  Deal with all
2734
        field_chain issues here, not in tsubst_enum.
2735
        (lookup_nested_type_by_name): Remove.
2736
        (tsubst_aggr_type): Revise handling of enumeration types.
2737
        (tsubst): Likewise.
2738
        (tsubst_copy): Likewise.
2739
        (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
2740
 
2741
1998-08-04  Mark Mitchell  
2742
 
2743
        * decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
2744
        uses template parameters.
2745
        * method.c (build_template_parm_names): Use the full set of
2746
        template arguments for tsubst'ing.
2747
        (build_overload_identifier): Pass the full set of template
2748
        arguments to build_template_parm_names, not just the
2749
        innermost_args.
2750
        * pt.c (TMPL_ARGS_DEPTH): Define using
2751
        TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
2752
        (NUM_TMPL_ARGS): New macro.
2753
        (add_outermost_template_args): Deal with the case where the outer
2754
        args will be completely discarded.
2755
        (coerce_template_parms): Use the full set of template arguments
2756
        for tsubst'ing.  Simplify.  Add some asserts.  Improve
2757
        error messages.
2758
        (lookup_template_class): Pass the full set of template arguments
2759
        to coerce_template_parms.
2760
        (tsubst): Add assertion.
2761
        (do_type_instantiation): Don't instantiate member template
2762
        classes.
2763
 
2764
        * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
2765
        name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
2766
 
2767
1998-08-03  Jason Merrill  
2768
 
2769
        * method.c (set_mangled_name_for_decl): Change return type to void.
2770
 
2771
        * decl.c (lookup_name_real): A namespace-level decl takes priority
2772
        over implicit typename.  Avoid doing the same lookup twice.
2773
 
2774
        * search.c (dependent_base_p): New fn.
2775
        (dfs_pushdecls, dfs_compress_decls): Use it.
2776
 
2777
        * typeck.c (get_member_function_from_ptrfunc): Don't try to handle
2778
        virtual functions if the type doesn't have any.
2779
 
2780
1998-08-03  Mark Mitchell  
2781
 
2782
        * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
2783
        uses template parameters.
2784
 
2785
1998-08-02  Mark Mitchell  
2786
 
2787
        * cp-tree.def (LOOKUP_EXPR): Document.  Remove second argument.
2788
        * cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
2789
        * lex.c (do_identifier): Don't use a second argument, or a type,
2790
        when building LOOKUP_EXPRs.
2791
        (do_identifier): Likewise.
2792
        (do_scoped_id): Likewise.
2793
        * method.c (hack_identifier): Improve error message.
2794
        * pt.c (lookup_template_function): Don't needlessly call
2795
        copy_to_permanent or build_min.
2796
        (tsubst_copy): Remove #if 0'd code.  tsubst into LOOKUP_EXPRs if
2797
        necessary.
2798
        (do_decl_instantiation): Improve error message.
2799
        * tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
2800
        (build_min): Copy the type to the permanent obstack, too.
2801
 
2802
1998-08-01  Jason Merrill  
2803
 
2804
        * init.c (init_init_processing): Remove BI* handling.
2805
        (build_builtin_call): Remove.
2806
        (build_builtin_delete_call): New fn.
2807
        (build_delete): Use it.
2808
 
2809
1998-07-31  Mark Mitchell  
2810
 
2811
        * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
2812
        (maybe_check_template_type): New function.
2813
        * decl.c (maybe_process_template_type_declaration): New function,
2814
        split out from pushtag  Call maybe_check_template_type.
2815
        (pushtag): Use it.  Use PROCESSING_REAL_TEMPLATE_DECL_P.
2816
        (xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
2817
        * friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
2818
        * pt.c (template_class_depth_real): Generalization of ...
2819
        (template_class_depth): Use it.
2820
        (register_specialization): Use duplicate_decls for duplicate
2821
        declarations of specializations.
2822
        (maybe_check_template_type): New function.
2823
        (push_template_decl_real): Fix comment.
2824
        (convert_nontype_argument): Likewise.
2825
        (lookup_template_class): Likewise.  Avoid an infinite loop on
2826
        erroneous code.
2827
        (tsubst_friend_function): Fix comment.
2828
        (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
2829
        an IDENTIFIER_NODE.
2830
        * semantics.c (begin_function_definition): Use
2831
        reset_specialization to note that template headers don't apply
2832
        directly to declarations after the opening curly for a function.
2833
 
2834
1998-07-29  Jason Merrill  
2835
 
2836
        * decl.c (push_overloaded_decl): Use current_namespace instead of
2837
        DECL_CONTEXT (decl) to determine where we go.
2838
 
2839
        * decl.c (lookup_name_real): Fix typo.
2840
 
2841
1998-07-28  Mark Mitchell  
2842
 
2843
        * friend.c (is_friend): Be lenient with member functions to deal
2844
        with nested friends.
2845
 
2846
1998-07-28  Jason Merrill  
2847
 
2848
        * class.c (finish_struct_1): Convert integer_zero_node to
2849
        ssizetype before passing it to set_rtti_entry.
2850
        * typeck2.c (initializer_constant_valid_p): Allow conversion of 0
2851
        of any size to a pointer.
2852
 
2853
1998-07-27  Mark Mitchell  
2854
 
2855
        * cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
2856
        (build_template_decl_overload): Remove.
2857
        (set_mangled_name_for_decl): New function.
2858
        (innermost_args): Remove is_spec parameter.
2859
        (most_specialized, most_specialized_class): Remove declarations.
2860
        (lookup_template_class): Add entering_scope parameter.
2861
        (maybe_process_partial_specialization): New function.
2862
        (finish_template_decl): Likewise.
2863
        (finish_template_type): Likewise.
2864
        * class.c (finish_struct): Clean up processing of member template
2865
        specializations.
2866
        * decl.c (pushtag): Fix formatting.
2867
        (lookup_tag): Improve handling of pseudo-global levels.
2868
        (make_typename_type): Adjust call to lookup_template_class.
2869
        (shadow_tag): Use maybe_process_partial_specialization.
2870
        (xref_tag): Improve handling of member friends.
2871
        (start_function): Call push_nested_class before
2872
        push_template_decl.  Don't call push_template_decl for
2873
        specializations.
2874
        * decl2.c (grok_x_components): Don't call xref_tag for
2875
        template instantiations.  Handle UNION_TYPEs like RECORD_TYPEs.
2876
        (grokclassfn): Use set_mangled_name_for_decl.
2877
        (arg_assoc_class): Adjust call to innermost_args.
2878
        (mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
2879
        * error.c (dump_function_name): Improve printing of template
2880
        function names.
2881
        * friend.c (is_friend): Don't compare types of decls to determine
2882
        friendship, unless flag_guiding_decls.
2883
        (make_friend_class): Partial specializations cannot be friends.
2884
        (do_friend): Use set_mangled_name_for_decl.  Call
2885
        push_template_decl_real instead of push_template_decl.
2886
        * method.c (build_decl_overload_real): Remove prototype.  Give it
2887
        external linkage.
2888
        (build_overload_identifier): Adjust call to innermost_args.
2889
        (build_template_decl_overload): Remove.
2890
        (set_mangled_name_for_decl): New function.
2891
        * parse.y (.finish_template_type): New non-terminal.
2892
        (template_def): Use finish_template_decl.  Use template_extdef
2893
        instead of extdef.
2894
        (template_extdef, template_datadef): New non-terminals, containing
2895
        only those rules for things which can be templates.
2896
        (datadef): Tidy.
2897
        (template_type, self_template_type): Use .finish_template_type.
2898
        (named_class_head): Use maybe_process_partial_specialization.
2899
        * pt.c (mangle_class_name_for_template): Remove context parameter.
2900
        (get_class_bindings): Remove outer_args parameter.
2901
        (complete_template_args): Remove.
2902
        (add_outermost_template_args): New function.
2903
        (register_specialization): Return the specialization.
2904
        (unregister_specialization): New function.
2905
        (tsubst_template_parms): Likewise.
2906
        (most_specialized, most_specialized_class): Prototype here as
2907
        static.
2908
        (original_template): Rename to most_general_template.
2909
        (tsubst_template_parms): New function.
2910
        (set_mangled_name_for_template_decl): Likewise.
2911
        (TMPL_ARGS_DEPTH): New macro.
2912
        (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
2913
        (TMPL_ARGS_LEVEL): New macro.
2914
        (SET_TMPL_ARGS_LEVEL): Likewise.
2915
        (TMPL_ARG): Likewise.
2916
        (SET_TMPL_ARG): Likewise.
2917
        (TMPL_ARGS_DEPTH): Likewise.
2918
        (finish_member_template_decl): Use finish_template_decl.
2919
        (maybe_process_partial_specialization): New function, split out
2920
        from tsubst.
2921
        (inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
2922
        (maybe_begin_member_template_processing): Use new macros.
2923
        (is_member_template): Likewise.
2924
        (is_member_template_class): Likewise.
2925
        (add_to_template_args): Likewise.  Deal with multiple levels of
2926
        args.
2927
        (maybe_process_partial_specialization): New function.
2928
        (retrieve_specialization): Add consistency check.
2929
        (determine_specialization): Return full argument list.
2930
        (check_explicit_specialization): Tweak friend handling.  Use full
2931
        argument lists.  Simplify.
2932
        (current_template_args): Use new macros.
2933
        (push_template_decl_real): Change ill-named mainargs to specargs.
2934
        Check that a partial specialization actually specializes at least
2935
        one parameter.   Improve friend handling.  Modify for full
2936
        template arguments.
2937
        (classtype_mangled_name): Don't mangle the names of
2938
        specializations.
2939
        (lookup_template_class): Add entering_scope parameter.  Use it to
2940
        avoid finding a template type when an instantiation is required.
2941
        Simplify.  Use full template arguments.
2942
        (tsubst_friend_function): Use unregister_specialization.  Use new
2943
        macros.  Use full template arguments.
2944
        (tsubst_friend_class): Substitute, using tsubst_template_parms,
2945
        into the template parameters before passing them to
2946
        redeclare_class_template.
2947
        (instantiate_class_template): Simplify.  Use full template
2948
        arguments.  Adjust calls to get_class_bindings.  Use
2949
        SET_IDENTIFIER_TYPE_VALUE where needed.  Improve friend handling.
2950
        (innermost_args): Use new macros.
2951
        (tsubst_aggr_type): New function, split out from tsubst.
2952
        (tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
2953
        conventions for lookup_template_class.  Refine handling of partial
2954
        instantiations.   Remove calls to complete_template_args.
2955
        Simplify.  Add consistency checks.  Use set_mangled_name_for_decl
2956
        and set_mangled_name_for_template_decl.
2957
        (tsubst_copy): Use tsubst_aggr_type.
2958
        (instantiate_template): Use full template arguments.
2959
        (more_specialized): Improve formatting.
2960
        (more_specialized_class): Adjust calls to get_class_bindings.
2961
        (get_bindings_real): Don't call complete_template_args.
2962
        (most_specialized): Don't overwrite input; create a new list.
2963
        (most_specialized_class): Use most_general_template.
2964
        (regenerate_decl_from_template): Use unregister_specialization.
2965
        Use full template arguments.
2966
        (instantiate_decl): Use full template arguments.
2967
        (set_mangled_name_for_template_decl): New function.
2968
        * semantics.c (begin_class_definition): Use
2969
        maybe_process_partial_specialization.
2970
        (finish_member_class_template): New function.
2971
        (finish_template_decl): Likewise.
2972
        (finish_template_type): Likewise.
2973
        (typeck.c): Don't crash after issuing a compiler_error.
2974
        * Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.
2975
 
2976
1998-07-27  Jason Merrill  
2977
 
2978
        * typeck2.c (build_functional_cast): Handle default-initialization.
2979
 
2980
        * call.c (build_over_call): Pass 1 to popclass.
2981
 
2982
        * parse.y (direct_notype_declarator): Add precedence declaration
2983
        to notype_unqualified_id case.
2984
        * Makefile.in (EXPECT): Adjust.
2985
 
2986
        * tree.c (ovl_member): Fix for single function in OVL.
2987
 
2988
1998-07-27  Dave Brolley  
2989
 
2990
        * c-lex.c (yylex): Fix boundary conditions in character literal and
2991
        string literal loops.
2992
 
2993
1998-07-24  Jason Merrill  
2994
 
2995
        * decl.c (lookup_name_real): OK, do return the from_obj value
2996
        unless got_object depends on template parms.
2997
 
2998
        * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
2999
 
3000
        * pt.c (coerce_template_parms): Also complain about local enums.
3001
 
3002
        * cp-tree.h: Add prototype for set_identifier_local_value.
3003
        * decl.c (set_identifier_local_value_with_scope): Make static,
3004
        prototype.
3005
        * search.c (covariant_return_p): Likewise.
3006
        * except.c (build_terminate_handler, alloc_eh_object): Likewise.
3007
 
3008
        * call.c (build_method_call): Only pull out the type of a destructor
3009
        if it's a template type parm.
3010
        * decl.c (lookup_name_real): Never return the from_obj value.
3011
 
3012
1998-07-23  Jason Merrill  
3013
 
3014
        * except.c (process_start_catch_block_old): Call start_decl_1 for
3015
        catch parm.
3016
        * decl.c (start_decl_1): Avoid duplicate error.
3017
 
3018
        * init.c (expand_default_init): Only perform the initialization if
3019
        it will do something.
3020
 
3021
1998-07-23  H.J. Lu  (hjl@gnu.org)
3022
 
3023
        * parse.y (base_class): Check for invalid base class.
3024
 
3025
1998-07-23  Jason Merrill  
3026
 
3027
        * decl2.c (import_export_template): Fold in...
3028
        (import_export_class): ...to here.  Handle dllimport/export.
3029
 
3030
        * class.c (build_vtable): Pass at_eof to import_export_vtable.
3031
        (prepare_fresh_vtable): Likewise.
3032
        * decl2.c (import_export_class): Split out...
3033
        (finish_prevtable_vardecl): From here.
3034
        * class.c (finish_struct_1): Call import_export_class if at_eof.
3035
 
3036
        * decl.c (start_function): #if 0 mysterious code I wrote and have
3037
        forgotten why.
3038
        * rtti.c (get_tinfo_fn): If this is for a class type, set
3039
        DECL_CONTEXT.
3040
 
3041
1998-07-22  Jason Merrill  
3042
 
3043
        * inc/exception: Change terminate and unexpected to ().
3044
 
3045
        * parse.y (named_class_head_sans_basetype_defn): A
3046
        named_class_head_sans_basetype followed by '{' or ':' is a defn.
3047
 
3048
1998-07-21  Jason Merrill  
3049
 
3050
        * tree.c (canonical_type_variant): New fn to handle arrays.
3051
        * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
3052
        * pt.c (unify, default case): Also fold arg.  Fix array bounds case.
3053
        * method.c (process_overload_item): Use build_overload_value for
3054
        arrays.
3055
 
3056
1998-07-20  Dave Brolley  
3057
 
3058
        * lex.c (mbchar.h): #include it.
3059
        (GET_ENVIRONMENT): New macro.
3060
        (init_parse): Set character set based on LANG environment variable.
3061
        (real_yylex): Handle multibyte characters in character literals.
3062
        (real_yylex): Handle multibyte characters in string literals.
3063
 
3064
1998-07-19  Jason Merrill  
3065
 
3066
        * lex.c (do_identifier): Look for class value even if we don't
3067
        have a global value.  Do implicit declaration if parsing is 2.
3068
        * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
3069
        lookup.
3070
 
3071
1998-07-19  Mark Mitchell  
3072
 
3073
        * decl.c (pushtag): Revert previous change.
3074
        * pt.c (lookup_template_class): Don't put out debugging
3075
        information for types that use template parameters.
3076
 
3077
        * decl.c (pushtag): Don't put out debugging information for
3078
        compiler-generated typedefs.
3079
 
3080
        * error.c (dump_type_real): Don't crash when presented with
3081
        intQI_type_node or the like.
3082
 
3083
        * semantics.c (finish_translation_unit): Fix spelling error in
3084
        comment.
3085
 
3086
1998-07-17  Jason Merrill  
3087
 
3088
        * decl.c (lookup_name_real): Pull out single function here.
3089
        (select_decl): Not here.
3090
        (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
3091
 
3092
        * decl.c (qualify_lookup): Tweak again.
3093
 
3094
        * pt.c (lookup_template_class): Don't mess with the context of the
3095
        instantiation.
3096
        * decl2.c (current_decl_namespace): Remove special handling for
3097
        templates.
3098
 
3099
        * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
3100
        a member template specialization.
3101
 
3102
        * tree.c (ovl_member): Use decls_match to compare functions.
3103
        * decl.c (decls_match): Check the context of a function.
3104
 
3105
        * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
3106
        in Koenig lookup support rules.
3107
        * semantics.c (finish_call_expr): Handle the new cases.
3108
 
3109
        * typeck.c (build_x_function_call): Handle overloaded methods.
3110
 
3111
        * decl.c (grokvardecl): Don't call build_static_name for extern "C".
3112
 
3113
1998-07-16  Mark Mitchell  
3114
 
3115
        * semantics.c (finish_object_call_expr): Revert previous change.
3116
        * call.c (build_new_method_call): Likewise.  Instead, convert
3117
        TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
3118
 
3119
1998-07-16  Jason Merrill  
3120
 
3121
        * decl.c (qualify_lookup): Handle templates.
3122
 
3123
        * decl2.c (do_using_directive): Don't pass ancestor.
3124
        * decl.c (push_using_directive): Calculate ancestor.
3125
 
3126
        * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
3127
        * decl.c (pushdecl): Move type shadowing handling from here...
3128
        (duplicate_decls): ...to here.
3129
        * decl.c (set_identifier_local_value_with_scope): New fn.
3130
        (pushdecl): Use it.
3131
        (set_identifier_local_value, lookup_type_current_level): New fns.
3132
        * decl2.c (do_local_using_decl): Handle types and binding level
3133
        stuff properly.
3134
 
3135
        * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
3136
        * decl.c (select_decl): Extract a lone function from an OVERLOAD.
3137
        (lookup_namespace_name): Likewise.
3138
        * typeck.c (build_unary_op): Not here anymore.
3139
 
3140
        * decl2.c (do_class_using_decl): Make sure we get an identifier.
3141
        * class.c (handle_using_decl): Ignore TYPE_DECLs.
3142
 
3143
        * decl.c (qualify_lookup): New fn.
3144
        (lookup_name_real): Use it.
3145
 
3146
1998-07-16  Martin v. Löwis  
3147
 
3148
        * decl2.c (add_using_namespace): When directly using a namespace
3149
        that was indirect before, promote it.
3150
 
3151
        * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
3152
        LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
3153
        LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
3154
        * decl.c (select_decl): Replace two flag parameters by one.
3155
        (unqualified_namespace_lookup): Likewise, pass flag.
3156
        (lookup_flags): New function.
3157
        (lookup_name_real): Compute flags, pass them.
3158
        (lookup_namespace_name): Call with zero-flag.
3159
        * decl2.c (ambiguous_decl): Add flag parameter, complain only
3160
        according to flags.
3161
        (lookup_using_namespace, qualified_lookup_using_namespace):
3162
        Add flag parameter, pass them through.
3163
        * lex.c (do_scoped_id): Call with zero-flag.
3164
 
3165
1998-07-16  Jason Merrill  
3166
 
3167
        * typeck.c (convert_for_assignment): Use comptypes.
3168
 
3169
1998-07-16  Mark Mitchell  
3170
 
3171
        * semantics.c (finish_object_call_expr): Move test for the
3172
        function called being a TYPE_DECL to ...
3173
        * call.c (build_new_method_call): Here.
3174
 
3175
1998-07-15  Jason Merrill  
3176
 
3177
        * decl2.c (arg_assoc_class): Also look at template arguments, if any.
3178
        (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
3179
 
3180
        * lex.c (looking_for_typename): Don't initialize.
3181
 
3182
        * decl2.c (ambiguous_decl): Clarify error message.
3183
 
3184
        * decl.c (push_using_directive): Iterate over namespaces used
3185
        indirectly.
3186
 
3187
1998-07-15  Martin v. Löwis  
3188
 
3189
        * decl2.c (add_using_namespace): Iterate over namespaces used
3190
        indirectly.
3191
 
3192
        * decl.c (lookup_name_real): Accept namespace aliases as locals.
3193
        (cat_namespace_levels): Ignore aliases.
3194
        (duplicate_decls): Ignore duplicate aliases.
3195
        * decl2.c (do_namespace_alias): Process block level namespace
3196
        aliases.  Store alias with pushdecl.  Remove odr errors.
3197
        * parse.y (namespace_alias): New non-terminal.
3198
        (extdef): Use it.
3199
 
3200
1998-07-15  Jason Merrill  
3201
 
3202
        * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
3203
        Handle TEMPLATE_TYPE_PARM.
3204
        (arg_assoc): Rewrite.
3205
 
3206
        * pt.c (complete_template_args): Don't look at the context unless
3207
        we have to.
3208
 
3209
        * method.c (build_decl_overload_real): Fix namespace handling.
3210
 
3211
        * typeck.c (build_unary_op): Extract a lone function from an
3212
        OVERLOAD.
3213
 
3214
        * call.c (build_scoped_method_call): Handle getting a namespace
3215
        for basetype in a destructor call.
3216
        (check_dtor_name): Handle enums.
3217
 
3218
        * parse.y (using_directive): New nonterminal.
3219
        (extdef, simple_stmt): Use it.
3220
 
3221
1998-07-14  Martin von Löwis  
3222
 
3223
        * decl2.c (add_function): Move error message ...
3224
        (arg_assoc_namespace): ... from here.
3225
 
3226
1998-07-14  Jason Merrill  
3227
 
3228
        * parse.y (namespace_qualifier): Fix multiple level handling.
3229
        * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
3230
        (arg_assoc): Don't skip the first argument of a function.
3231
 
3232
Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)
3233
 
3234
        * search.c (my_tree_cons): Clean up.
3235
 
3236
1998-07-14  Jason Merrill  
3237
 
3238
        * call.c (joust): Don't warn about "confusing" conversions to the
3239
        same type.
3240
 
3241
1998-07-14  Martin von Löwis  
3242
 
3243
        * class.c (push_nested_class): Complain about namespaces.
3244
        * decl.c (start_decl): Enter the object's namespace.
3245
        (cp_finish_decl): Leave it.
3246
        (grokdeclarator): Likewise.
3247
        * decl2.c (check_decl_namespace): New function.
3248
        (finish_file): Call it.
3249
        * parse.y (complex_direct_notype_declarator): Set complexity
3250
        of namespace-qualified ids to -1, enter the namespace.
3251
 
3252
        * method.c (build_template_decl_overload): Expect _DECL as first
3253
        parameter.  Put context temporarily into current_namespace.
3254
        * pt.c (check_explicit_specialization): Change caller.
3255
        (tsubst): Likewise.
3256
 
3257
        * init.c (build_offset_ref): Call mark_used and
3258
        convert_from_reference for namespace members.
3259
 
3260
Mon Jul 13 23:25:28 1998  Martin von Löwis  
3261
 
3262
        * search.c (my_tree_cons): The bitfield is at index 2.
3263
 
3264
Mon Jul 13 17:21:01 1998  Nick Clifton  
3265
 
3266
        * lang-options.h: Format changed to work with new --help support
3267
        in gcc/toplev.c
3268
 
3269
1998-07-12  Martin von Löwis  
3270
 
3271
        * decl2.c (build_expr_from_tree): Change calls of do_identifier.
3272
        Do Koenig lookup in CALL_EXPR.
3273
        (arg_assoc): Handle error_mark.
3274
        * lex.c (is_global): New function.
3275
        (do_identifier): Expect arguments for Koenig lookup.
3276
        * parse.y (primary): Add rules for calls of unqualified function calls.
3277
        (do_id): Change call of do_identifier.
3278
        * pt.c (finish_stmt_expr): Likewise.
3279
        * semantics.c (finish_id_expr): Likewise.
3280
        (finish_call_expr): Add integer parameter to indicate
3281
        argument-dependent lookup.
3282
 
3283
        * decl.c (struct binding_level): New field using_directives.
3284
        (push_using_decl): Not sorry anymore.
3285
        (push_using_directive): New function.
3286
        (lookup_tag): Use CP_DECL_CONTEXT to iterate.
3287
        (unqualified_namespace_lookup): New function, code from ...
3288
        (lookup_name_real): ... here.
3289
        * decl2.c (lookup_using_namespace): Pass using list instead of
3290
        initial scope.
3291
        (validate_nonmember_using_decl): New function.
3292
        (do_nonmember_using_decl): New function.
3293
        (do_toplevel_using_decl): Use them.
3294
        (do_local_using_decl): New function.
3295
        (do_using_directive): Support block-level directives.
3296
        * parse.y (simple_stmt): Support using declarations and
3297
        directives.
3298
        (namespace_qualifier, namespace_using_decl): New non-terminals.
3299
 
3300
        * xref.c (classname): New function.
3301
        (GNU_xref_hier): Change class and base parameters to tree.
3302
        * decl.c (xref_baseypes): Change caller.
3303
        * friend.c (make_friend_class): Likewise.
3304
 
3305
1998-07-12  Kriang Lerdsuwanakij  
3306
 
3307
        * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter
3308
        comparison.
3309
 
3310
        * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a
3311
        template template parameter, record its use.
3312
        (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse
3313
        its template arguments if exists.
3314
 
3315
        * pt.c (coerce_template_template_parms): New function equivalent
3316
        to coerce_template_parms when IS_TMPL_PARM is true.
3317
        (coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
3318
        all callers changed.
3319
 
3320
        (coerce_template_parms): Access ARGLIST properly when creating a
3321
        new vector.  Only accept implicit TYPE_DECL as valid argument for
3322
        a template template parameter when it is a base class of
3323
        current_class_type.  Don't display error message when COMPLAIN is
3324
        false.
3325
 
3326
1998-07-12  Klaus Kaempf  (kkaempf@progis.de)
3327
 
3328
        * repo.c (get_base_filename): Use file_name_nondirectory.
3329
        (open_repo_file): Likewise.
3330
        * cp-tree.h (file_name_nondirectory): Add prototype.
3331
 
3332
1998-07-12  Jason Merrill  
3333
 
3334
        * friend.c (do_friend): Pull the identifier out of declarator.
3335
        Use cp_error and friends.
3336
        * decl2.c (qualified_lookup_using_namespace): Fix call to
3337
        purpose_member.
3338
        * decl.c (lookup_name_real): Don't call complete_type on a namespace.
3339
        (grokvardecl): Use DECL_CLASS_SCOPE_P.
3340
        * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
3341
        * class.c (warn_hidden): Fix for OVERLOAD.
3342
        From grahams@rcp.co.uk:
3343
        * cp-tree.h (DEFARG_NODE_CHECK): New macro.
3344
        (DEFARG_LENGTH, DEFARG_POINTER): Use it.
3345
 
3346
Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)
3347
 
3348
        * g++.1 (-traditional): Remove duplicated documentation.
3349
 
3350
1998-07-11  Mark Mitchell  
3351
 
3352
        * method.c (flush_repeats): Add nrepeats parameter.
3353
        (issue_nrepeats): Likewise.
3354
        (is_back_referenceable_type): New function.  Don't back-reference
3355
        TEMPLATE_TYPE_PARMs as well as simple types like integers.
3356
        (build_mangled_name_for_type): Likewise.
3357
        (build_mangled_name_for_type_with_Gcode): Likewise.
3358
        (lasttype): Remove.
3359
        (nrepeats): Likewise.
3360
        (Nrepeats): Likewise.
3361
        (start_squangling): Don't clear the variables removed above.
3362
        (end_squangling): Likewise.
3363
        (flush_repeats): Tidy.  Use nrepeats parameter rather than
3364
        Nrepeats global.
3365
        (issue_nrepeats): Likewise, but with nrepeats global.  Use
3366
        is_backreferenceable_type.
3367
        (build_overload_nested_name): Tidy.  Add comment.  Use
3368
        build_mangled_name_for_type.
3369
        (build_underscore_int): Comment.
3370
        (build_overload_scope_ref): Use build_mangled_name_for_type.
3371
        (build_overload_int): Likewise.
3372
        (build_template_template_parm_names): Tidy.
3373
        (build_template_parm_names): Use build_mangled_name_for_type.
3374
        (build_overload_identifier): Add comments.
3375
        (build_mangled_name_for_type_with_Gcode): Split out from
3376
        build_mangled_name.
3377
        (build_mangled_name_for_type): Use it.
3378
        (build_mangled_name): Rework to use build_mangled_name_for_type
3379
        and to not use global nrepeats/Nrepeats.  Tidy.
3380
        (process_modifiers): Tidy.
3381
        (check_btype): Use is_backreferenceable_type.  Add comment.
3382
        Rename `node' to `type'.
3383
        (process_overload_item): Set numeric_output_need_bar here.
3384
        Use build_mangled_name_for_type.  Tidy.
3385
        (build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
3386
        build_mangled_name_for_type.
3387
 
3388
        * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
3389
        for TYPE_DECLs.
3390
 
3391
1998-07-08  Vladimir N. Makarov  
3392
 
3393
        * cp-tree.h (warn_long_long): Define.
3394
        * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
3395
        warning "ANSI C++ does not support `long long'".
3396
        * decl2.c (warn_long_long): Define.
3397
        (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
3398
 
3399
1998-07-07  Jason Merrill  
3400
 
3401
        * decl.c (xref_tag): Handle attributes between 'class' and name.
3402
        * parse.y (aggr): Likewise.
3403
        * semantics.c (finish_class_definition): Likewise.
3404
        * Makefile.in (EXPECTED): Adjust.
3405
 
3406
        * cp-tree.h: Declare flag_optional_diags and warn_multichar.
3407
        * decl2.c: Define them.
3408
        (lang_decode_option): Handle them.
3409
        * lang-options.h: Add -foptional-diags.
3410
        * class.c (finish_struct): Don't complain about multiple meanings of
3411
        name if -fno-optional-diags.
3412
        * decl.c (pushdecl_class_level): Likewise.
3413
        * lex.c (real_yylex): Check warn_multichar.
3414
 
3415
1998-07-06  Jason Merrill  
3416
 
3417
        * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
3418
 
3419
        * tree.c (make_binfo): Fix length.
3420
 
3421
1998-06-30  Benjamin Kosnik  
3422
 
3423
        * decl2.c (lang_decode_option): Remove warn_template_debugging.
3424
        * lang-options.h: Likewise.
3425
 
3426
Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  
3427
 
3428
        * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
3429
        (process_start_catch_block): Likewise for variables
3430
        `false_label_rtx', `call_rtx' and `return_value_rtx'.
3431
 
3432
1998-06-29  Brendan Kehoe  
3433
 
3434
        * tree.c (build_srcloc): Make sure we allocate this node on the
3435
        permanent obstack.
3436
 
3437
Sat Jun 27 23:34:18 1998  Fred Fish  
3438
 
3439
        * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
3440
        (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
3441
        (lang_specific_driver): Only add -lm automatically if need_math is
3442
        nonzero.
3443
 
3444
Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)
3445
 
3446
        * Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o
3447
 
3448
Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  
3449
 
3450
        * Makefile.in (EXPR_H): New dependency variable.
3451
        (decl2.o): Depend on $(EXPR_H).
3452
        (typeck.o): Likewise.
3453
        (init.o): Likewise.
3454
        (expr.o): Likewise.
3455
 
3456
1998-06-25  Benjamin Kosnik  
3457
 
3458
        * decl.c (start_enum): Put local enums on permanent_obstack.
3459
 
3460
1998-06-25  Mark Mitchell  
3461
 
3462
        * cp-tree.h (c_get_alias_set): Declare.
3463
        * decl.c (init_decl_processing): Set lang_get_alias_set.
3464
 
3465
1998-06-25  Andrew MacLeod  
3466
 
3467
        * cp-tree.h (mark_all_runtime_matches): Add function prototype.
3468
        * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
3469
        flag for all function decls which are in the exception table.
3470
        * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
3471
        * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
3472
        code is emitted for any referenced rtti function.
3473
 
3474
1998-06-25  Dave Brolley  
3475
 
3476
        * lang-specs.h: Use new | syntax to eliminate
3477
        string concatenation.
3478
 
3479
1998-06-25  Jason Merrill  
3480
 
3481
        * cp-tree.h (CP_DECL_CONTEXT): New macro.
3482
        * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
3483
        * method.c (build_overload_nested_name): Likewise.
3484
        * sig.c (build_signature_pointer_or_reference_type): Don't set
3485
        DECL_CONTEXT.
3486
 
3487
1998-06-24  Martin v. Löwis  
3488
 
3489
        Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
3490
        * cp-tree.h (FROB_CONTEXT): New macro.
3491
        (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
3492
        * decl.c (namespace_binding): Replace NULL_TREE with
3493
        global_namespace.
3494
        (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
3495
        * decl2.c (is_namespace_ancestor, lookup_using_namespace):
3496
        Likewise.
3497
        * decl.c (pushtag): Use FROB_CONTEXT.
3498
        (pushdecl, make_typename_type, define_function, grokdeclarator):
3499
        Likewise.
3500
        * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
3501
        * pt.c (push_template_decl_real, lookup_template_class, tsubst):
3502
        Likewise.
3503
        * decl2.c (decl_namespace): Return global_namespace if no context.
3504
        * method.c (build_overload_nested_name): Expect null as context.
3505
        * pt.c (mangle_class_name_for_template): Do nothing for null
3506
        contexts.
3507
        (lookup_template_class): Allow for null id_context.
3508
 
3509
1998-06-25  Richard Henderson  
3510
 
3511
        * method.c (emit_thunk): Set current_function_is_thunk for the
3512
        ASM_OUTPUT_MI_THUNK case as well.
3513
 
3514
1998-06-23  Andrew MacLeod  
3515
 
3516
        * exception.cc (__cplus_type_matcher): Get a match_info pointer
3517
        instead of an exception table entry as a parameter.
3518
 
3519
1998-06-23  Andrew MacLeod  
3520
 
3521
        * parse.y (function_try_block): Don't call start_catch_handler.
3522
        * except.c (call_eh_info): Remove coerced field from declaration.
3523
        (build_eh_type_type_ref): New function to create an address of a
3524
        rtti function for the new style exception tables.
3525
        (expand_start_catch_block): Split function, this contains the
3526
        common part.
3527
        (process_start_catch_block_old): New function to perform the rest
3528
        of expand_start_catch_block under old style exceptions.
3529
        (process_start_catch_block_old): New function to perform the rest
3530
        of expand_start_catch_block under new style exceptions.
3531
        (expand_end_catch_block): Only pop the false label off the stack under
3532
        the old style of exceptions.
3533
        * semantics.c (finish_try_block): Don't call start_catch_handler.
3534
        * exception.cc (struct cp_eh_info): Add original_value field.
3535
        (__cplus_type_matcher): Perform type matching on the original exception
3536
        value, and if we have a match, set the current value.
3537
        (__cp_push_exception): Set the original exception value.
3538
 
3539
1998-06-23  Jason Merrill  
3540
 
3541
        * call.c (joust): Fix confusing conversion warning.
3542
 
3543
        * call.c (build_op_delete_call): Add placement parm.  Check
3544
        LOOKUP_SPECULATIVELY.
3545
        * cp-tree.h, decl2.c, init.c: Adjust.
3546
        * decl.c (finish_function): Use it.
3547
 
3548
        * pt.c (tsubst): Diagnose creating void fields or variables.
3549
 
3550
Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  
3551
 
3552
        * call.c (build_scoped_method_call): Remove unused variable `tmp'.
3553
 
3554
        * cp-tree.h (check_dtor_name): Add prototype.
3555
 
3556
        * init.c (expand_member_init): Remove unused variables
3557
        `ptr_type_node', `parm' and `rval'.
3558
 
3559
        * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
3560
        in call to fprintf.
3561
        (lang_print_xnode): Likewise.
3562
 
3563
        * typeck2.c (enum_name_string): Cast argument to sprintf to long
3564
        and use %ld specifier.
3565
 
3566
        * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
3567
        specifier in call to fprintf.
3568
        (GNU_xref_member): Cast argument to sprintf to int.
3569
 
3570
Fri Jun 19 23:22:42 1998  Bruno Haible  
3571
 
3572
        * typeck2.c (pop_init_level): Warn about implicit zero initialization
3573
        of struct members.
3574
 
3575
Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  
3576
 
3577
        * cp-tree.h: Prototype function `check_java_method'.
3578
 
3579
1998-06-17  Jason Merrill  
3580
 
3581
        * class.c (finish_struct): Make conflicting use of id a pedwarn.
3582
        * decl.c (pushdecl_class_level): Likewise.
3583
 
3584
1998-06-17  Mark Mitchell  
3585
 
3586
        * pt.c (convert_nontype_argument): Issue an error when presented
3587
        with an integer (real) constant that cannot be simplified to an
3588
        INT_CST (REAL_CST).
3589
 
3590
        * cp-tree.h (c_get_alias_set): Remove declaration added in
3591
        1998-06-13 change that should never have been checked in.
3592
 
3593
1998-06-17  Jason Merrill  
3594
 
3595
        * typeck.c (build_binary_op_nodefault): Change % in format strings
3596
        to %%.
3597
 
3598
        * decl.c (grokvardecl): Don't build_static_name for decls that
3599
        aren't at namespace scope.
3600
 
3601
        * init.c (perform_member_init): Catch default-initialization of
3602
        references.
3603
 
3604
1998-06-17  Mark Mitchell  
3605
 
3606
        * errfn.c (cp_thing): Handle the `%%' formatting sequence.
3607
 
3608
1998-06-17  Jason Merrill  
3609
 
3610
        * method.c (hack_identifier): Complain about getting a namespace
3611
        or class template.
3612
        * typeck.c (decay_conversion): Remove check for namespaces.
3613
        * typeck2.c (incomplete_type_error): Likewise.
3614
        * parse.y (template_arg): Add PTYPENAME expansion.
3615
 
3616
1998-06-16  Andrew MacLeod  
3617
 
3618
        * decl.c (grokvardecl): Don't build external assembler names for
3619
        TYPENAMEs in other namespaces as there is no declarator.
3620
        * error.c (cp_file_of, cp_line_of): Don't extract file or line number
3621
        info from DECL_CONTEXT if it is NULL.
3622
 
3623
1998-06-16  Jason Merrill  
3624
 
3625
        * call.c (check_dtor_name): Split out.
3626
        (build_scoped_method_call): Use it.
3627
        (build_method_call): Use it.
3628
        * init.c (build_offset_ref): Use it.
3629
 
3630
        * typeck.c (build_static_cast): Fix handling of pointers to members.
3631
 
3632
        * decl.c (finish_function): Just return nothing from a constructor.
3633
        * typeck.c (c_expand_return): Complain about returning a void
3634
        expression from a destructor.
3635
 
3636
1998-06-13  Mark Mitchell  
3637
 
3638
        * class.c (alter_access): Accept a BINFO explaining how to get
3639
        from the entity whose accessed is being altered to the type doing
3640
        the altering.
3641
        (handle_using_decl): New function containing code split out from ...
3642
        (finish_struct_1): Here.
3643
 
3644
        * cp-tree.h (complete_type_or_else): Declare.
3645
        * init.c (build_new_1, build_delete): Use it.
3646
        * typeck.c (require_complete_type): Use complete_type, rather than
3647
        expanding it inline.
3648
        (complete_type_or_else): New function.
3649
        (build_component_ref): Use it.
3650
        (pointer_int_sum): Make sure the type pointed to is complete.
3651
        (pointer_diff): Likewise.
3652
 
3653
        * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
3654
        types.
3655
 
3656
        * search.c (get_matching_virtual): Note that member templates
3657
        cannot override virtual functions.
3658
 
3659
1998-06-12  Brendan Kehoe  
3660
 
3661
        * pt.c (check_explicit_specialization): If DECLARATOR turned into
3662
        an error_mark_node from lookup_template_function, return the same.
3663
        (determine_specialization): Also make sure TEMPLATE_ID isn't an
3664
        error_mark_node, before we try to read its operands.
3665
        * decl.c (grokdeclarator): If we got an error_mark_node from
3666
        check_explicit_specialization, just return it right back.
3667
 
3668
1998-06-12  Mark Mitchell  
3669
 
3670
        * class.c (instantiate_type): Don't treat template-ids that don't
3671
        specify any template arguments as equivalent to ordinary
3672
        identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
3673
        pointer-to-members for member templates.  Tidy slightly.
3674
        * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
3675
        * init.c (build_offset_ref): Handle template-ids like ordinary
3676
        identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
3677
        offset part of the OFFSET_REF.
3678
        * typeck.c (build_unary_op): Change check for unknown types to
3679
        look for OFFSET_REFs, not SCOPE_REFs.
3680
 
3681
1998-06-11  Mark Mitchell  
3682
 
3683
        * pt.c (is_member_template_class): New function.
3684
        (push_template_decl_real): Use it.
3685
 
3686
1998-06-11  Benjamin Kosnik  
3687
 
3688
        * friend.c (do_friend): Add support for nested classes using
3689
        member functions of the enclosing class as friends.
3690
 
3691
1998-06-10  Mark Mitchell  
3692
 
3693
        * call.c (convert_default_arg): Make global, not static.
3694
        (convert_arg_for_ellipsis): Split out from ...
3695
        (build_over_call): Here.
3696
        * cp-tree.h (convert_default_arg); Declare.
3697
        (convert_arg_to_ellipsis): Likewise.
3698
        (do_member_init): Remove.
3699
        * init.c (do_member_init): Remove; this code is dead.
3700
        (expand_member_init): Remove much of this code; it is dead.
3701
        * typeck.c (convert_arguments): Use convert_default_arg and
3702
        convert_arg_for_ellipsis, rather than duplicating here.
3703
 
3704
        * call.c (convert_like): Don't fail silently if
3705
        build_user_type_conversion fails.  Always return error_mark_node
3706
        for failure.
3707
 
3708
1998-06-10  Jason Merrill  
3709
 
3710
        * search.c (covariant_return_p): Complain about ambiguous base.
3711
 
3712
        * typeck.c (build_component_ref): Diagnose ref to nested type.
3713
 
3714
1998-06-10  Brendan Kehoe  
3715
 
3716
        * decl.c (grokparms): Check that INIT isn't an error_mark_node
3717
        before giving error about invalid type for default arg.
3718
 
3719
1998-06-10  Jason Merrill  
3720
 
3721
        * call.c (build_method_call): Fix thinko.
3722
 
3723
1998-06-10  Dave Brolley  
3724
 
3725
        * decl2.c (lang_decode_option): New argc/argv interface.
3726
        * cp-tree.h (lang_decode_option): New argc/argv interface.
3727
        * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
3728
        specified for cpplib-enabled compilers.
3729
        * lex.c (lang_init): Don't check_newline for cpplib.
3730
        (init_parse): Don't initialize cpplib here.
3731
 
3732
1998-06-10  Brendan Kehoe  
3733
 
3734
        * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
3735
        piece before checking DECL_MUTABLE_P.
3736
 
3737
1998-06-10  John Carr  
3738
 
3739
        * tree.c (debug_binfo): Make printf format match arguments.
3740
 
3741
        * error.c (OB_PUTI): Make printf format match arguments.
3742
 
3743
1998-06-10  Jason Merrill  
3744
 
3745
        * init.c (perform_member_init): Handle default-initialization.
3746
 
3747
        * except.c (build_throw): Handle throwing NULL.
3748
 
3749
        * typeck.c (build_x_function_call): Use resolve_offset_ref.
3750
 
3751
        * search.c (compute_access): Only strip an anonymous union
3752
        for a FIELD_DECL.
3753
 
3754
        * call.c (add_builtin_candidates): Tweak.
3755
 
3756
        * cvt.c (build_expr_type_conversion): Restore code for conversion
3757
        from class types.
3758
        * decl2.c (delete_sanity): Use it.  Clean up.
3759
 
3760
        * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
3761
 
3762
1998-06-10  Branko Cibej  
3763
 
3764
        * typeck.c (c_expand_return): Don't warn about void expressions on
3765
        return statements in functions returning void.
3766
 
3767
1998-06-09  Mark Mitchell  
3768
 
3769
        * pt.c (fn_type_unification): Revise documentation.  Tidy.
3770
        (type_unification): Likewise.
3771
 
3772
1998-06-09  Andrew MacLeod  
3773
 
3774
        * semantics.c (finish_try_block): Rename expand_start_catch, and delete
3775
        expand_end_catch.
3776
        * parse.y (function_try_block): Rename expand_start_catch, and delete
3777
        expand_end_catch.
3778
        * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
3779
        expand_end_catch.
3780
 
3781
1998-06-09  Jason Merrill  
3782
 
3783
        * search.c (lookup_member): New fn.
3784
        * class.c (finish_struct_1): Use it.
3785
        * decl.c (lookup_name_real): Use it.
3786
 
3787
Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  
3788
 
3789
        * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
3790
 
3791
        * cp-tree.h: Add prototype for `maybe_print_template_context' and
3792
        `maybe_make_one_only'.
3793
 
3794
        * decl.c (auto_function): Remove unused variable `decl'.
3795
 
3796
        * decl2.c: Include dwarf2out.h and dwarfout.h.
3797
 
3798
        * lex.c: Remove redundant declarations of `set_float_handler' and
3799
        `asm_out_file'.
3800
 
3801
1998-06-08  Andrew MacLeod  
3802
 
3803
        * except.c (init_exception_processing): Remove NEW_EH_MODEL compile
3804
        time flag.  Call __cp_eh_info instead of __cp_exception_info.
3805
        * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
3806
        (__cp_exception_info): Return offset into cp_eh_info structure to
3807
        match what use to be the start of this structure.
3808
        (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
3809
        (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
3810
        compile time flag.
3811
        (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
3812
        __cp_eh_info instead of __cp_exception_info.
3813
 
3814
1998-06-08  Jason Merrill  
3815
 
3816
        * decl.c (cp_finish_decl): Disable inlining of extern inlines
3817
        with static variables.
3818
 
3819
1998-06-08  Mark Mitchell  
3820
 
3821
        * init.c (build_offset_ref): Correct previous change to use build,
3822
        not build_min.
3823
 
3824
1998-06-07  Mark Mitchell  
3825
 
3826
        * class.c (instantiate_type): Handle pointer-to-members where the
3827
        member is a template.
3828
        * init.c (build_offset_ref): Likewise.
3829
        * typeck.c (build_unary_op): Likewise.
3830
 
3831
1998-06-07  Richard Henderson  
3832
 
3833
        * lex.c (lang_init_options): New function.
3834
        (lang_init): Remove flag_exceptions == 2 hack.
3835
 
3836
1998-06-05  Jason Merrill  
3837
 
3838
        * search.c (envelope_add_decl): Tweak for implicit typename.
3839
 
3840
        * call.c (joust): Also warn about confusing conversion op/constructor
3841
        overload resolution.
3842
 
3843
        * spew.c (yylex): Also return the TYPE_DECL if got_object.
3844
        Don't clear got_object after '~'.
3845
        * call.c (build_scoped_method_call): Tweak destructor handling.
3846
        (build_method_call): Likewise.
3847
        * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
3848
        TYPE_MAIN_VARIANT for destructors.
3849
        * semantics.c (finish_object_call_expr): Complain about calling a
3850
        TYPE_DECL.
3851
 
3852
1998-06-05  Per Bothner  
3853
 
3854
        * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
3855
        Define - update needed by gcc.c change.
3856
 
3857
1998-06-05  Jason Merrill  
3858
 
3859
        * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
3860
 
3861
1998-06-05  Martin v. Löwis  
3862
 
3863
        * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
3864
        * decl.c (lookup_name_real): Add namespaces_only parameter.
3865
        If set, return only NAMESPACE_DECLs.
3866
        (select_decl): Likewise.
3867
        (identifier_type_value): Give additional parameter.
3868
        (lookup_name_nonclass): Likewise.
3869
        (lookup_name): Likewise.
3870
        (find_binding): Skip namespace aliases.
3871
        (binding_for_name): Likewise.
3872
        (push_namespace): Check for namespace aliases.
3873
        (lookup_name_namespace_only): New function.
3874
        (begin_only_namespace_names, end_only_namespace_names): New functions.
3875
        * decl2.c (set_decl_namespace): Skip namespace aliases.
3876
        (do_using_directive): Likewise.
3877
        (do_namespace_alias): Produce namespace aliases, fix alias
3878
        redeclaration.
3879
        * error.c (dump_decl): Support SCOPE_REF.
3880
        * parse.y (extdef): Wrap lookup with namespace_only for namespace
3881
        aliases and using declarations.
3882
 
3883
1998-06-04  Jason Merrill  
3884
 
3885
        * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
3886
 
3887
        * error.c (dump_expr): Clean up NEW_EXPR case.
3888
 
3889
1998-06-04  Martin von Löwis  
3890
 
3891
        Suggested by Brendan Kehoe
3892
        * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
3893
        treat it as using ::decl.
3894
 
3895
        * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
3896
 
3897
        * tree.c (mapcar): Support NEW_EXPR.
3898
 
3899
        * error.c (dump_expr): Support NEW_EXPR.
3900
 
3901
1998-06-03  Jason Merrill  
3902
 
3903
        * method.c (make_thunk): Use overload machinery to make name.
3904
        * search.c (covariant_return_p): New fn.
3905
        (get_matching_virtual): Use it.
3906
 
3907
        * init.c (build_new_1): Fix check for void.
3908
 
3909
1998-06-01  Per Bothner  
3910
 
3911
        * cp-tree.h (TYPE_FOR_JAVA):  New macro.
3912
        * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
3913
        java_int_type_node, java_long_type_node, java_float_type_node,
3914
        java_double_type_node, java_char_type_node, java_boolean_type_node):
3915
        New "primitive" types, with predefined names __java_byte etc.
3916
        (record_builtin_java_type):  New function.
3917
        (init_decl_processing):  Make Java types with record_builtin_java_type.
3918
        (pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
3919
        (xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
3920
        (grokfndecl):  Call check_java_method for Java classes.
3921
        * method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
3922
        (process_overload_item):  Match types against specific
3923
        java_XX_type_node types, rather than using is_java_type.
3924
        * class.c (finish_struct_1):  Don't add default copy constructor
3925
        or operator= if TYPE_FOR_JAVA.
3926
        (pop_lang_conext):  Restore strict_prototyp proper if Java.
3927
        * decl2.c (acceptable_java_type, check_java_method):  New functions.
3928
        * pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
3929
        (tsubst):  Move common statement after if statement.
3930
        * typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.
3931
 
3932
1998-06-01  Jason Merrill  
3933
 
3934
        * pt.c (for_each_template_parm): Use first_rtl_op.
3935
 
3936
        * tree.c (build_cplus_array_type_1): Also check index_type for
3937
        template parms.
3938
 
3939
1998-05-31  Jason Merrill  
3940
 
3941
        * pt.c (tsubst): Always copy BINFO_BASETYPES.
3942
 
3943
1998-05-29  scott snyder  
3944
 
3945
        * tree.c (layout_basetypes): If we change TYPE_SIZE, change
3946
        TYPE_SIZE_UNIT too.
3947
 
3948
1998-05-29  Mark Mitchell  
3949
 
3950
        * decl.c (grokdeclarator): Don't complain about in-class
3951
        initialization of static consts if we don't really know the type
3952
        of the variable.
3953
 
3954
1998-05-29  Jason Merrill  
3955
 
3956
        * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
3957
        * method.c (build_destructor_name): New fn.
3958
        * decl2.c (maybe_retrofit_in_chrg): Split out...
3959
        (grokclassfn): From here.  Reorganize.
3960
        * decl.c (grok_ctor_properties): Make sure ctors for types with
3961
        vbases have the in_chrg parm.
3962
        * pt.c (instantiate_class_template): Update
3963
        TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
3964
        grok_*_properties.
3965
        (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
3966
 
3967
1998-05-28  Mark Mitchell  
3968
 
3969
        * pt.c (instantiate_decl): Make test for whether or not static
3970
        variables should be instantiated early match its comment.
3971
 
3972
1998-05-28  Jason Merrill  
3973
 
3974
        * decl.c (start_decl): Always pedwarn about vacuously redeclaring
3975
        a member.
3976
        (start_function): Call check_default_args.
3977
        * decl2.c (grokfield): Don't call check_default_args.
3978
        (check_default_args): Use cp_error_at.
3979
        * lex.c (do_pending_defargs): Call check_default_args.
3980
 
3981
1998-05-27  Brendan Kehoe  
3982
 
3983
        * call.c (build_method_call): Make sure get_type_value returns
3984
        something before we try to use its TYPE_MAIN_VARIANT.
3985
        (build_scoped_method_call): Likewise.
3986
 
3987
1998-05-27  Jason Merrill  
3988
 
3989
        * typeck2.c (digest_init): Complain about getting a TREE_LIST to
3990
        initialize an array.
3991
 
3992
        * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
3993
        DECL_VIRTUAL_P.
3994
 
3995
        * friend.c (do_friend): Clarify template warning.
3996
 
3997
1998-05-27  Mark Mitchell  
3998
 
3999
        * decl.c (shadow_label): Don't treat decls as identifiers.
4000
        (maybe_push_to_top_level): Clear shadowed_labels.
4001
 
4002
        * pt.c (instantiate_decl): Reset lineno and filename after calling
4003
        regenerate_decl_from_template.
4004
 
4005
        * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
4006
        error_mark_node.
4007
 
4008
1998-05-27  Kevin Buhr  
4009
 
4010
        * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
4011
 
4012
1998-05-26  Kriang Lerdsuwanakij  
4013
 
4014
        * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
4015
        (convert_nontype_argument): Handle cases when nontype template
4016
        parameters become classes after substitution.
4017
 
4018
1998-05-26  Mark Mitchell  
4019
 
4020
        * friend.c (is_friend): Use comptypes, rather than == to compare
4021
        types.  Modify for new representation of template friends.
4022
        (make_friend_class): Likewise.
4023
        * pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
4024
        (instantiate_class_template): Deal with template friends.
4025
 
4026
        * decl.c (store_parm_decls): Remove redundant call to
4027
        expand_main_function.
4028
 
4029
1998-05-26  Benjamin Kosnik  
4030
 
4031
        * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
4032
        DECL_USE_TEMPLATE.
4033
 
4034
1998-05-26  Per Bothner  
4035
 
4036
        * language_as_string:  Handle lang_java.
4037
 
4038
1998-05-26  Jason Merrill  
4039
 
4040
        * decl.c (pushdecl): Don't copy the type_decl.
4041
 
4042
1998-05-26  Martin v. Löwis  
4043
 
4044
        * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
4045
        current_class_type.
4046
        * decl.c (grokdeclarator): Put typedefs on the type's obstack.
4047
 
4048
        * parse.y (complex_direct_notype_declarator): Use $1 to access
4049
        scope of notype_qualified_id.
4050
 
4051
1998-05-26  Dave Brolley  
4052
 
4053
        * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
4054
        (init_parse): Initialize cpplib interface.
4055
 
4056
        * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
4057
        empty continuation.
4058
 
4059
1998-05-26  Mark Mitchell  
4060
 
4061
        * decl.c (pushtag): Avoid crashing on erroneous input.
4062
 
4063
1998-05-25  Martin v. Löwis  
4064
 
4065
        * decl.c (push_namespace): Only produce one unique name for
4066
        anonymous namespaces.
4067
        (get_unique_name): Remove.
4068
 
4069
1998-05-25  Mark Mitchell  
4070
 
4071
        * call.c (tourney): Don't do any extra comparisons.
4072
 
4073
        * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
4074
 
4075
        * cp-tree.h (processing_template_parmlist): Declare.
4076
        * decl.c (pushtag): Don't call push_template_decl when we
4077
        shouldn't.
4078
        * pt.c (processing_template_parmlist): New variable.
4079
        (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
4080
        (complete_template_args): Use it.
4081
        (add_to_template_args): Likewise.
4082
        (innermost_args): Likewise.
4083
        (tsubst): Likewise.
4084
        (begin_template_parm_list): Use processing_template_parmlist.
4085
        (end_template_parm_list): Likewise.
4086
 
4087
        * cp-tree.h (ANON_UNION_TYPE_P): New macro.
4088
        * decl.c (grokdeclarator): Use it.
4089
        * decl2.c (grok_x_components): Likewise.
4090
        * init.c (initializing_context): Likewise.
4091
        * method.c (do_build_copy_constructor): Likewise.
4092
        (do_build_assign_ref): Likewise.
4093
        * search.c (compute_access): Likewise.
4094
        * typeck.c (build_component_ref): Likewise.
4095
 
4096
        * decl.c (grokdeclarator): Don't give a cv-qualified version of an
4097
        unnamed type a typedef name "for linkage purposes".
4098
 
4099
        * pt.c (lookup_template_class): Don't look at
4100
        IDENTIFIER_CLASS_VALUE when there's no current_class_type.
4101
 
4102
        * method.c (build_overload_int): Handle error cases gracefully.
4103
 
4104
        * pt.c (instantiate_decl): Handle static member variables
4105
        correctly.
4106
 
4107
        * pt.c (tsubst): Use the tsubst'd type when producing new
4108
        TEMPLATE_PARM_INDEX nodes.
4109
 
4110
1998-05-24  Mark Mitchell  
4111
 
4112
        * tree.c (cp_tree_equal): Handle pointers to member functions.
4113
 
4114
        * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
4115
        sure the type of the REF_BIND is a reference type.
4116
        (maybe_handle_ref_bind, compare_ics): Rename reference_type to
4117
        target_type for clarity.
4118
 
4119
        * parse.y (xcond): Move call to condition_conversion ...
4120
        * semantics.c (finish_for_cond): Here.
4121
        * parse.c: Regenerated.
4122
 
4123
1998-05-24  Jason Merrill  
4124
 
4125
        * decl.c (push_namespace): Namespaces have type void.
4126
        * typeck2.c (incomplete_type_error): Complain about namespace
4127
        used as expression.
4128
        * typeck.c (decay_conversion): Likewise.
4129
 
4130
1998-05-24  Martin von Löwis  
4131
 
4132
        * error.c (dump_expr): Support namespaces.
4133
 
4134
1998-05-23  Jason Merrill  
4135
 
4136
        * cp-tree.def: Add SRCLOC.
4137
        * cp-tree.h: Add struct tree_srcloc and accessor macros.
4138
        * tree.c (build_srcloc, build_srcloc_here): New fns.
4139
        * pt.c (add_pending_template): Use build_srcloc_here.
4140
        (push_tinst_level): Update last_template_error_tick before erroring.
4141
        (instantiate_decl): Restore lineno and input_filename before
4142
        calling add_pending_template.
4143
        * decl2.c (finish_file): Set up lineno and input_filename for
4144
        pending templates.
4145
 
4146
1998-05-22  Jason Merrill  
4147
 
4148
        * decl.c (lang_print_error_function): New fn.
4149
        (init_decl_processing): Set print_error_function to use it.
4150
        * errfn.c (cp_thing): Don't call maybe_print_template_context here.
4151
 
4152
        * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
4153
        ICS_BAD_FLAG.
4154
 
4155
        * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
4156
        copy-initialization.
4157
 
4158
        * class.c (build_vtable_entry): Use int_fits_type_p.
4159
        (build_vtable): Pass a signed offset to build_vtable_entry.
4160
        (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
4161
        set_rtti_entry): Likewise.
4162
 
4163
1998-05-22  Per Bothner  
4164
 
4165
        * cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
4166
        (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.
4167
 
4168
1998-05-22  Jason Merrill  
4169
 
4170
        * pt.c (print_template_context): Use fprintf instead of cp_error.
4171
 
4172
        * pt.c (determine_specialization): Just return an error_mark_node.
4173
        Also print the decl we want in error messages.  If we complain,
4174
        return error_mark_node.
4175
        (tsubst_friend_function): Set lineno and input_filename so
4176
        error messages will be useful.
4177
        (instantiate_template): Just return an error_mark_node.
4178
        (check_explicit_specialization): Don't mess with a returned
4179
        error_mark_node.
4180
 
4181
        * pt.c (print_template_context): Add new argument.
4182
        (maybe_print_template_context): New fn.
4183
        (push_tinst_level): Increment tinst_level_tick.
4184
        (pop_tinst_level): Likewise.
4185
        * errfn.c (cp_thing): Call maybe_print_template_context.  Use
4186
        xrealloc instead of xmalloc.
4187
 
4188
        * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
4189
 
4190
1998-05-21  Jason Merrill  
4191
 
4192
        * pt.c (tsubst_friend_class): Don't call redeclare_class_template
4193
        if the template we looked up is the same as the one we already
4194
        have.
4195
 
4196
Thu May 21 11:54:44 1998  Dave Brolley  
4197
 
4198
        * lex.c: (handle_sysv_pragma): FILE* parameter not used.
4199
        (cpp_reader,parse_in): Add for cpplib.
4200
        (check_newline): Call handle_sysv_pragma with new interface.
4201
        (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
4202
 
4203
        * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
4204
        (sub_getch): Call GETC for cpplib.
4205
 
4206
        * cp-tree.h: (get_directive_line): Different prototype for cpplib.
4207
        (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
4208
 
4209
        * Makefile.in (CXX_OBJS): Add @extra_cxx_objs@ for cpplib.
4210
 
4211
1998-05-21  Jason Merrill  
4212
 
4213
        * decl2.c (maybe_make_one_only): New fn.
4214
        (import_export_vtable): Use it.
4215
        (import_export_decl): Likewise.
4216
        * pt.c (mark_decl_instantiated): Likewise.
4217
 
4218
1998-05-21  Mark Mitchell  
4219
 
4220
        * decl2.c (find_representative_member): Rename to ...
4221
        (build_anon_union_vars): New function.
4222
        (finish_anon_union): Fix stupidity of previous change.
4223
 
4224
1998-05-20  Jason Merrill  
4225
 
4226
        * decl.c (grokfndecl): Handle definition of specialization in
4227
        friend declaration.
4228
 
4229
        * error.c (dump_decl): Fix LOOKUP_EXPR handling.
4230
 
4231
1998-05-20  Mark Mitchell  
4232
 
4233
        * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
4234
        to look for type declarations.
4235
        (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
4236
        * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
4237
        (finish_member_class_template): Declare.
4238
        * decl.c (pushtag): Put member class templates on the
4239
        CLASSTYPE_TAGS list, just as for ordinary member classes.
4240
        (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
4241
        (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
4242
        IDENTIFIER_NAMESPACE_VALUEs.
4243
        * parse.y (component_decl): Move code to ...
4244
        * semantics.c (finish_member_class_template): New function.
4245
        Don't put member class templates on the list of components for a
4246
        class.
4247
        * parse.c: Regenerated.
4248
        * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
4249
        In fact, don't use DECL_CONTEXT at all here.
4250
 
4251
1998-05-20  Martin von Löwis  
4252
 
4253
        * decl.c (record_unknown_type): New function.
4254
        (init_decl_processing): Call it for the unknown and global type
4255
        nodes.
4256
 
4257
1998-05-20  Mark Mitchell  
4258
 
4259
        * decl2.c (find_representative_member): New function.
4260
        (finish_anon_union): Use it.
4261
 
4262
        * cp-tree.h (MAIN_NAME_P): New macro.
4263
        (DECL_MAIN_P): Likwise.
4264
        * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
4265
        (grokfndecl): Use the new macros.
4266
        (grokdeclarator): Likewise.
4267
        (start_function): Likewise.
4268
        (store_parm_decls): Likewise.
4269
        (finsh_function): Likewise.
4270
        * friend.c (do_friend): Likewise.
4271
        * typeck.c (build_function_call_real): Likewise.
4272
        (build_unary_op): Likewise.
4273
 
4274
Wed May 20 02:16:01 1998  Jason Merrill  
4275
 
4276
        * decl2.c (start_objects, finish_objects, do_dtors,
4277
        do_ctors): Split out from...
4278
        (finish_file): ...here.
4279
 
4280
Tue May 19 20:36:23 1998  Jason Merrill  
4281
 
4282
        * tree.c (is_overloaded_fn): Don't abort on placeholders from
4283
        push_class_decls.
4284
 
4285
Tue May 19 15:16:22 1998  Brendan Kehoe  
4286
 
4287
        * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
4288
 
4289
        * error.c (dump_expr): Handle an ARROW_EXPR.
4290
 
4291
Tue May 19 15:13:39 1998  Mark Mitchell  
4292
 
4293
        * decl.c (saveable_obstack): Declare.
4294
        (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
4295
        declare, if necessary.
4296
 
4297
Tue May 19 14:50:27 1998  Mark Mitchell  
4298
 
4299
        * call.c (compare_qual): Remove.
4300
        (is_subseq): Tweak.
4301
        (is_properly_derived_from): New function.
4302
        (maybe_handle_ref_bind): Likewise.
4303
        (maybe_handle_implicit_object): Likewise.
4304
        (compare_ics): Modify substantially to bring into conformance with
4305
        the standard.
4306
        * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
4307
        (comp_cv_qualification): Declare.
4308
        (comp_cv_qual_signature): Likewise.
4309
        * typeck.c (comp_cv_qualification): Likewise.
4310
        (comp_cv_qual_signature): Likewise.
4311
 
4312
Tue May 19 10:05:02 1998  Kaveh R. Ghazi  
4313
 
4314
        * Makefile.in (parse.o): Depend on toplev.h.
4315
 
4316
        * class.c (typecode_p): Remove prototype and definition.
4317
 
4318
        * cp-tree.h (currently_open_class, is_empty_class, member_p):
4319
        Add prototype.
4320
 
4321
        * decl.c (push_overloaded_decl_top_level): Remove prototype and
4322
        definition.
4323
 
4324
        * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
4325
        in call to `cp_thing'.
4326
        (cp_warning): Likewise for function pointer `warning'.
4327
 
4328
        * except.c (do_function_call): Remove prototype and definition.
4329
        (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
4330
 
4331
        * method.c (is_java_type): Add prototype and make it static.
4332
 
4333
        * parse.y: Include toplev.h.
4334
 
4335
        * pt.c (type_unification): Remove unused variable `arg'.
4336
        (instantiate_decl): Likewise for `save_ti'.
4337
 
4338
        * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
4339
 
4340
Tue May 19 02:43:25 1998  Jason Merrill  
4341
 
4342
        * init.c (build_member_call): Handle template_ids.
4343
        * parse.y (primary): Add global_scope template_id.
4344
 
4345
Mon May 18 23:22:52 1998  Jason Merrill  
4346
 
4347
        * decl2.c (get_sentry): Use end_temporary_allocation.
4348
        Don't declare permanent_obstack.
4349
 
4350
Mon May 18 12:28:44 1998  Mark Mitchell  
4351
 
4352
        * parse.y (.finish_new_placement): New non-terminal.
4353
        (unary_expr, new_type_id): Use it.
4354
        * parse.c: Regenerated.
4355
 
4356
Mon May 18 12:20:27 1998  Brendan Kehoe  
4357
 
4358
        * pt.c (redeclare_class_template): Say where the original definition
4359
        of the template-parameter's default argument appeared.
4360
 
4361
Mon May 18 03:00:57 1998  Jason Merrill  
4362
 
4363
        * call.c (build_over_call): Tweak empty class handling.
4364
 
4365
        * decl.c (make_typename_type): Use currently_open_class.
4366
 
4367
        * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
4368
 
4369
Mon May 18 01:43:01 1998  Martin v. Löwis  
4370
 
4371
        * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
4372
        for a type unless it is one.
4373
 
4374
        * class.c (finish_struct_1): Use OVL_CURRENT in error message.
4375
 
4376
Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
4377
 
4378
        * Makefile.in (program_transform_name, objdir): Define.
4379
 
4380
        * Makefile.in (BISON): Use bison from the build tree if it exists.
4381
        (FLEX): Likewise.
4382
 
4383
Sun May 17 14:52:08 1998  Martin v. Löwis  
4384
 
4385
        * typeck.c (type_unknown_p): Return true for TREE_LIST also.
4386
 
4387
        * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
4388
 
4389
Sun May 17 14:51:41 1998  Jason Merrill  
4390
 
4391
        * call.c (build_scoped_method_call): Likewise.
4392
 
4393
Sun May 17 13:53:48 1998  Mark Mitchell  
4394
 
4395
        * init.c (build_new_1): Call suspend_momentary around the creation
4396
        of values that must be saved for exception handling.
4397
        * parse.y (.build_new_placement): New non-terminal.
4398
        (unary_expr, new_placement): Use it.
4399
        * parse.c: Regenerated.
4400
 
4401
Sun May 17 12:32:08 1998  Jason Merrill  
4402
 
4403
        * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
4404
        old and new types.
4405
 
4406
        * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
4407
        canonical type.
4408
 
4409
        * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
4410
 
4411
Fri May 15 20:28:00 1998  Jason Merrill  
4412
 
4413
        * decl.c (start_decl): Revert problem change.
4414
 
4415
        * Makefile.in (CONFLICTS): Fix.
4416
 
4417
Fri May 15 15:34:02 1998  Benjamin Kosnik  
4418
 
4419
        * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
4420
 
4421
Fri May 15 00:46:05 1998  Jason Merrill  
4422
 
4423
        * class.c (finish_struct_1): Use BINFO_SIZE.
4424
 
4425
        * decl.c (start_decl): Use 'tem'.
4426
 
4427
Thu May 14 16:30:47 1998  Andrew MacLeod  
4428
 
4429
        * exception.cc: Include eh-common.h.
4430
        (struct cp_eh_info): Add eh_info struct with NEW_EH_MODEL.
4431
        (__cplus_type_matcher): First stab at new C++ runtime type matcher.
4432
        (__cp_push_exception): Initialize eh_info struct as well.
4433
        * except.c: Remove local structs and include eh-common.h.
4434
        (init_exception_processing): Set language and version codes.
4435
        (call_eh_info): Add presence of eh_info to runtime description of
4436
        struct cp_eh_info.
4437
        (expand_end_eh_spec): Call start_catch_block() and end_catch_block().
4438
        * semantics.c (finish_try_block): Call start_catch_block() and
4439
        end_catch_block().
4440
        * parse.y (function_try_block): Call start_catch_block() and
4441
        end_catch_block().
4442
 
4443
Thu May 14 12:27:34 1998  Brendan Kehoe  
4444
 
4445
        * typeck.c (original_type): New function.
4446
        (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
4447
        to see if they're actually the same.
4448
        * cp-tree.h (original_type): Declare.
4449
 
4450
Wed May 13 12:54:30 1998  Kaveh R. Ghazi  
4451
 
4452
        * Makefile.in (lex.o): Depend on output.h.
4453
 
4454
        * call.c (add_function_candidate): Remove unused variable `cand'.
4455
        (add_conv_candidate): Likewise.
4456
        (build_builtin_candidate): Likewise.
4457
 
4458
        * cp-tree.h: Add prototype for `types_overlap_p'.
4459
 
4460
        * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
4461
 
4462
        * decl2.c (merge_functions): Remove unused variables `tmp' and
4463
        `tempn'.
4464
 
4465
        * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
4466
        (code_as_string): Likewise.
4467
        (language_as_string): Likewise.
4468
        (parm_as_string): Likewise.
4469
        (op_as_string): Likewise.
4470
        (assop_as_string): Likewise.
4471
        (cv_as_string): Likewise.
4472
 
4473
        * lex.c: Include output.h.
4474
 
4475
        * pt.c (type_unification): Cast first argument of `bzero' to a char*.
4476
 
4477
        * search.c (dfs_no_overlap_yet): Mark parameter `t' with
4478
        ATTRIBUTE_UNUSED.
4479
 
4480
        * tinfo.cc (__class_type_info::dcast): Change the type of variable
4481
        `i' from int to size_t.
4482
 
4483
        * typeck.c (language_lvalue_valid): Mark parameter `exp' with
4484
        ATTRIBUTE_UNUSED.
4485
 
4486
Tue May 12 21:37:49 1998  Jason Merrill  
4487
 
4488
        * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
4489
        DECL_NAMESPACE_SCOPE_P.
4490
        (lang_decl_name): Likewise.
4491
        * pt.c (tsubst_friend_function, tsubst): Likewise.
4492
        * decl.c (pushdecl, redeclaration_error_message, start_decl,
4493
        cp_finish_decl, start_function): Likewise.
4494
        * class.c (finish_struct_1): Likewise.
4495
        * call.c (build_over_call): Likewise.
4496
        (compare_ics): Use DERIVED_FROM_P.
4497
 
4498
Tue May 12 07:24:18 1998  Mark Mitchell  
4499
 
4500
        * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
4501
        * method.c (build_mangled_name): Use it.
4502
        (build_decl_overload_real): Likewise.
4503
 
4504
        * error.c (dump_simple_decl): New function, broken out from ...
4505
        (dump_decl): Use it.
4506
 
4507
Mon May 11 11:38:07 1998  Mark Mitchell  
4508
 
4509
        * ptree.c (lang_print_xnode): Add missing `break'.
4510
 
4511
        * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
4512
 
4513
        * call.c (add_template_candidate): Adjust for changes to
4514
        fn_type_unification.
4515
        (add_template_candidate_real): Likewise.
4516
        (add_template_conv_candidate): Likewise.
4517
        (build_user_type_conversion_1): Likewise.
4518
        (build_new_function_call): Likewise.
4519
        (build_object_call): Likewise.
4520
        (build_new_op): Likewise.
4521
        (build_new_method_call): Likewise.
4522
        * class.c (instantiate_type): Likewise.
4523
        * cp-tree.h (unification_kind_t): New type.
4524
        (fn_type_unification): Adjust prototype.
4525
        (type_unificaiton): Likewise.
4526
        * pt.c (UNIFY_ALLOW_NONE): New macro.
4527
        (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
4528
        (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
4529
        (UNIFY_ALLOW_DERIVED): Likewise.
4530
        (unify): Change prototype.
4531
        (maybe_adjust_types_for_deduction): New function.
4532
        (check_cv_quals_for_unify): Likewise.
4533
        (determine_specialization): Adjust.
4534
        (fn_type_unification): Likewise.
4535
        (type_unification): Likewise.
4536
        (type_unification_real): Likewise.  Use
4537
        maybe_adjust_types_for_deduction.  Fix mishandling of
4538
        back-unification of template functions passed as arguments.  Pass
4539
        appropriate combination of UNIFY_ALLOW_* to unify.
4540
        (unify): Remove unused NTPARMS parameter.  Use
4541
        check_cv_quals_for_unify.  Remove bogus code that allowed
4542
        too-generous unification in order to adhere more closely to standard.
4543
        (get_bindings_real): Adjust.
4544
        (get_class_bindings): Likewise.
4545
 
4546
        * method.c (build_overload_identifier): Only use the innermost
4547
        template arguments when mangling.
4548
        * pt.c (tsubst_template_argument_vector): New function.
4549
        (complete_template_args): Deal with the situation where the
4550
        extra_args contain more than one level of arguments.
4551
        (lookup_template_class): Deal with member template classes, which
4552
        may have more than one level of arguments.
4553
        (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
4554
        Improve handling of member template classes.  Use
4555
        DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
4556
        tsubst_template_argument_vector where appropriate.
4557
        (regenerate_decl_from_template): Break out from ...
4558
        (instantiate_decl): Here.
4559
 
4560
        * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
4561
        * parse.h: Regenerated.
4562
        * parse.c: Really regenerated.
4563
 
4564
        * cp-tree.h (finish_unary_op_expr): New function.
4565
        (finish_id_expr): Likewise.
4566
        (begin_new_placement): Likewise.
4567
        (finish_new_placement): Likewise.
4568
        (finish_declarator): Likewise.
4569
        (finish_translation_unit): Likewise.
4570
        (finish_parmlist): Likewise.
4571
        (begin_class_definition): Likewise.
4572
        (finish_class_definition): Likewise.
4573
        (finish_default_args): Likewise.
4574
        (finish_inline_definitions): Likewise.
4575
        * parse.y (GCC_ASM_KEYWORD): Remove.
4576
        (TYPENAME_ELLIPSIS): Likewise.
4577
        * parse.c: Regenerated.
4578
        Use new functions in semantics.c in the actions for many rules.
4579
        * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
4580
        * hash.h: Regenerated.
4581
        * semantics.c (finish_expr_stmt): Allow NULL expr.
4582
        (finish_unary_op_expr): New function, containing
4583
        code previously in parse.y.
4584
        (finish_id_expr): Likewise.
4585
        (begin_new_placement): Likewise.
4586
        (finish_new_placement): Likewise.
4587
        (finish_declarator): Likewise.
4588
        (finish_translation_unit): Likewise.
4589
        (finish_parmlist): Likewise.
4590
        (begin_class_definition): Likewise.
4591
        (finish_class_definition): Likewise.
4592
        (finish_default_args): Likewise.
4593
        (finish_inline_definitions): Likewise.
4594
 
4595
Sun May 10 23:43:13 1998  Mark Mitchell  
4596
 
4597
        * typeck.c (build_c_cast): Don't decay arrays and functions to
4598
        pointer type when converting to a class type.
4599
 
4600
Sun May 10 22:53:56 1998  Jason Merrill  
4601
 
4602
        * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
4603
        (DECL_CLASS_SCOPE_P): Likewise.
4604
 
4605
Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
4606
 
4607
        * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
4608
        * decl2.c (constructor_name_full): Likewise.
4609
 
4610
Sun May 10 22:48:12 1998  Mike Stump  
4611
 
4612
        * tree.c (mapcar): Add OVERLOAD support.
4613
 
4614
        * init.c (resolve_offset_ref): We must use basetype_path before we
4615
        destroy it with a call to convert_pointer_to.
4616
 
4617
Sat May  9 14:44:37 1998  Jason Merrill  
4618
 
4619
        * class.c (currently_open_class): New fn.
4620
        * decl.c (lookup_name_real): Use it.
4621
        * search.c (lookup_field): Likewise.
4622
 
4623
Fri May  8 23:32:42 1998  Martin von Löwis  
4624
 
4625
        * cp-tree.def (OVERLOAD): New node.
4626
        * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
4627
        SET_IDENTIFIER_NAMESPACE_VALUE): Define.
4628
        (NAMESPACE_BINDING): Remove.
4629
        (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
4630
        namespace_binding.
4631
        (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
4632
        Define.
4633
        (tree_overload): New struct.
4634
        (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
4635
        (REAL_IDENTIFIER_TYPE_VALUE): Define.
4636
        (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
4637
        (lang_decl_flags): Remove in_namespace.
4638
        (lang_decl): Remove chain.
4639
        (DECL_CHAIN, DECL_NAMESPACE): Remove.
4640
        (flag_honor_std): Declare extern.
4641
        (identifier_type_value, pushdecl_namespace_level, push_using_decl,
4642
        namespace_binding, set_namespace_binding,
4643
        lookup_function_nonclass, cat_namespace_levels,
4644
        set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
4645
        scratch_ovl_cons, ovl_member, build_overload): Declare.
4646
        (decl_list_length, get_namespace_id, current_namespace_id,
4647
        overloaded_globals_p): Remove.
4648
        (lookup_using_namespace, qualified_lookup_using_namespace): Change
4649
        return type.
4650
        (push_scratch_obstack): New macro.
4651
        * call.c (add_function_candidate): Special-case type of OVERLOAD node.
4652
        (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
4653
        convs, fns.
4654
        (build_new_function_call): Iterate using OVL_CHAIN.
4655
        Print DECL_NAME in when reporting ambiguities.
4656
        (build_object_call): Iterate using OVL_NEXT for fns, convs.
4657
        (build_new_op): Call lookup_function_nonclass.
4658
        Iterate using OVL_NEXT.
4659
        (build_op_delete_call): Change detection of members.
4660
        Do not wrap TREE_LIST around fields and single global functions.
4661
        (build_over_call): Don't push a class level if the context is a
4662
        namespace.
4663
        (build_new_method_call): Iterate using OVL_NEXT.
4664
        * class.c (add_method): Chain overloaded members using
4665
        build_overload.  Remove copying of method.
4666
        (grow_method): When iterating through the obstack, expect OVERLOAD
4667
        nodes.  Chain overload members.
4668
        (finish_struct_methods): Chain overload members.  Unpack OVERLOAD
4669
        nodes in call to get_baselinks.
4670
        (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
4671
        (finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
4672
        fdecls that are OVERLOAD nodes.
4673
        (validate_lhs): New function.
4674
        (instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
4675
        code.  Use DECL_NAME in error messages.  Split code between global
4676
        and member function processing.
4677
        * decl.c (global_type_node): New static variable.
4678
        (in_std): New global.
4679
        (struct binding_level): New field usings.
4680
        (resume_binding_level): Assert that we are not in a class.
4681
        (toplevel_bindings_p): Just check for namespace_p or
4682
        pseudo_global.
4683
        (resume_level): Remove.
4684
        (find_binding): New function.
4685
        (binding_for_name): Call it.
4686
        (namespace_binding, set_namespace_binding): New functions.
4687
        (push_namespace): Associate binding level with new namespace,
4688
        resume_binding_level for existing namespace.  Remove old code.
4689
        Fake std by counting.
4690
        (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
4691
        (maybe_push_to_top_level): Save current namespace.
4692
        (pop_from_top_level): Restore saved namespace.
4693
        (pop_namespace): Call suspend_binding_level.  Remove old code.
4694
        (cat_namespace_levels): New function.
4695
        (set_identifier_type_value_with_scope): For namespace bindings,
4696
        set BINDING_TYPE, and use global_type_node.
4697
        Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
4698
        (identifier_type_value): New function.
4699
        (pushtag): If no context, use current_namespace.
4700
        (duplicate_decls): Don't process DECL_CHAIN.
4701
        (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
4702
        already set.  Never reset it to NULL_TREE.  Lookup global variables
4703
        in their namespace.  Push overloaded templates if they are on
4704
        namespace level.
4705
        (pushdecl_namespace_level): New function.
4706
        (pushdecl_top_level): Implement using pushdecl_namespace_level.
4707
        (pushdecl_using_decl): New function.
4708
        (overloaded_globals_p): Remove.
4709
        (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
4710
        them.  Use namespace_binding and set_namespace_value.
4711
        (redeclaration_error_message): Complain if the declarations come
4712
        from different namespaces.
4713
        (lookup_tag): On namespace level, look in the BINDING_TYPE.
4714
        (lookup_namespace_name): Pass tree_bindings from stack.  Remove
4715
        old code.
4716
        (select_decl): New function.
4717
        (lookup_name_real): Call it for qualified and unqualified lookup.
4718
        Pass tree_bindings from the stack.
4719
        If prefer_type is 1, also accept namespaces.
4720
        (lookup_function_nonclass): New function.
4721
        (init_decl_processing): Set the binding level of the global
4722
        namespace to global_binding_level.
4723
        Build a proper type list for __builtin_apply.
4724
        Initialize std_node to "fake std" if flag_honor_std is set.
4725
        Initialize global_type_node.
4726
        Allocated bad_alloc in namespace std if flag_honor_std.
4727
        (define_function): Set the DECL_CONTEXT to the current_namespace.
4728
        (start_decl): A namespace is not considered as a context here.  If
4729
        the DECL_CONTEXT is a namespace, push the decl.
4730
        (cp_finish_decl): Check for namespaces used as initializers.
4731
        (grokfndecl): Add namespace parameter.  Remove processing of
4732
        DECL_CHAIN.
4733
        (grokvardecl): Add namespace parameter.
4734
        (grokdeclarator): Process SCOPEs that are namespaces.  For
4735
        mangling, temporarily set the DECL_CONTEXT on anonymous structs.
4736
        (start_function): Check for contexts that are namespaces.
4737
        Set context for declarations that have not been pushed.
4738
        (store_parm_decls): Check for ::main only.
4739
        (finish_function): Likewise.
4740
        (start_method): Check for contexts that are namespaces.
4741
        (start_method): Remove DECL_CHAIN processing.
4742
        * decl2.c (flag_honor_std): Declare.
4743
        (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
4744
        (decl_namespace_list): New static global.
4745
        (grok_x_components): Ignore namespaces as type contexts.
4746
        (check_classfn): Expect OVERLOAD nodes.
4747
        (grokfield): Remove DECL_CHAIN processing.
4748
        (finish_file): Call cat_namespace_levels.
4749
        (merge_functions): New function.
4750
        (ambiguous_decl): Rewrite.
4751
        (lookup_using_namespace): Produce tree_bindings.
4752
        (qualified_lookup_using_namespace): Likewise.
4753
        (set_decl_namespace, decl_namespace, current_decl_namespace,
4754
        push_decl_namespace, pop_decl_namespace): New functions.
4755
        (arg_lookup): New struct.
4756
        (add_function, arg_assoc_namespace, arg_assoc_class,
4757
        arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
4758
        New functions.
4759
        (get_namespace_id, current_namespace_id): Remove.
4760
        (do_toplevel_using_decl): Rewrite.
4761
        (do_class_using_decl): Complain about namespace qualifiers.
4762
        (do_using_directive): Sorry if not on namespace level.  Complain
4763
        about unknown namespaces.
4764
        * error.c (dump_aggr_type): Check for namespace contexts.
4765
        * except.c (init_exception_processing): Push terminate into std.
4766
        * friend.c (is_friend): A namespace is not a context, here.
4767
        * init.c (expand_member_init): Remove DECL_CHAIN processing.
4768
        (build_offset_ref): Process OVERLOAD nodes.
4769
        * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
4770
        * lex.c (identifier_type): Loop using OVL_CHAIN.
4771
        (see_typename): Set looking_for_typename to 2.
4772
        (real_yylex): Likewise.
4773
        (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
4774
        (do_scoped_id): Expect OVERLOAD nodes.
4775
        Change calling convention for qualified_lookup_using_namespace.
4776
        (build_lang_decl): Don't set in_namespace anymore.
4777
        * method.c (typevec_size): New global.
4778
        (build_overload_nested_name): Return if global_namespace.
4779
        Otherwise, always expect a declaration context.
4780
        (build_qualified_name): Likewise.
4781
        Make sure we don't write beyond typevec_size.
4782
        (build_decl_overload_real): Likewise.
4783
        Allocate one extra slot for the namespace.
4784
        (hack_identifier): Mark code dead.
4785
        Process OVERLOAD and NAMESPACE_DECL nodes.
4786
        * parse.y (program): Pop namespaces until in global namespace.
4787
        (extdef): In a using-declaration, don't discard the identifier if
4788
        there is no declaration.
4789
        (left_curly): Ignore type contexts which are namespaces.
4790
        (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
4791
        used as scope.
4792
        * pt.c (template_class_depth): Expect types to be namespaces.
4793
        (determine_specialization): Simplify by expecting OVERLOAD nodes.
4794
        (push_template_decl): Push into namespace level.
4795
        Reset ctx if it is a namespace.
4796
        Set DECL_CONTEXT to current_namespace if not set already.
4797
        Ignore real contexts that are namespaces.
4798
        (mangle_class_name_for_template): Skip global_namespace.
4799
        Mangle other namespaces as declarations.
4800
        (lookup_template_function): Set type of OVERLOAD nodes to unknown.
4801
        (lookup_template_class): Push into namespace of context.
4802
        If the context is a namespace, set it to global_namespace.
4803
        Use id_context for mangling.
4804
        (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
4805
        (tsubst_friend_function): Ignore namespace contexts.
4806
        Push into namespace level.
4807
        (tsubst): Handle NAMESPACE_DECL nodes.
4808
        Remove DECL_CHAIN processing.
4809
        (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
4810
        * ptree.c (print_lang_identifier): Print bindings.
4811
        (lang_print_xnode): Print OVERLOAD nodes.
4812
        * rtti.c (init_rtti_processing): Push type_info into std.
4813
        * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
4814
        (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
4815
        dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
4816
        lookup_fnfields_here): Likewise.
4817
        Process all nodes, instead of going through TREE_CHAIN.
4818
        * sig.c (build_signature_pointer_or_reference_type): Set context
4819
        to global_namespace.
4820
        (build_signature_table_constructor): Expect OVERLOAD nodes.
4821
        * spew.c (yylex): Save old setting of looking_for_typename.
4822
        * tree.c (decl_list_length): Remove.
4823
        (binding_init): New function.
4824
        (count_functions): Rewrite.
4825
        (is_overloaded_fn): Expect OVERLOAD nodes.
4826
        (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
4827
        (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
4828
        ovl_member): New functions.
4829
        * typeck.c (require_complete_type): Expect OVERLOAD nodes.
4830
        (type_unknown_p): Likewise.
4831
        (require_instantiated_type): Likewise.
4832
        (build_component_ref): Declare code dead.
4833
        (build_x_function_call): Create and expect OVERLOAD nodes.
4834
        (build_function_call_real): Check for ::main only.
4835
        (build_unary_op): Likewise.  Expect OVERLOAD nodes.
4836
        (convert_for_assignment): Check for TREE_LIST before accessing
4837
        TREE_VALUE.
4838
        * decl.c (duplicate_decls): Check for namespace bindings instead
4839
        of global bindings.
4840
        (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
4841
        lookup_name_current_level, start_decl, xref_tag,
4842
        finish_enum): Likewise.
4843
        * init.c (build_offset_ref): Likewise.
4844
        * search.c (lookup_field): Likewise.
4845
        (lookup_fnfields): Likewise.
4846
        (dfs_debug_mark): Likewise.
4847
        * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
4848
        (poplevel_class, pop_from_top_level): Likewise.
4849
        * decl2.c (finish_method): Likewise.
4850
        * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
4851
        * decl.c (record_builtin_type): Likewise.
4852
        (init_decl_processing, grokfndecl): Likewise.
4853
        * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
4854
        (make_lang_type): Likewise.
4855
        * parse.y (make_thunk): Likewise.
4856
        * pt.c (tsubst): Likewise.
4857
        * tree.c (debug_binfo): Likewise.
4858
        * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h,
4859
        tinfo2.cc, inc/new.h: Add std qualifications.
4860
        * inc/new: Wrap with namespace std if __HONOR_STD.
4861
        * inc/typeinfo: Likewise.
4862
 
4863
Fri May  8 00:43:50 1998  Jason Merrill  
4864
 
4865
        * call.c (build_user_type_conversion_1): Handle second_conv
4866
        properly for templates.
4867
 
4868
Thu May  7 17:09:25 1998  Andrew MacLeod  
4869
 
4870
        * method.c (build_decl_overload_real): Set TREE_USED flag to
4871
        zero for build_type_variants nodes as well.
4872
 
4873
Wed May  6 19:27:09 1998  Jason Merrill  
4874
 
4875
        * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
4876
 
4877
Wed May  6 16:49:48 1998  Jim Wilson  
4878
 
4879
        * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
4880
        except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
4881
        rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o,
4882
        xref.o): Add toplev.h dependencies.
4883
 
4884
Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
4885
 
4886
        * errfn.c (cp_error, cp_warning): Remove declarations for
4887
        error and warning respectively.
4888
 
4889
Wed May  6 14:28:18 1998  Kaveh R. Ghazi  
4890
 
4891
        * error.c: Convert to using ctype macros defined in system.h.
4892
        * method.c: Likewise.
4893
        * xref.c: Likewise.
4894
        * lex.c: Likewise.  Also remove redundant system header stuff.
4895
 
4896
Wed May  6 06:36:41 1998  Robert Lipe  
4897
 
4898
        * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c,
4899
        expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c,
4900
        search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c,
4901
        xref.c: Add include of toplev.h.
4902
 
4903
Wed May  6 02:33:39 1998  Jason Merrill  
4904
 
4905
        * tree.c (perm_manip): Also regenerate the RTL of an extern.
4906
        (copy_to_permanent): Use end_temporary_allocation.
4907
 
4908
Tue May  5 23:54:04 1998  Jason Merrill  
4909
 
4910
        * init.c (expand_vec_init): The initialization of each array
4911
        element is a full-expression.
4912
 
4913
Tue May  5 18:24:13 1998  Andrew MacLeod  
4914
 
4915
        * method.c (build_mangled_name): Add a call to build_type_variant
4916
        to get the right type.
4917
 
4918
Tue May  5 01:25:03 1998  Jason Merrill  
4919
 
4920
        * Makefile.in: Add .SUFFIXES.
4921
 
4922
        * cp-tree.def: Remove NAMESPACE_DECL.
4923
 
4924
Sun May  3 01:32:14 1998  Jason Merrill  
4925
 
4926
        * call.c (build_over_call): Do evaluate arg even if it has empty
4927
        class type.
4928
        * decl.c (start_function): Don't push a member function.
4929
 
4930
Thu Apr 30 18:59:23 1998  Jim Wilson  
4931
 
4932
        * Makefile.in (g++FAQ.info): Put -o option before input file.
4933
 
4934
Thu Apr 30 13:05:33 1998  Andrew MacLeod  
4935
 
4936
        * gxxint.texi: Add info for squangling codes K and B.
4937
 
4938
Tue Apr 28 13:22:01 1998  Mark Mitchell  
4939
 
4940
        * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
4941
        the expression in templates.
4942
        (finish_stmt_expr): Likewise.
4943
 
4944
1998-04-28  Brendan Kehoe  
4945
 
4946
        * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
4947
 
4948
Mon Apr 27 13:58:10 1998  Mark Mitchell  
4949
 
4950
        * decl.c (maybe_push_to_top_level): Always clear
4951
        current_template_parms and processing_template_decl.
4952
        (pushtag): Remove check of current_class_type and some comments,
4953
        since maybe_push_to_top_level no longer creates confusion.
4954
 
4955
Sun Apr 26 12:10:18 1998  Mark Mitchell  
4956
 
4957
        * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
4958
        (DECL_CLASS_TEMPLATE_P): Likewise.
4959
        (DECL_PRIMARY_TEMPLATE): Likewise.
4960
        (PRIMARY_TEMPLATE_P): Use it.
4961
        (push_template_decl_real): New function.
4962
        (redeclare_class_template): Take new template parameters as
4963
        input.
4964
        (is_specialization_of): New function.
4965
        (comp_template_args): Declare.
4966
        * decl.c (pushtag): Handle friend template classes.
4967
        (xref_tag): Likewise.  Use new calling convention for
4968
        redeclare_class_template.
4969
        * decl2.c (grok_x_components): Handle friend templates.
4970
        * friend.c (is_friend): Use is_specialization_of where
4971
        appropriate.  Deal with friend class templates.
4972
        (make_friend_class): Let a class template be friends with itself.
4973
        * pt.c (comp_template_args): Remove declaration.
4974
        (tsubst_friend_class): New function.
4975
        (push_template_decl_real): New function.
4976
        (push_template_decl): Use it.
4977
        (redeclare_class_template): Adjust for new calling convention.
4978
        (comp_template_args): Give it external linkage.
4979
        (instantiate_class_type): Use tsubst_friend_class to deal
4980
        with friend templates.
4981
        * typeck.c (comptypes): Use comp_template_args, rather than
4982
        expanding it inline.
4983
        * parse.y (component_decl): Handle a nested template type
4984
        like other component type declarations.
4985
 
4986
        * pt.c (check_explicit_specialization): Handle overloaded
4987
        constructors correctly.
4988
 
4989
        * pt.c (mabybe_get_template_decl_from_type_decl): New function.
4990
        (lookup_template_class): Use it.
4991
 
4992
Thu Apr 23 21:19:06 1998  Jason Merrill  
4993
 
4994
        * cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
4995
        * cp-tree.h: Add WRAPPER support.
4996
        * call.c (add_candidate): Split out from add_*_candidate fns.
4997
        (build_over_call): Take the candidate instead of function and args.
4998
        Enforce access control here.  Emit overload warnings here.
4999
        (add_warning): New fn.
5000
        (joust): Add WARN parm.  If not set, call add_warning instead of
5001
        printing a warning.  Re-enable some warnings.
5002
        (tourney): Pass it.
5003
        (convert_like): Adjust.
5004
        (build_new_op): Adjust.
5005
        (build_new_function_call): Adjust.
5006
        (build_user_type_conversion_1): Adjust.
5007
        (USER_CONV_FN): Adjust.
5008
        * tree.c (build_expr_wrapper, build_expr_ptr_wrapper,
5009
        build_int_wrapper): New fns.
5010
 
5011
Thu Apr 23 18:27:53 1998  Mark P. Mitchell  
5012
 
5013
        * pt.c (unify): Fix typo in previous change.
5014
 
5015
Thu Apr 23 09:32:58 1998  Jason Merrill  
5016
 
5017
        * error.c (dump_type_real): Declare canonical_name.
5018
 
5019
        * typeck.c (comp_target_types): Fix PMFs.
5020
 
5021
Wed Apr 22 13:24:48 1998  Mark Mitchell  
5022
 
5023
        * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
5024
        the DECL_RESULTs of a member TEMPLATE_DECL, not just the
5025
        TEMPLATE_DECL.
5026
 
5027
        * pt.c (tsubst): Decrease the template-level of
5028
        TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
5029
        TEMPLATE_PARM_INDEX.
5030
        (template_decl_level): New function.
5031
        (unify): Make sure to record unifications for template
5032
        parameters, even when the parameters exactly match the arguments.
5033
        Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
5034
        TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
5035
        aren't from the level we're currently working on.
5036
 
5037
Tue Apr 21 22:00:04 1998  Mark Mitchell  
5038
 
5039
        * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
5040
 
5041
        * decl2.c (check_member_template): Set DECL_IGNORED for member
5042
        class templates, too.
5043
 
5044
        * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
5045
 
5046
Tue Apr 21 18:59:11 1998  Benjamin Kosnik  
5047
 
5048
        * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
5049
 
5050
Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
5051
 
5052
        * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
5053
        * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
5054
        (init_decl_processing): Handle TI types.
5055
        * typeck.c (unsigned_type, signed_type): Handle TI types.
5056
 
5057
Sat Apr 18 15:25:21 1998  Jim Wilson  
5058
 
5059
        * g++spec.c (lang_specific_driver): New argument in_added_libraries.
5060
        New local added_libraries.  Increment count when add library to
5061
        arglist.
5062
 
5063
Fri Apr 17 21:25:00 1998  Mark Mitchell  
5064
 
5065
        * cp-tree.h (type_as_string_real): New function.
5066
        * pt.c (mangle_class_name_for_template): Use it.
5067
        * error.c (dump_aggr_type): Change prototype.
5068
        (dump_type_prefix): Likewise.
5069
        (dump_type_suffix): Likewise.
5070
        (dump_type_real): Convert from dump_type.  If desired, the
5071
        "canonica" name of a typedef, i.e., the name of the underlying
5072
        type, can be printed.
5073
        (dump_type): Call dump_type_real.
5074
 
5075
Fri Apr 17 14:30:45 1998  Jason Merrill  
5076
 
5077
        * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
5078
 
5079
        * typeck.c (comp_target_types): Tweak pedantic case.
5080
        (comp_target_parms): Tweak pedantic case.  Clean up somewhat.
5081
        Return -1 or 1 instead of 1 or 2.
5082
        (compparms): Remove STRICT handling.
5083
        (convert_for_assignment): Fix handling of pmfs.
5084
 
5085
Fri Apr 17 14:04:16 1998  Mark Mitchell  
5086
 
5087
        * typeck.c (comp_target_types): Handle references like pointers.
5088
        (comp_target_parms): Note that return code from comp_target_types
5089
        can be negative to indicate failure.
5090
 
5091
Fri Apr 17 09:10:52 1998  Andreas Schwab  
5092
 
5093
        * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
5094
        which requires a working target compiler to build.
5095
 
5096
Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
5097
 
5098
        * tree.c (avoid_overlap): Add prototype.
5099
 
5100
        * spew.c (num_tokens): Add prototype.
5101
        (nth_noken, add_token, consume_token, debug_yychar): Likewise.
5102
 
5103
        * search.c (dfs_check_overlap): Add prototype.
5104
        (dfs_no_overlap_yet): Likewise.
5105
 
5106
        * pt.c (original_template): Add prototype.
5107
        (inline_needs_template_parms): Likewise.
5108
        (push_inline_template_parms_recursive): Likewise.
5109
        (retrieve_specialization, register_specialization): Likewise.
5110
        (print_candidates, reduce_template_parm_level): Likewise.
5111
        (build_template_decl, mark_template_parm): Likewise.
5112
        (tsubst_friend_function, get_bindings_real): Likewise.
5113
 
5114
        * method.c (start_squangling): Add prototype.
5115
        (end_squangling, check_ktype, issue_ktype): Likewise.
5116
        (build_overloaded_scope_ref, check_btype): Likewise.
5117
        (build_mangled_template_parm_index): Likewise.
5118
 
5119
        * lex.c (init_cpp_parse): Add prototype.
5120
        (handle_cp_pragma, handle_sysv_pragma): Likewise.
5121
        (reduce_cmp, token_cmp): Likewise.
5122
 
5123
        * except.c (call_eh_info): Add prototype.
5124
        (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
5125
        (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
5126
 
5127
        * decl2.c (is_namespace_ancestor): Add prototype.
5128
        (namespace_ancestor, add_using_namespace): Likewise.
5129
        (ambiguous_decl): Likewise.
5130
 
5131
        * decl.c (indent): Add prototype.
5132
 
5133
        * call.c (add_template_candidate_real): Add prototype.
5134
 
5135
Fri Apr 17 01:57:12 1998  Jason Merrill  
5136
 
5137
        * decl2.c (build_expr_from_tree): Just return a PMF.
5138
 
5139
Fri Apr 17 00:45:12 1998  Mark Mitchell  
5140
 
5141
        * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
5142
        when doing initializations.
5143
 
5144
        * pt.c (unify): Use comptypes to compare type args.
5145
 
5146
Fri Apr 17 00:24:22 1998  Jason Merrill  
5147
 
5148
        * decl.c (duplicate_decls): Fix check for when it's safe to free
5149
        the new decl.
5150
 
5151
        * pt.c (mangle_class_name_for_template): Don't pass a typedef type
5152
        to type_as_string.
5153
 
5154
Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
5155
 
5156
        * pt.c (build_template_parm_index): Add prototype.
5157
 
5158
        * search.c (my_tree_cons): Don't clear words outside the
5159
        newly allocated node.
5160
 
5161
Wed Apr 15 15:34:44 1998  Dave Brolley  
5162
 
5163
        * lex.c (init_parse): Now returns char* containing the filename.
5164
 
5165
Wed Apr 15 13:20:06 1998  John Carr  
5166
                          Jeff Law   
5167
 
5168
        * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
5169
        than a pointer.
5170
 
5171
Sun Apr 12 22:31:19 1998  Richard Kenner  
5172
 
5173
        * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
5174
 
5175
Fri Apr 10 12:16:49 1998  Benjamin Kosnik  
5176
 
5177
        * decl.c (duplicate_decls): Don't warn for redundant decls if
5178
        friend: let add_friend take care of it.
5179
 
5180
Thu Apr  9 02:40:48 1998  Jason Merrill  
5181
 
5182
        * sig.c (build_signature_pointer_constructor): Don't set
5183
        TREE_HAS_CONSTRUCTOR for a signature pointer.
5184
        * cvt.c (ocp_convert): Don't force a temporary for internal structs.
5185
        * init.c (resolve_offset_ref): Warn about implicit & on pmfs
5186
        here, too.
5187
        * typeck.c (build_unary_op): Only allow taking the address of a
5188
        real constructor.
5189
        * typeck2.c (digest_init): Simplify.
5190
        (store_init_value): Don't pedwarn about using { } for pmfs.
5191
 
5192
Thu Apr  9 22:16:57 1998  Per Bothner  
5193
 
5194
        * cp-tree.h (start_decl):  Update prototype.
5195
        * decl.c (start_decl):  Like the C version, new parameters
5196
        for the attributes.  Call cplus_decl_attributes here,
5197
        (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
5198
        (grokdeclarator):  Pass NULL for new start_decl arguments.
5199
        * pt.c (tsubst_expr):  Likewise.
5200
        * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
5201
        * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
5202
        * lex.c (build_lang_decl): Add lang_name_java.
5203
        * class.c (push_lang_context): Add lang_name_java.
5204
        * method.c (build_mangled_name): Check for is_java_type.
5205
 
5206
Thu Apr  9 22:16:57 1998  Benjamin Kosnik  
5207
 
5208
        * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
5209
        * call.c (build_scoped_method_call): Check for TREE_CODE for
5210
        VOID_TYPE instead of type ==  void_type_node.
5211
        (build_method_call): Likewise.
5212
        * decl.c (lookup_name_real): Likewise.
5213
        (grokdeclarator): Likewise.
5214
        (start_decl): Likewise.
5215
        (grokparms): Likewise.
5216
        (start_function): Likewise.
5217
        (finish_function): Likewise.
5218
        (start_method): Likewise.
5219
 
5220
Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
5221
 
5222
        * lex.c (finput): New variable.
5223
        (init_cpp_parse):  Renamed from init_parse.
5224
        (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
5225
        (finish_parse): New function.
5226
        * cp-tree.h (init_lex, init_parse): Remove declarations.
5227
 
5228
Mon Apr  6 02:25:05 1998  Jason Merrill  
5229
 
5230
        * call.c (build_call): Still evaluate the actual argument.
5231
        * class.c (is_empty_class): Update for -fnew-abi.
5232
 
5233
        * decl2.c: -fnew-abi implies -fsquangle.
5234
 
5235
        * method.c (do_build_assign_ref): Don't do anything to copy
5236
        an empty class.
5237
        (do_build_copy_constructor): Likewise.
5238
        * call.c (build_over_call): Likewise.
5239
 
5240
Sat Apr  4 18:43:58 1998  Jason Merrill  
5241
 
5242
        * tree.c (avoid_overlap): Return a value.
5243
 
5244
Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
5245
 
5246
        * method.c (check_btype): Add missing argument to xrealloc.
5247
        (check_ktype): Likewise.
5248
 
5249
Fri Apr  3 02:22:59 1998  Jason Merrill  
5250
 
5251
        Implement empty base optimization.
5252
        * class.c (finish_struct_1): Add vbase fields earlier.  Set
5253
        CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
5254
        * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
5255
        (types_overlap_p): New fn.
5256
        * tree.c (avoid_overlap): New fn.
5257
        (build_base_fields): Use it to avoid overlapping empty bases.
5258
        * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
5259
 
5260
        * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
5261
 
5262
        Re-implement allocation of base class subobjects.
5263
        * tree.c (unshare_base_binfos): New fn.
5264
        (layout_basetypes): Use it.  Now handles offsets of both virtual and
5265
        non-virtual bases, after layout_type.
5266
        (layout_vbasetypes): Remove.
5267
        (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
5268
        (build_vbase_pointer_fields): Split out from old layout_basetypes.
5269
        * class.c (finish_base_struct): Lose offset handling code.
5270
        Move nonvdtor warning here.  Don't mess with t_binfo anymore.
5271
        (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
5272
        * cp-tree.h: Adjust.
5273
 
5274
Thu Apr  2 14:25:13 1998  Jason Merrill  
5275
 
5276
        * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
5277
        * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
5278
        * class.c (duplicate_tag_error): Likewise.
5279
        (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
5280
        * tree.c (layout_vbasetypes): Update from layout_record, remove
5281
        var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
5282
        (layout_basetypes): Likewise.
5283
 
5284
Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
5285
 
5286
        * class.c, Make sure system.h is included just after config.h.
5287
        Delete lingering stdio and errno references too.
5288
        * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
5289
 
5290
Wed Apr  1 15:38:36 1998  Jason Merrill  
5291
 
5292
        * friend.c (is_friend): Fix access control for local classes.
5293
 
5294
        * class.c (is_empty_class): New fn.
5295
        * call.c (build_call): Don't pass empty class objects to a function.
5296
 
5297
Wed Apr  1 14:58:35 1998  Mark Mitchell  
5298
 
5299
        * call.c (build_over_call): Do name resolution for default
5300
        arguments of function templates in the scope of the templates.
5301
 
5302
Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
5303
 
5304
        * call.c: Include system.h.  Remove includes, declarations and
5305
        defines provided by system.h.
5306
        * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
5307
        * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
5308
        * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
5309
        * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
5310
        * typeck2.c, xref.c: Likewise.
5311
        * Makefile.in: Dependencies updated as appropriate.
5312
        * Make-lang.in: Likewise.
5313
 
5314
Mon Mar 30 12:15:00 1998  Mark Mitchell  
5315
 
5316
        * pt.c (fn_type_unification): Allow incomplete unification without
5317
        an immediate error message.
5318
 
5319
Mon Mar 30 08:55:42 1998  Jason Merrill  
5320
 
5321
        * tree.c (member_p): New fn.
5322
        * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
5323
        initializing class members.
5324
 
5325
        * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
5326
        * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
5327
 
5328
        * call.c (build_method_call): Handle non-scoped destructors, too.
5329
        * pt.c (tsubst_copy): Likewise.
5330
 
5331
        * pt.c (print_template_context): Split out...
5332
        (push_tinst_level): ...from here.
5333
 
5334
        * friend.c (is_friend): Don't pass a type to decl_function_context.
5335
 
5336
        * typeck.c (convert_for_initialization): Always hand off
5337
        conversions to class type.
5338
 
5339
Sun Mar 29 20:01:59 1998  Jason Merrill  
5340
 
5341
        * friend.c (is_friend): Local classes have the same access as the
5342
        enclosing function.
5343
 
5344
Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
5345
 
5346
        * typeck.c (expand_target_expr): Delete dead function.
5347
 
5348
        * search.c: Put various prototypes inside #ifdef MI_MATRIX.
5349
 
5350
        * repo.c (save_string): Delete dead function.
5351
 
5352
        * method.c (thunk_printable_name): Delete dead function.
5353
 
5354
        * lex.c (yynextch): Delete dead function.
5355
 
5356
        * expr.c (tree_extract_aggr_init): #if 0 out.
5357
 
5358
        * except.c (do_unwind): Delete dead function.
5359
        (easy_expand_asm): Likewise.
5360
 
5361
        * cvt.c (build_conversion_type_1): Delete dead function.
5362
 
5363
        * cp-tree.h (push_expression_obstack): Declare.
5364
 
5365
        * call.c (source_type): #if 0 out.
5366
 
5367
        * class.c (alter_access): Remove unused label.  Add braces
5368
        around empty else clause.
5369
 
5370
        * lex.c (yyprint): Fix argument to printf.
5371
 
5372
Sat Mar 28 17:43:52 1998  Mark Mitchell  
5373
 
5374
        * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
5375
 
5376
        * pt.c (instantiate_class_template): Make sure template
5377
        arguments are permanent.
5378
        * init.c (resolve_offset_ref): Don't go looking around in
5379
        template types.
5380
 
5381
        * semantics.c: Add routines to handle expressions, and some
5382
        declaration processing.
5383
        * parse.y: Use them.
5384
        (current_class_depth): Move declaration to cp-tree.h.
5385
        * parse.c: Regenerated.
5386
        * cp-tree.h: Use them.
5387
        (current_class_depth): Declare.
5388
        * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
5389
 
5390
Fri Mar 27 20:23:18 1998  Mark Mitchell  
5391
 
5392
        * error.c (dump_decl): Be a bit more explicit with template
5393
        type arguments, when verbose.
5394
 
5395
Fri Mar 27 18:16:40 1998  Jason Merrill  
5396
 
5397
        * inc/exception: Reorder closing braces.
5398
 
5399
Fri Mar 27 13:22:18 1998  Mark Mitchell  
5400
 
5401
        * pt.c (redeclare_class_template): New function.
5402
        * cp_tree.h (redeclare_class_template): Declare it.
5403
        * decl.c (xref_tag): Use it.
5404
 
5405
Thu Mar 26 11:16:30 1998  Jason Merrill  
5406
 
5407
        * call.c (build_over_call): Check IS_AGGR_TYPE, not
5408
        TYPE_LANG_SPECIFIC.
5409
        * typeck.c (convert_arguments): Likewise.
5410
 
5411
        * decl.c (grokdeclarator): Remove const and volatile from type after
5412
        setting constp and volatilep.
5413
 
5414
        * class.c (finish_struct_1): Don't warn about bool bitfield larger
5415
        than one bit.
5416
 
5417
Thu Mar 26 10:25:52 1998  Mark Mitchell  
5418
 
5419
        * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
5420
 
5421
Thu Mar 26 10:24:05 1998  Mark Mitchell  
5422
 
5423
        * call.c (build_object_call): Complain about ambiguous operator(),
5424
        rather that crashing.
5425
        (build_new_op): Likewise.
5426
        (build_op_delete_call): Likewise.
5427
 
5428
Thu Mar 26 10:23:24 1998  Mark Mitchell  
5429
 
5430
        * cvt.c (perform_qualification_conversions): Use comp_target_types
5431
        instead of comp_ptr_ttypes.
5432
 
5433
Wed Mar 25 16:10:50 1998  Mark Mitchell  
5434
 
5435
        * cp-tree.h (enforce_access): Declare.
5436
        * call.c (enforce_access): Make it extern, not static.
5437
        * class.c (alter_access): Use enforce_access; modify code for ISO
5438
        compliance, rather than ARM rules.
5439
 
5440
Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  
5441
 
5442
        * cp-tree.h: Fix typo.
5443
 
5444
Wed Mar 25 02:01:02 1998  Jason Merrill  
5445
 
5446
        * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
5447
        if (aggregate_value_p (type)).
5448
 
5449
        * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
5450
 
5451
Tue Mar 24 16:12:01 1998  Mark Mitchell  
5452
 
5453
        * tree.c (mapcar): When dealing with a DECL, use it's constant
5454
        value, if any.
5455
        * pt.c (lookup_template_class): Don't mangle the names of template
5456
        classes whose arguments are unknown.
5457
 
5458
        * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
5459
 
5460
Tue Mar 24 12:21:55 1998  Benjamin Kosnik  
5461
 
5462
        * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
5463
 
5464
Tue Mar 24 12:21:48 1998  Jim Wilson  
5465
 
5466
        * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
5467
        boolean_type_node to 1.
5468
 
5469
Tue Mar 24 10:23:47 1998  Mark Mitchell  
5470
 
5471
        * error.c (dump_expr): Remove unused variable `l'.
5472
 
5473
        * pt.c (for_each_template_parm): New function, created by
5474
        converting uses_template_parms.
5475
        (tree_fn_t): New typedef.
5476
        (uses_template_parms): Use it.
5477
        (mark_template_parm): New function.
5478
        (push_template_decl): Check that the argument list of a partial
5479
        specialization uses all the template parameters.
5480
 
5481
        * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
5482
        with it; we might want it for debugging.
5483
        * cp-tree.h (type_unification): Change interface.
5484
        * class.c (finish_struct_1): Skip nested template types, just like
5485
        ordinary nested types.
5486
        (instantiate_type): Use new interface to type_unification.
5487
        * lex.c (init_lex): Add __sz as opname for sizeof.
5488
        * method.c (build_overload_scope_ref): New function.
5489
        (build_overload_int): Handle complex expressions.  Set
5490
        numeric_output_need_bar if necessary.
5491
        (build_overload_value): Handle non-PARM_DECL nodes; this
5492
        routine is now used by build_overload_int.  Remove some
5493
        assignments to numeric_output_need_bar.  Use
5494
        build_overload_scope_ref.
5495
        (build_qualified_name): Note that some template mangled names end
5496
        with digits, and set numeric_output_need_bar appropriately.  Use
5497
        build_underscore_int.
5498
        * pt.c (unify): Change interface.
5499
        (type_unification_real): Likewise.
5500
        (determine_specialization): Use new interfaces.
5501
        (tsubst): Deal gracefully with situations in which the argument
5502
        vector is not fully filled.
5503
        (fn_type_unification): Use new interfaces.
5504
        (type_unification): Likewise.  Remove NOP_EXPR hack.
5505
        (type_unification_real): Likewise.
5506
        (unify): Likewise.  Deal with unification of complex expressions.
5507
 
5508
Mon Mar 23 12:24:37 1998  Jason Merrill  
5509
 
5510
        * pt.c (complete_template_args): Initialize skip properly.
5511
 
5512
        * decl.c (make_typename_type): Revert.
5513
        (make_implicit_typename): Remove.
5514
        (lookup_name_real): Don't call it.  Call lookup_field if we see a
5515
        TYPE_DECL from a template base.
5516
        * search.c (lookup_field): Do implicit typename stuff.
5517
 
5518
Sun Mar 22 00:50:42 1998  Nick Clifton  
5519
                          Geoff Noer    
5520
 
5521
        * Makefile.in: Various fixes for building cygwin32 native toolchains.
5522
        * Make-lang.in: Likewise.
5523
 
5524
Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  
5525
 
5526
        * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
5527
 
5528
Fri Mar 20 10:42:07 1998  Jason Merrill  
5529
 
5530
        * decl.c (make_implicit_typename): Rewrite removed code.
5531
        (make_typename_type): Call it if the type we look up comes from
5532
        a base that uses template parms.
5533
 
5534
        * pt.c (complete_template_args): Rewrite.
5535
        (tsubst, FUNCTION_DECL): Use it.
5536
 
5537
Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
5538
 
5539
        * semantics.c (finish_asm_stmt): Fix combine strings.  Call
5540
        c_expand_asm_operands () if output_operands, input_operands or
5541
        clobbers is not NULL_TREE.
5542
 
5543
Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  
5544
 
5545
        * pt.c (complete_template_args): New function.
5546
        (get_bindings): Deal with specializations of function templates
5547
        with return type containing parameters from outer class
5548
        templates.
5549
        (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
5550
        substitute arguments and compose a new type.
5551
 
5552
Thu Mar 19 19:01:48 1998  Mark Mitchell  
5553
 
5554
        * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
5555
        FUNCTION_DECLs.
5556
 
5557
Thu Mar 19 11:51:58 1998  Jason Merrill  
5558
 
5559
        * decl.c (make_implicit_typename): Lose useless code.
5560
 
5561
        * call.c (standard_conversion): Handle A* -> const A* properly.
5562
 
5563
        * pt.c (get_bindings_real): Rename from get_bindings.  Add
5564
        check_rettype parm.
5565
        (get_bindings): Pass 1.
5566
        (get_bindings_overload): Pass 0.
5567
 
5568
Wed Mar 19 09:08:12 1998  Mark Mitchell  
5569
 
5570
        * pt.c (check_explicit_specialization): When reverting a static
5571
        member function, also remove the `this' parameter from
5572
        last_function_parms.
5573
 
5574
Thu Mar 19 02:27:48 1998  Jason Merrill  
5575
 
5576
        * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
5577
        a function context.
5578
 
5579
        * decl.c (store_bindings): Use free_binding_vecs.
5580
        (pop_from_top_level): Likewise.
5581
 
5582
Wed Mar 18 12:41:43 1998  Jason Merrill  
5583
 
5584
        * decl.c (make_implicit_typename): Only change the type of a
5585
        TYPENAME_TYPE.
5586
 
5587
Wed Mar 18 10:09:51 1998  Mark Mitchell  
5588
 
5589
        * semantics.c: New file, containing routines to perform the
5590
        semantic phase of parsing.
5591
        * parse.y: Use it.
5592
        * pt.c (tsubst_expr): Likewise.
5593
        * cp-tree.h: Declare the various functions in semantics.c.
5594
        Provide macros to access _STMT tree nodes.
5595
        * cp-tree.def: Add ASM_STMT tree node.
5596
        * Makefile.in, Make-lang.in: Add dependencies on and for
5597
        semantics.c.
5598
 
5599
Wed Mar 18 00:24:10 1998  Jason Merrill  
5600
 
5601
        * pt.c (push_template_decl): Only check primary templates.
5602
 
5603
        * pt.c (check_explicit_specialization): Complain about default args
5604
        in explicit specialization.
5605
 
5606
        * parse.y (nomods_initdcl0): Also call cp_finish_decl for a
5607
        constructor_declarator.
5608
 
5609
Tue Mar 17 14:44:54 1998  Mark Mitchell  
5610
 
5611
        * typeck2.c (build_x_arrow): Don't crash when an aggregate type
5612
        has no overloaded operator ->.
5613
 
5614
        * call.c (build_field_call): Don't crash when presented with a
5615
        field that is actually a nested type.
5616
 
5617
        * decl.c (pushtag): Deal with friend class injection in local
5618
        classes.
5619
 
5620
        * call.c (build_object_call): Don't crash if OBJ is a
5621
        pointer-to-member-function.
5622
 
5623
Tue Mar 17 11:40:26 1998  Jason Merrill  
5624
 
5625
        * pt.c (push_template_decl): Complain about template with C linkage,
5626
        anonymous template class.
5627
 
5628
Mon Mar 16 12:10:39 1998  Jason Merrill  
5629
 
5630
        * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
5631
        * search.c: Likewise.
5632
 
5633
        * lex.c (do_pending_defargs): Only call
5634
        maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
5635
 
5636
        * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
5637
 
5638
Mon Mar 16 10:47:22 1998  Mark Mitchell  
5639
 
5640
        * parse.y: Deal with CONSTRUCTORS in new_initializers.
5641
 
5642
Mon Mar 16 10:54:21 1998  Mark Mitchell  
5643
 
5644
        * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
5645
        closely mimics the behavior in parse.y.
5646
        (tsubst_expr): Return the resulting BLOCK when making a tsubst'ing
5647
        into a compound statement.
5648
 
5649
Sun Mar 15 02:07:26 1998  Jason Merrill  
5650
 
5651
        * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
5652
        * pt.c (inline_needs_template_parms): New fn.
5653
        (original_template): New fn.
5654
        (push_inline_template_parms_recursive): New fn.
5655
        (maybe_begin_member_template_processing): Use them.
5656
        (maybe_end_member_template_processing): Likewise.
5657
        (is_member_or_friend_template): Rename to is_member_template.
5658
        Member functions of local classes are never member templates.
5659
 
5660
Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  
5661
 
5662
        * lex.c (do_identifier): Handle TEMPLATE_DECL that was
5663
        added in the class scope to catch redefinition error.
5664
 
5665
        * pt.c (reduce_template_parm_level): Also copy
5666
        the DECL_TEMPLATE_PARMS field.
5667
 
5668
Sun Mar 15 10:54:08 1998  Mark Mitchell  
5669
 
5670
        * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
5671
        reduced-level template type parameter.
5672
 
5673
Sun Mar 15 12:26:02 1998  Manfred Hollstein  
5674
 
5675
        * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
5676
        (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
5677
        * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
5678
        * decl.c (duplicate_decls): Propagate it.
5679
        * typeck2.c (abstract_virtuals_error): Use two loops to emit
5680
        abstract virtual functions and virtual functions which need a
5681
        final overrider separately.
5682
 
5683
Thu Mar 12 09:39:40 1998  Manfred Hollstein  
5684
 
5685
        * lang-specs.h: Properly put brackets around array elements in
5686
        initializer.
5687
 
5688
        * typeck.c (build_binary_op_nodefault): Correctly place parens around
5689
        && and || in expression.
5690
 
5691
Thu Mar 12 09:26:04 1998  Manfred Hollstein  
5692
 
5693
        * call.c (default_parm_conversions): Remove prototype definition.
5694
        (build_method_call): Remove unused variable result.
5695
 
5696
        * cvt.c (ocp_convert): Remove unused variable conversion.
5697
 
5698
        * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
5699
 
5700
        * except.c (do_unwind): #if 0 definition of unused variables fcall
5701
        and next_pc.
5702
 
5703
        * expr.c (extract_scalar_init): #if 0 prototype and function
5704
        definition.
5705
 
5706
        * init.c (expand_aggr_init_1): Remove unused variable init_type.
5707
        (build_new_1): Remove unused variable t.
5708
 
5709
        * pt.c (instantiate_class_template): Remove unused variable newtag;
5710
        cast called function return value to void.
5711
        (do_decl_instantiation): Remove unused variables name and fn.
5712
 
5713
        * tree.c (get_type_decl): Add default return to shut up compiler from
5714
        complaining control reaches end of non-void function.
5715
 
5716
        * typeck.c (build_x_conditional_expr): Remove unused variable rval.
5717
 
5718
Thu Mar 12 09:12:15 1998  Manfred Hollstein  
5719
 
5720
        * call.c (default_parm_conversions): Remove prototype definition.
5721
        (build_method_call): Remove unused variable result.
5722
        (build_over_call): Add default case in enumeration switch.
5723
 
5724
Thu Mar 12 08:39:13 1998  Manfred Hollstein  
5725
 
5726
        * decl2.c (lang_decode_option): Change j's type to size_t.
5727
 
5728
        * tree.c (layout_vbasetypes): record_align and desired_align are of
5729
        type unsigned int; const_size and nonvirtual_const_size likewise.
5730
 
5731
Wed Mar 11 07:25:20 1998  Mark Mitchell  
5732
 
5733
        * parse.y (new_initializer): Make sure all initializers are
5734
        lists.
5735
 
5736
Tue Mar 10 07:32:36 1998  Mark Mitchell  
5737
 
5738
        * decl2.c (import_export_decl): Mark tinfo functions for
5739
        cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
5740
 
5741
Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
5742
 
5743
        * method.c: Fix typo.
5744
 
5745
Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  
5746
 
5747
        * method.c: Include "system.h" to get stdlib.h, stdio.h,
5748
        ctype.h, string.h, etc.
5749
        (issue_nrepeats): Add default case in enumeration switch.
5750
        (check_btype): Likewise.
5751
        (process_overload_item): Likewise.
5752
 
5753
        * Makefile.in (method.o): Depend on system.h.
5754
 
5755
Wed Mar  4 22:26:53 1998  Andreas Schwab  
5756
 
5757
        * lex.c (do_scoped_id): Fix parenthesizing.
5758
 
5759
Wed Mar  4 12:11:53 1998  Michael Tiemann  
5760
 
5761
        * rtti.c (get_tinfo_fn_dynamic): If this function is called an
5762
        FLAG_RTTI is unset, initialize type info machinery and continue
5763
        with FLAG_RTTI enabled.
5764
        (get_typeid): Likewise.
5765
 
5766
Wed Mar  4 11:47:55 1998  Jason Merrill  
5767
 
5768
        * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
5769
        from B.
5770
 
5771
Wed Mar  4 11:28:08 1998  Mark Mitchell  
5772
 
5773
        * pt.c (finish_member_template_decl): Deal more gracefully with
5774
        invalid declarations.
5775
 
5776
Tue Mar  3 01:38:17 1998  Jason Merrill  
5777
 
5778
        * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
5779
        cp-tree.h: Clean up more old overloading code, old RTTI code, and
5780
        some formatting quirks.
5781
 
5782
        * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
5783
        method.c, pt.c, ptree.c, typeck.c: Remove support for
5784
        -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
5785
        * class.h: Remove.
5786
        * Makefile.in: Adjust.
5787
 
5788
        * pt.c (unify): Don't allow reduced cv-quals when strict.
5789
 
5790
        * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
5791
        *type_unification* and unify.
5792
 
5793
Mon Mar  2 12:11:06 1998  Jason Merrill  
5794
 
5795
        * parse.y (explicit_template_type): Remove TEMPLATE keyword.
5796
        (nested_name_specifier): And add it before this use.
5797
        (typename_sub0): And this use.  Also add use without the keyword.
5798
        (typename_sub1): Likewise.
5799
        * pt.c (instantiate_class_template): Don't actually instantiate
5800
        anything if our type uses template parms.
5801
 
5802
Mon Mar  2 11:04:59 1998  Jim Wilson  
5803
 
5804
        * decl.c (start_function): Don't call temporary_allocation for a
5805
        nested function.
5806
 
5807
Sun Mar  1 21:06:37 1998  Jason Merrill  
5808
 
5809
        * pt.c (instantiate_class_template): Don't mess with friends if
5810
        our type uses template parms.
5811
 
5812
Sat Feb 28 12:06:44 1998  Jason Merrill  
5813
 
5814
        * parse.y (nested_name_specifier): Use explicit_template_type.
5815
        (typename_sub): Allow a template_type, an explicit_template_type,
5816
        or an implicit template type at the end.
5817
        * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
5818
        * decl.c (make_typename_type): Handle template-id where the name
5819
        is a TEMPLATE_DECL.
5820
        * call.c (build_scoped_method_call): Handle member template
5821
        destructor call.
5822
        * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
5823
        destructor is represented by the type.
5824
 
5825
        * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
5826
        * parse.y (nested_name_specifier): Add 'template' case.
5827
        (explicit_template_type): New rule.
5828
        (typename_sub): Use it.
5829
        * decl.c (make_typename_type): Handle getting a template-id for NAME.
5830
        * pt.c (tsubst): Likewise.
5831
 
5832
Fri Feb 27 11:17:50 1998  Jason Merrill  
5833
 
5834
        * pt.c (add_to_template_args): Fix thinko.
5835
        (instantiate_class_template): Call it later.
5836
 
5837
        * pt.c (get_class_bindings): Add outer_args parm.
5838
        (most_specialized_class): Likewise.
5839
        (instantiate_class_template): Pass it.
5840
        (more_specialized_class): Likewise.
5841
        (lookup_template_class): Get context from template if none
5842
        was specified.
5843
        (finish_member_template_decl): Don't do anything with a
5844
        partial specialization.
5845
        * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
5846
        AGGREGATE_TYPE_P.
5847
        * class.c (finish_struct): Member class templates have already been
5848
        checked for name clashes.
5849
        * decl.c (pushdecl_with_scope): Handle pushing at class level.
5850
 
5851
Fri Feb 27 02:25:16 1998  Jason Merrill  
5852
 
5853
        * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
5854
        (tsubst, *_PARM): Support multiple levels of template classes.
5855
        (instantiate_class_template): Look up the pattern from the
5856
        original template.
5857
        (lookup_template_class): Handle getting a template for d1.
5858
        (push_template_decl): Correct setting of 'primary'.
5859
        (reduce_template_parm_level): Add 'levels' parm.
5860
        (finish_member_template_decl): Support member class templates.
5861
        (template_class_depth): Handle multiple levels.
5862
        * parse.y (component_decl_1, fn.def2): Remove member template case.
5863
        (component_decl): Add member template cases.
5864
        * decl2.c (check_member_template): We now handle member template
5865
        classes.
5866
        * decl.c (pushtag): Handle member templates.
5867
        * method.c (do_inline_function_hair): Don't touch
5868
        IDENTIFIER_GLOBAL_VALUE.
5869
        * init.c (build_offset_ref): If name isn't an identifier, just
5870
        return it.
5871
        * spew.c (yylex): Handle PTYPENAME like TYPENAME.
5872
 
5873
        * typeck.c (get_delta_difference): Do adjust for conversions to
5874
        and from virtual base.
5875
 
5876
Wed Feb 25 09:51:29 1998  Jason Merrill  
5877
 
5878
        * typeck.c (get_delta_difference): Give hard error for conversion
5879
        from virtual base.
5880
 
5881
        * cp-tree.h: Tweak formatting.
5882
 
5883
Wed Feb 25 00:35:33 1998  Jason Merrill  
5884
 
5885
        * decl.c (push_namespace): Handle redeclaration error.
5886
 
5887
        * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
5888
        (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
5889
        (NAMESPACE_BINDING): New macro.
5890
        (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
5891
        * *.c: Use them.
5892
 
5893
        * pt.c (push_template_decl): Use innermost_args.
5894
 
5895
        * decl.c (get_unique_name): Tweak from earlier in the name.
5896
 
5897
Tue Feb 24 22:15:04 1998  Martin von Löwis  
5898
 
5899
        * cp-tree.def: Add CPLUS_BINDING node.
5900
        * cp-tree.h (tree_binding): New struct.
5901
        (BINDING_SCOPE, BINDING_VALUE): New macros.
5902
        (current_namespace, global_namespace): Declare extern.
5903
        (struct lang_decl_flags): New field in_namespace.
5904
        (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): New macros.
5905
        (DECL_NAMESPACE, SET_DECL_NAMESPACE): New macros.
5906
        (TREE_INDIRECT_USING): New macro.
5907
        * decl2.c (current_namespace, global_namespace): Declare.  The
5908
        value is a NAMESPACE_DECL now, not a TREE_LIST.
5909
        (is_namespace_ancestor, namespace_ancestor): New static functions.
5910
        (add_using_namespace, ambiguous_decl): Likewise.
5911
        (lookup_using_namespace): New support function for lookup_name.
5912
        (qualified_lookup_using_namespace): New support function for
5913
        do_scoped_id and lookup_namespace_name.
5914
        (get_namespace_id): Mark as obsolete.
5915
        (current_namespace_id): Likewise.
5916
        (do_namespace_alias): Implement.
5917
        (do_using_directive): Implement as call to add_using_namespace.
5918
        * decl.c (binding_for_name): New function.
5919
        (push_namespace, pop_namespace): Implement.
5920
        (push_decl): Don't install a FUNCTION_DECL in the global branch.
5921
        (lookup_namespace_name): Implement using qualified lookup.
5922
        (lookup_name_real): For global scoping, lookup in
5923
        global_namespace.  For namespace scoping, lookup in given
5924
        namespace.  For unscoped lookup, iterate over namespace,
5925
        considering using directives.
5926
        (init_decl_processing): Initialize global_namespace.
5927
        (grokvardecl): Build assembler name as static name for globals.
5928
        (grokdeclarator): Remove old namespace mangling.
5929
        (xref_tag): When installing a global binding for the
5930
        tag, make sure we have an identifier.
5931
        * method.c (build_overload_nested_name): Mangle namespaces.
5932
        (build_qualified_name): Likewise.
5933
        (build_decl_overload_real): Likewise.
5934
        * lex.c (build_lang_decl): Set namespace for new declaration to
5935
        current_namespace.
5936
        (do_scoped_id): Find global names in global or current
5937
        namespace, or using qualified namespace lookup, depending on
5938
        context.
5939
        * init.c (build_member_call): When scope is namespace, use
5940
        build_x_function_call instead.
5941
        (build_offset_ref): When scope is namespace, collapse processing
5942
        to lookup_namespace_name instead.
5943
        * error.c (dump_decl): Support NAMESPACE_DECL.
5944
        * decl.c (pushdecl): Bind globals to current namespace.
5945
        (push_overloaded_decl): Likewise.
5946
        (lookup_tag): Likewise.
5947
        (lookup_name_current_level): Likewise.
5948
        (xref_tag): Likewise.
5949
        (start_function): Likewise.
5950
        * lex.c (do_identifier): Likewise.
5951
        (identifier_typedecl_value): Likewise.
5952
        (real_yylex): Likewise.
5953
        * method.c (do_inline_function_hair): Likewise.
5954
        * parse.y (unscoped): Likewise.
5955
        * pt.c (check_explicit_specialization): Likewise.
5956
        (lookup_template_class): Likewise.
5957
        * rtti.c (call_void_fn): Likewise.
5958
        * sig.c (build_sigtable): Likewise.
5959
        * ptree.c (lang_print_xnode): New function.
5960
 
5961
Tue Feb 24 01:40:24 1998  Jason Merrill  
5962
 
5963
        * pt.c (instantiate_class_template): Don't instantiate if pedantic
5964
        and the args use template parms.
5965
 
5966
        * pt.c (push_tinst_level): If the instantiation uses template parms,
5967
        fail silently.
5968
        * decl.c (xref_basetypes): Do call complete_type for basetypes
5969
        that involve template parameters.
5970
 
5971
Tue Feb 24 00:36:43 1998  Jason Merrill  
5972
 
5973
        * typeck2.c (process_init_constructor): Fix labeled init check.
5974
 
5975
Mon Feb 23 05:08:55 1998  Jason Merrill  
5976
 
5977
        * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
5978
        argument to tsubst and friends.
5979
 
5980
        * pt.c (tsubst, FUNCTION_DECL): Tidy.
5981
 
5982
        * typeck.c (build_x_function_call): Handle static member function
5983
        templates like non-templates.  Handle friend templates like normal
5984
        function templates.
5985
        * pt.c (tsubst, *_PARM): Don't use orig_level.
5986
        (get_bindings): Don't call add_to_template_args.
5987
        (instantiate_template): Likewise.
5988
        (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
5989
        * ptree.c (print_lang_type): Print index/level for template parms.
5990
 
5991
Mon Feb 23 02:52:29 1998  Mark Mitchell  
5992
 
5993
        * Make-lang.in (cc1plus): Note that cc1plus depends on
5994
        cp/cp-tree.h and cp/cp-tree.def.
5995
 
5996
        * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
5997
        (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
5998
        position in a template parameter list.
5999
        * cp-tree.h (template_parm_index): New structure, used as the tree
6000
        structure for a TEMPLATE_PARM_INDEX.
6001
        (TEMPLATE_PARM_IDX): New macro.
6002
        (TEMPLATE_PARM_LEVEL): Likewise.
6003
        (TEMPLATE_PARM_DESCENDANTS): Likewise.
6004
        (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
6005
        (TEMPLATE_PARM_DECL): Likewise.
6006
        (TEMPLATE_TYPE_PARM_INDEX): Likewise.
6007
        (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
6008
        (TEMPLATE_TYPE_DECL): Likewise.
6009
        (TEMPLATE_CONST_IDX): Remove.
6010
        (TEMPLATE_CONST_LEVEL): Likewise.
6011
        (TEMPLATE_CONST_SET_INFO): Likewise.
6012
        (TEMPLATE_TYPE_SET_INFO): Likewise.
6013
        (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
6014
        node.
6015
        (TEMPLATE_TYPE_LEVEL): Likewise.
6016
        * decl.c (decls_match): Call comp_template_parms, rather than
6017
        expanding it inline.
6018
        (duplicate_decls): If two template declarations are being merged,
6019
        then their TEMPLATE_INFOs should be merged as well.
6020
        (grokfndecl): Save template-id information when declaring a friend
6021
        with explicit template arguments.  Pass arguments to
6022
        check_explicit_specialization via correct convention; at some
6023
        point check_explicit_specialization changed, but these call-sites
6024
        did not.
6025
        (grokdeclarator): Tidy up slightly.
6026
        * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
6027
        two template functions with the same DECL_ASSEMBLER_NAME the same,
6028
        since the names are not yet mangled.
6029
        * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
6030
        TEMPLATE_CONST_PARM.
6031
        (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
6032
        decl for a non-type parameter, rather than printing `'.
6033
        * friend.c (is_friend): Handle TEMPLATE_DECL friends.
6034
        (do_friend): Deal with template friends.
6035
        * lex.c (do_pending_inlines): Call
6036
        maybe_begin_member_template_processing, rather than
6037
        conditionally calling begin_member_template_processing.
6038
        (process_next_inline): Likewise.  Call
6039
        maybe_end_member_template_processing, rather than
6040
        conditionally calling end_member_template_processing.
6041
        (do_pending_defargs): Likewise.
6042
        (do_identifier): Use TEMPLATE_PARM_INDEX instead of
6043
        TEMPLATE_CONST_PARM.
6044
        * method.c (build_mangled_template_parm_index): New function.
6045
        (build_overload_value): Use it.
6046
        (build_overload_name): Likewise.
6047
        * pt.c (finish_member_template_decl): Allow friend declarations.
6048
        (template_class_depth): New function.
6049
        (is_member_template): Rename, and modify, to become...
6050
        (is_member_or_friend_template): New function.
6051
        (end_member_template_processing): Rename, and modify, to become...
6052
        (maybe_end_member_template_processing).
6053
        (build_template_parm_index): New function.
6054
        (reduce_template_parm_level): New function.
6055
        (process_template_parm): Modify to use build_template_parm_index.
6056
        (push_template_decl): Deal with friend templates.
6057
        (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
6058
        TEMPLATE_CONST_PARM.
6059
        (tsubst_friend_function): New function.
6060
        (instantiate_class_template): Generate the DECL_FRIENDLIST
6061
        for a new instantiation by using tsubst_friend_function rather
6062
        than just tsubst.
6063
        (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
6064
        Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
6065
        appropriate new macros.  Use reduce_template_parm_level to
6066
        generate lower-level template parameters.  Handle tsubst'ing into
6067
        TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
6068
        to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
6069
        templates.  Similarly for the template parameters for a new
6070
        template.
6071
        (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
6072
        of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
6073
        (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
6074
        (get_bindings): Call add_to_template_args if necessary.
6075
        (instantiate_decl): Handle instantiations of friend templates.
6076
        * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
6077
        TEMPLATE_TYPE_PARM as a list of fields; it's not!
6078
        * spew.c (yylex): Do a little manual constant propagation to
6079
        clarify the code.
6080
 
6081
Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
6082
 
6083
        * error.c: Include sys/types.h.
6084
 
6085
Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
6086
 
6087
        * method.c (build_mangled_name): Start CPP directives in column zero.
6088
 
6089
Thu Feb 19 10:36:48 1998  Jason Merrill  
6090
 
6091
        * typeck2.c (process_init_constructor): Sorry about non-trivial
6092
        labeled initializers.
6093
        * parse.y (initlist): Re-enable labeled initializers.
6094
 
6095
Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  
6096
 
6097
        * pt.c (coerce_template_parms): Add a new parameter, is_tmpl_parm,
6098
        all callers changed.  Rely on the new parameter instead of arg
6099
        being a TREE_LIST when determine whether we are working inside
6100
        template template parameter.  Clean up is_type test.
6101
 
6102
Thu Feb 19 10:04:12 1998  Jason Merrill  
6103
 
6104
        * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
6105
        * typeck2.c (initializer_constant_valid_p): Allow conversions
6106
        between pointers and references.
6107
 
6108
1998-02-19  Brendan Kehoe  
6109
 
6110
        * typeck.c (build_unary_op): Only warn about incr/decr a pointer
6111
        if pedantic || warn_pointer_arith.
6112
 
6113
Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  
6114
 
6115
        * pt.c (unify): Handle TEMPLATE_DECL.
6116
 
6117
1998-02-18  Brendan Kehoe  
6118
 
6119
        * cp-tree.h (strip_attrs): Remove decl.
6120
 
6121
1998-02-18  Doug Evans  
6122
 
6123
        * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
6124
        Update olddecl's attributes too.
6125
        (strip_attrs): Remove function.
6126
        * typeck.c (common_type): Call merge_machine_type_attributes.
6127
 
6128
Tue Feb 17 14:07:52 1998  Mark Mitchell  
6129
 
6130
        * parse.y (initdcl0_innards): New grammar symbol.
6131
        (nomods_initdecls, nomods_initdcl0): Change type from itype to
6132
        none, since the resulting value is never used.
6133
        (parse_decl): New function.
6134
        (datadef): Remove redundant actions.
6135
        (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
6136
        * parse.c: Regenerated.
6137
 
6138
Tue Feb 17 11:54:16 1998  Jason Merrill  
6139
 
6140
        * parse.y (simple_stmt): Use getdecls() to check for decl.
6141
 
6142
Sat Feb 14 11:50:51 1998  Manfred Hollstein  
6143
 
6144
        * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New
6145
        macros.
6146
        (c++.install-common): Install c++filt properly as native or as cross
6147
        variant.
6148
        (c++.uninstall): Add c++filt.
6149
 
6150
Fri Feb 13 14:55:37 1998  Jason Merrill  
6151
 
6152
        * call.c (standard_conversion): Fix multi-level ptr conversions.
6153
 
6154
Fri Feb 13 14:06:22 1998  Mike Stump  
6155
 
6156
        * init.c (build_new): Propagate error_mark_node up.
6157
 
6158
Fri Feb 13 13:24:32 1998  Jason Merrill  
6159
 
6160
        * parse.y (simple_stmt): If the condition isn't a declaration,
6161
        start the controlled block after the test.
6162
 
6163
Fri Feb 13 02:26:10 1998  Andreas Schwab  
6164
 
6165
        * call.c (build_over_call): Convert builtin abs, labs and fabs to
6166
        tree-codes.
6167
        * decl.c (init_decl_processing): Re-enable abs, labs and fabs as
6168
        builtins.
6169
 
6170
Fri Feb 13 01:36:42 1998  Jason Merrill  
6171
 
6172
        * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
6173
 
6174
Fri Feb 13 00:21:59 1998  Jason Merrill  
6175
 
6176
        * cp-tree.h: Add access_protected_virtual_node.
6177
        * class.c (init_class_processing): Initialize it.
6178
        * decl.c (xref_basetypes): Use it.
6179
        * parse.y (base_class_access_list): Likewise.
6180
 
6181
        * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
6182
        (c++.install-common): Install c++filt.
6183
 
6184
Thu Feb 12 12:46:51 1998  Benjamin Kosnik  
6185
 
6186
        * decl.c (shadow_tag): Give error for typedef-ing built-in types.
6187
 
6188
Wed Feb 11 23:28:05 1998  Mark Mitchell  
6189
 
6190
        * call.c (reference_binding): Use comptypes when comparing
6191
        TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
6192
 
6193
Wed Feb 11 16:42:04 1998  Mark Mitchell  
6194
 
6195
        * tree.c (is_overloaded_fn): Use really_overloaded_fn.
6196
        (really_overloaded_fn): Move check here from is_overloaded_fn.
6197
        (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
6198
 
6199
Wed Feb 11 15:54:18 1998  Mark Mitchell  
6200
 
6201
        * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
6202
        conversions.
6203
 
6204
Mon Feb  9 22:23:31 1998  Mark Mitchell  
6205
 
6206
        * cp-tree.h (push_template_decl): Return the decl passed in, or an
6207
        equivalent duplicate.
6208
        * decl.c (pushtag): Use the return value from push_template_decl.
6209
        (duplicate_decls): When duplicating a template declaration, merge
6210
        the DECL_TEMPLATE_RESULTs as well.
6211
        (make_implicit_typename): Don't try to dive into typename types to
6212
        find a context for making a new implicit typename.
6213
        (start_decl): Use the return value from push_template_decl.
6214
        (grokdeclarator): Complain about declarations list `const operator
6215
        int'.  Since we don't correctly handle in-class initializations of
6216
        non-static data members, complain about this (now illegal)
6217
        practice.  Issue an error for initializations of non-const statics
6218
        since that is illegal as well, and since we don't handle that case
6219
        correctly either.
6220
        (start_function): Use the return value from push_template_decl.
6221
        (start_method): Likewise.
6222
        * decl2.c (grokfield): Likewise.  Since the change to
6223
        grokdeclarator ensures that all initialized fields are in fact
6224
        static, remove a redundant test for TREE_PUBLIC.
6225
        * parse.y (initlist): Disable labeled initializers since they do
6226
        not work as per the documentation, and since they do not use the
6227
        same syntax as the C front end.
6228
        * pt.c (push_template_decl): Return the decl passed in, or an
6229
        equivalent duplicate.
6230
        (lookup_template_class): When searching in a nested context,
6231
        use the right arguments.
6232
        (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
6233
        * typeck.c (build_component_ref): Assign the correct type to the
6234
        result of build_vfn_ref.
6235
 
6236
Tue Feb 10 23:56:46 1998  Jason Merrill  
6237
 
6238
        * pt.c (convert_nontype_argument): Fix typo.
6239
        (check_explicit_specialization): Allow old-style specialization
6240
        of class template members.
6241
 
6242
Tue Feb 10 20:36:52 1998  Jason Merrill  
6243
                          Manfred Hollstein  
6244
 
6245
        * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
6246
        when deciding to override DECL_ASSEMBLER_NAME.
6247
 
6248
Tue Feb 10 15:30:55 1998  Andrew MacLeod  
6249
 
6250
        * decl2.c (lang_f_options): Add -fsquangle to option processing list.
6251
        * cp-tree.h (flag_do_squangling): Add declaration.
6252
        * lang-options.h: Add -fsquangle and -fno-squangle.
6253
        * method.c: Add macros and static variables for squangling.
6254
        (build_overload_name): Rename to build_mangled_name, add logic for B
6255
        compression, and split into process_modifiers and
6256
        process_overload_item.
6257
        (process_modifiers): New function, to handle constant, reference,
6258
        and pointer types.
6259
        (process_overload_item): New function, handles issue of type codes.
6260
        (build_overload_name): New function, start squangling and call
6261
        build_mangled_name.
6262
        (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
6263
        (start_squangling): New function to initialize squangling structs.
6264
        (end_squangling): New function to destroy squangling structs.
6265
        (nrepeats): Rename variable to Nrepeats.
6266
        (issue_nrepeats): New function for issuing 'n' type repeats.
6267
        (check_ktype): New function to check for type K name compression.
6268
        (build_overload_nested_name): Add a check for K name compression.
6269
        (build_qualified_name): Add a check for K name compression and don't
6270
        use DECL_ASSEMBLER_NAME when squangling is on.
6271
        (check_btype): New function, checks for B type compression.
6272
        (build_static_name, build_decl_overload_real): Initiate squangling.
6273
        (build_typename_overload, build_overload_with_type): Initiate
6274
        squangling
6275
 
6276
Sun Feb  8 23:47:38 1998  scott snyder  
6277
 
6278
        * method.c (make_thunk): Avoid name buffer overflow.
6279
 
6280
Sat Feb  7 16:48:54 1998  Jason Merrill  
6281
 
6282
        * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
6283
        don't define them yet.
6284
 
6285
        * parse.y (nomods_initdcl0): Add constructor_declarator case.
6286
 
6287
Fri Feb  6 21:32:25 1998  Richard Kenner  
6288
 
6289
        * config-lang.in (diff_excludes): Use basename only.
6290
 
6291
Thu Feb  5 19:10:40 1998  Jason Merrill  
6292
 
6293
        * tinfo2.cc: Add tinfo for signed char.
6294
 
6295
Thu Feb  5 14:38:23 1998  Mike Stump  
6296
 
6297
        * search.c (compute_access): Handle protected constructors in derived
6298
        classes as accessible.
6299
 
6300
Wed Feb  4 01:26:49 1998  Jason Merrill  
6301
 
6302
        * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
6303
        Call convert_from_reference sooner.
6304
 
6305
Tue Feb  3 23:50:52 1998  Mark Mitchell  
6306
 
6307
        * cvt.c (ocp_convert): Obtain the constant values from constant
6308
        decls even if the destination type is the same as the type of the
6309
        decl.
6310
 
6311
        * decl2.c (finish_file): Make sure that static inlines with
6312
        definitions are not marked DECL_EXTERNAL before returning.
6313
 
6314
Tue Feb  3 22:43:42 1998  Jason Merrill  
6315
 
6316
        * decl.c: Lose arg_looking_for_template.
6317
        (lookup_name_real): Likewise.
6318
        * parse.y: Lose processing_template_arg, template_arg1.
6319
        (primary): Likewise.
6320
        * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
6321
 
6322
Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  
6323
 
6324
        * error.c (dump_decl): Fix type of default arguments for template
6325
        template parameters and nontype template parameters.
6326
        * parse.y (template_parm): Handle invalid default template
6327
        template arguments here.
6328
 
6329
        * parse.y (template_parm): Use template_arg instead of PTYPENAME
6330
        for default template template argument.
6331
        * pt.c (coerce_template_parms): Merge default template argument
6332
        codes.  Can treat RECORD_TYPE as template name if it is implicitly
6333
        created.  Fix argument index in error message.
6334
        * typeck.c (comptypes): Merge template argument comparison codes in
6335
        TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
6336
 
6337
Tue Jan  6 01:42:44 1998  Mumit Khan  
6338
 
6339
        * lex.c (file_name_nondirectory): Also check for '/'.
6340
 
6341
Mon Feb  2 11:24:22 1998  Mark Mitchell  
6342
 
6343
        * parse.y (primary): Deal with statement-expressions in
6344
        templates.
6345
        * pt.c (tsubst_copy): Handle BIND_EXPR.
6346
        * tree.c (mapcar): Likewise.
6347
 
6348
        * call.c (add_template_candidate_real): Pass extra parameter to
6349
        fn_type_unification.
6350
        * cp-tree.h (fn_type_unification): Add parameter.
6351
        * pt.c (fn_type_unification): Add additional parameter to deal with
6352
        static member functions.
6353
        (get_bindings): Deal with static member functions.
6354
 
6355
        * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.
6356
        (revert_static_member_fn): Declare.
6357
        * decl.c (revert_static_member_fn): Remove declaration.  Change
6358
        linkage from internal to external.
6359
        (cp_finish_decl): Deal with virtual functions in classes local to
6360
        template functions.
6361
        * decl2.c (finish_file): Don't forget to emit increment/decrement
6362
        expressions in initializers for file-scope variables.
6363
        * parse.y (typename_sub2): If the typename doesn't names a
6364
        template, rather than a type, issue an error message.
6365
        * pt.c (check_explicit_specialization): Handle specializations of
6366
        static member functions.
6367
        (coerce_template_parms): Handle offset references to lists of
6368
        member functions.
6369
        * search.c (note_debug_info_needed): Don't crash when handed a
6370
        type which is being defined.
6371
        * typeck.c (complete_type): Don't crash when handed NULL_TREE;
6372
        that can happen with some illegal code.
6373
 
6374
Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  
6375
 
6376
        * call.c (user_harshness): Initialize `code' to 0.
6377
        (build_method_call): Initialize `candidates', `cp' and `len' to 0.
6378
        (null_ptr_cst_p): Add parentheses around && within ||.
6379
        (standard_conversion): Likewise.
6380
        (z_candidate): Likewise.
6381
        (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
6382
        (build_object_call): Likewise for `mem_args'.
6383
        (build_new_op): Likewise for `mem_arglist'.  Add `return' from
6384
        default case in enumeration switch.
6385
 
6386
        * class.c (build_vtable_entry): Add explicit braces to avoid
6387
        ambiguous `else'.
6388
        (build_class_init_list): Likewise.
6389
        (finish_struct_1): Initialize `width' to 0.
6390
        (instantiate_type): Initialize `name' to NULL_TREE.  Add
6391
        explicit braces to avoid ambiguous `else'.
6392
 
6393
        * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
6394
        `else'.
6395
 
6396
        * decl.c (grok_reference_init): Eliminate unused parameter, all
6397
        callers changed.
6398
        (record_builtin_type): Initialize `tdecl' to NULL_TREE.
6399
        (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
6400
        (cp_finish_decl): Initialize `ttype' to NULL_TREE.
6401
        (grokdeclarator): Add parentheses around && within ||.  Add
6402
        explicit braces to avoid ambiguous `else'.
6403
        (grokparms): Initialize `type' to NULL_TREE.
6404
        (xref_tag): Remove unused label `just_return'.
6405
        (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
6406
        (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
6407
        (hack_incomplete_structures): Add parentheses around assignment
6408
        used as truth value.
6409
 
6410
        * decl2.c (coerce_delete_type): Hide definition of `e3'.
6411
 
6412
        * error.c: Include .
6413
        (dump_expr): Change the type of `i' to size_t.  Remove unused
6414
        label `error'.
6415
 
6416
        * except.c (init_exception_processing): Remove unused variable `d'.
6417
        (expand_throw): Likewise for `label'.
6418
 
6419
        * friend.c (add_friends): Add explicit braces to avoid ambiguous
6420
        `else'.
6421
 
6422
        * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
6423
        (sort_base_init): Likewise for `binfo'.
6424
        (expand_member_init): Likewise for `rval'.
6425
        (build_member_call): Add parentheses around assignment used as
6426
        truth value.
6427
        (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
6428
        (build_new): Initialize `nelts' to NULL_TREE.  Initialize
6429
        `old_immediate_size_expand' to 0.
6430
        (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
6431
        (build_vec_delete_1): Remove unused variable `block'.
6432
        (expand_vec_init): Initialize `itype' to NULL_TREE.
6433
 
6434
        * lex.c: Include  if we don't have .  Protect
6435
        declaration of `index' and `rindex' with autoconf macros.
6436
        (reinit_parse_for_expr): Remove unused variables
6437
        `look_for_semicolon' and `look_for_lbrac'.
6438
        (cons_up_default_function): Initialize `args' to NULL_TREE.
6439
        (readescape): Initialize `firstdig' to 0.
6440
        (real_yylex): Add parentheses around assignment used as truth value.
6441
 
6442
        * method.c: Include  if we don't have .
6443
        Protect declaration of `index' with autoconf macro.
6444
 
6445
        * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
6446
        Initialize `type' to NULL_TREE.
6447
        (structsp): Remove unused variable `id'.
6448
 
6449
        * pt.c (coerce_template_parms): Add explicit braces to avoid
6450
        ambiguous `else'.
6451
        (lookup_template_class): Initialize `template' to NULL_TREE.
6452
        (instantiate_class_template): Remove unused variable `name' and `e'.
6453
        (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
6454
        (do_poplevel): Initialize `saved_warn_unused' to 0.
6455
        (type_unification): Remove unused varable `parm'.
6456
        (unify): Likewise for `j'.
6457
 
6458
        * repo.c (init_repo): Add parentheses around assignment used as
6459
        truth value.
6460
        (finish_repo): Remove unused varable `p'.
6461
 
6462
        * search.c (get_binfo): Initialize `type' to NULL_TREE.
6463
        (get_base_distance): Likewise.
6464
        (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
6465
        and `new_v' to NULL_TREE.
6466
        (lookup_fnfields): Likewise for `rval_binfo_h'.
6467
        (breadth_first_search): Add parentheses around assignment used as
6468
        truth value.
6469
        (get_template_base): Initialize `type' to NULL_TREE.
6470
 
6471
        * sig.c (append_signature_fields): Initialize `last_mfptr' to
6472
        NULL_TREE.
6473
        (build_signature_table_constructor): Likewise for
6474
        `last_rhs_field', `pfn' and `vt_off'.
6475
        (build_sigtable): Likewise for `init'.
6476
 
6477
        * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
6478
        (propagate_binfo_offsets): Likewise for `delta'.
6479
        (hash_tree_cons): Initialize hashcode to 0.
6480
        (can_free): Likewise for `size'.
6481
        (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
6482
 
6483
        * typeck.c (convert_sequence): Hide prototype.
6484
        (common_type): Add explicit braces to avoid ambiguous `else'.
6485
        (comp_target_types): Likewise.
6486
        (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
6487
        (build_function_call_real): Add explicit braces to avoid ambiguous
6488
        `else'.
6489
        (convert_arguments): Initialize `called_thing' to 0.
6490
        (convert_for_initialization): Initialize `savew' and `savee' to 0.
6491
 
6492
        * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
6493
        (digest_init): Initialize `old_tail_contents' to NULL_TREE.
6494
        (build_x_arrow): Likewise for `last_rval'.
6495
 
6496
        * xref.c (GNU_xref_decl): Initialize `cls' to 0.
6497
 
6498
Sun Feb  1 12:45:34 1998  J"orn Rennecke  
6499
 
6500
        * decl.c (init_decl_processing): Use set_sizetype.
6501
        * decl2.c (sizetype): Don't declare.
6502
        * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
6503
        (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
6504
        (build_component_addr, unary_complex_lvalue): Likewise.
6505
        * rtti.c (expand_class_desc): Likewise.
6506
        * class.c (get_vfield_offset): Likewise.
6507
 
6508
Thu Jan 29 10:39:30 1998  Mark Mitchell  
6509
 
6510
        * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
6511
        early to avoid bogus error.  Handle overloaded function
6512
        names provided as template arguments correctly.
6513
        (coerce_template_parms): Don't mishandle overloaded functions when
6514
        dealing with template template parameters.
6515
        (lookup_template_class): Issue an error message, rather than
6516
        crashing, when the TYPE_DECL provided is not a template type.
6517
 
6518
Wed Jan 28 23:14:44 1998  Jason Merrill  
6519
 
6520
        * class.c (instantiate_type): Don't just return a known type if
6521
        it's wrong.
6522
 
6523
Wed Jan 28 11:04:07 1998  Mark Mitchell  
6524
 
6525
        * class.c (instantiate_type): Remove handling of FUNCTION_DECL
6526
        since that code could never be reached.
6527
 
6528
        * error.c (dump_decl): Avoid aborting in the midst of printing an
6529
        error message about an illegal template declaration.
6530
 
6531
        * parse.y (structsp): Print an error message, rather than crashing,
6532
        when a class-head does not name a class.
6533
 
6534
        * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
6535
        template arguments as a g++ extension.
6536
 
6537
        * cp-tree.def (ALIGNOF_EXPR): New tree code.
6538
        * decl2.c (grok_alignof): If processing_template_decl, just store
6539
        the expression.
6540
        * typeck.c (c_alignof): Likewise.
6541
        * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
6542
        * error.c (dump_expr): Likewise.
6543
        * pt.c (tsubst_copy): Likewise.
6544
        * tree.c (cp_tree_equal): Likewise.
6545
        * pt.c (uses_template_parms): Correctly determine whether or not a
6546
        SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
6547
        folding can be done.
6548
 
6549
        * cp-tree.h (grok_enum_decls): Remove type parameter.
6550
        * decl.c (grok_enum_decls): Likewise.
6551
        * decl2.c (grok_x_components): Call grok_enum_decls
6552
        unconditionally, since it will do nothing if there is no
6553
        current_local_enum.  Use the new calling sequence.
6554
        * pt.c (tsubst_enum): Use the new calling sequence for
6555
        grok_enum_decls.
6556
 
6557
        * decl.c (start_function): Make member functions of local classes
6558
        in extern inline functions have comdat linkage here...
6559
        (grokdeclarator): Rather than here.
6560
 
6561
Wed Jan 28 10:55:47 1998  Jason Merrill  
6562
 
6563
        * pt.c (convert_nontype_argument): Use decl_constant_value.
6564
 
6565
Tue Jan 27 16:42:21 1998  Mark Mitchell  
6566
 
6567
        * call.c (add_template_candidate_real): New function.
6568
        (add_template_candidate): Use it.
6569
        (add_template_conv_candidate): Likewise.
6570
        (joust): Pass extra argument to more_specialized.
6571
        * class.c (instantiate_type): Handle a single FUNCTION_DECL.
6572
        (is_local_class): Remove.
6573
        (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
6574
        * cp-tree.h (is_local_class): Remove.
6575
        (perform_array_to_pointer_conversion): Likewise.
6576
        (finish_member_template_decl): Add.
6577
        (check_explicit_specialization): Return a tree, not an int.
6578
        (more_specialized): Take additional argument.
6579
        (get_bindings): Likewise.
6580
        (TI_PENDING_SPECIALIZATION_FLAG): New macro.
6581
        * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
6582
        (perform_array_to_pointer_conversion): Remove.
6583
        * decl.c (saved_scope): Add processing_specialization,
6584
        processing_explicit_instantiation fields.
6585
        (maybe_push_to_top_level): Save them.
6586
        (pop_from_top_level): Restore them.
6587
        (grokfndecl): Use new return value from
6588
        check_explicit_specialization.
6589
        (start_decl): Don't check flag_guiding_decls before pushing
6590
        decls.
6591
        (cp_finish_decl): Remove previous (bogus) change.
6592
        (grok_declarator): Use decl_function_context rather than
6593
        is_local_class.
6594
        * decl2.c (finish_file): Pass extra argument to get_bindings.
6595
        (build_expr_from_tree): Let build_x_component_ref check
6596
        validity of arguments rather than doing it here.
6597
        * lex.c (cons_up_default_function): Remove code fooling with
6598
        processing_specialization, processing_explicit_instantiation
6599
        flags, as that is now done in {maybe_push_top,pop_from}_top_level.
6600
        * method.c (build_overload_identifier): Mangle local classes in
6601
        template functions correctly.
6602
        * parse.y (finish_member_template_decl): Move to pt.c.
6603
        * pt.c (finish_member_template_decl): Moved here from parse.y.
6604
        (print_candidates): New function.
6605
        (determine_specialization): Change interface.  Properly look for
6606
        most specialized versions of template candidates.
6607
        (check_explicit_specialization): Fully process explicit
6608
        instantiations.
6609
        (push_template_decl): Avoid looking at CLASSTYPE fields in
6610
        FUNCTION_DECLS.
6611
        (determine_overloaded_function): Remove.
6612
        (convert_nontype_argument): Change name from
6613
        convert_nontype_parameter.  Use determine_overloaded_function
6614
        instead of instantiate_type.
6615
        (mangle_class_name_for_template): Handle type contexts as well as
6616
        function contexts.
6617
        (classtype_mangled_name): Likewise.
6618
        (lookup_template_class): Likewise.
6619
        (tsubst): Likewise.
6620
        (more_specialized): Take explicit template arguments as a
6621
        parameter.
6622
        (most_specialized): Likewise.
6623
        (get_bindings): Likewise.  Check that return types match before
6624
        proclaiming a function a match.
6625
        (do_decl_instantiation): Remove code searching for function to
6626
        instantiate; that is now done in check_explicit_specialization.
6627
        (add_maybe_template): Pass extra argument to get_bindings.
6628
        * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
6629
        implementation.
6630
        * typeck.c (build_component_ref): Check for invalid arguments.
6631
 
6632
Tue Jan 27 01:44:02 1998  Jason Merrill  
6633
 
6634
        * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that
6635
        return_target and call_target are equivalent.
6636
 
6637
        * pt.c (type_unification_real): Just accept function parms that
6638
        don't use any template parms.
6639
 
6640
Sun Jan 25 03:30:00 1998  Jason Merrill  
6641
 
6642
        * decl.c (cp_finish_decl): When bailing on a comdat variable, also
6643
        unset DECL_NOT_REALLY_EXTERN.
6644
 
6645
        * parse.y (typename_sub*): Fix std::.
6646
 
6647
Sat Jan 24 12:13:54 1998  Jason Merrill  
6648
 
6649
        * error.c (dump_decl): Fix type default template args.
6650
        (dump_type): Hand TEMPLATE_DECL off to dump_decl.
6651
 
6652
Fri Jan 23 18:34:37 1998  Mumit Khan  
6653
 
6654
        * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
6655
        (file_name_nondirectory): Use.
6656
 
6657
Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  
6658
 
6659
        * pt.c (coerce_template_parms): Don't access elements of ARGLIST
6660
        that are not really present.  Substitute default arguments in
6661
        template template arguments.  Correctly convert TEMPLATE_DECL to
6662
        TEMPLATE_TEMPLATE_PARM.
6663
        (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM
6664
        are no longer treated specially here.
6665
        * parse.y (template_template_parm): Fix copy error.
6666
        * decl.c (grokdeclarator): Warn about missing `typename' for nested
6667
        type created from template template parameters.
6668
        * parse.y (bad_parm): Likewise
6669
 
6670
        * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
6671
        (push_nested_class): Likewise.
6672
        * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
6673
        * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
6674
        (copy_template_template_parm): Declare.
6675
        * decl.c (arg_looking_for_template): New variable.
6676
        (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
6677
        Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
6678
        node if arg_looking_for_template is nonzero.
6679
        (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
6680
        (grok_op_properties, xref_tag, xref_basetypes): Likewise.
6681
        (grokdeclarator): Handle TEMPLATE_DECL.
6682
        * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
6683
        * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
6684
        (dump_type_prefix, dump_type_suffix): Handle TEMPLATE_TEMPLATE_PARM.
6685
        (dump_decl): Handle unnamed template type parameters.
6686
        Handle template template parameters.
6687
        (dump_function_name): Handle template template parameters.
6688
        * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef):
6689
        Handle TEMPLATE_TEMPLATE_PARM.
6690
        * method.c (build_template_template_parm_names): New function.
6691
        (build_template_parm_names): Handle TEMPLATE_DECL.
6692
        (build_overload_nested_name, build_overload_name):
6693
        Handle TEMPLATE_TEMPLATE_PARM.
6694
        * parse.y (maybe_identifier): New nonterminal.
6695
        (template_type_parm): Use it.
6696
        (template_template_parm, template_arg1): New nonterminal.
6697
        (template_parm): Add template_template_parm rules.
6698
        (template_arg): Set processing_template_arg.
6699
        (template_arg1): Rules moved from template_arg.
6700
        (primary, nonnested_type): Set arg_looking_for_template if we are
6701
        processing template arguments.
6702
        * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
6703
        (process_template_parm): Handle template template parameters.
6704
        (coerce_template_parms, comp_template_args): Likewise.
6705
        (mangle_class_name_for_template, lookup_template_class): Likewise.
6706
        (uses_template_parms): Handle TEMPLATE_DECL and
6707
        TEMPLATE_TEMPLATE_PARM.
6708
        (current_template_args): Handle TEMPLATE_DECL.
6709
        (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
6710
        * search.c (dfs_walk, dfs_record_inheritance):
6711
        Handle TEMPLATE_TEMPLATE_PARM.
6712
        * tree.c (copy_template_template_parm): New function.
6713
        (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
6714
        * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
6715
 
6716
Mon Jan 19 22:40:03 1998  Mark Mitchell  
6717
 
6718
        * decl.c (start_decl): Don't allow duplicate definitions of static
6719
        data members.
6720
 
6721
        * call.c (build_user_type_conversion_1): Handle user-defined
6722
        template conversion operators correctly.
6723
 
6724
        * decl2.c (build_expr_from_tree): Issue an error message if the
6725
        object in a COMPONENT_REF is a TEMPLATE_DECL.
6726
 
6727
        * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
6728
 
6729
        * class.c (is_local_class): New function.
6730
        * cp-tree.h (is_local_class): Declare it.
6731
        (last_tree): Likewise.
6732
        (begin_tree): Likewise.
6733
        (end_tree): Likewise.
6734
        (lookup_template_class): Change prototype.
6735
        * decl.c (cp_finish_decl): Check for NULL where necessary.
6736
        Consider FUNCTION_DECLS to declare objects with top-level binding,
6737
        when calling make_decl_rtl.
6738
        (grokdeclarator): Give members of local classes internal linkage.
6739
        (start_function): Remove declaration of last_tree.
6740
        (finish_function): Set flag_keep_inline_functions around call to
6741
        rest_of_compilation if we are processing a member function in a
6742
        local class.
6743
        (start_method): Call push_template_decl for member functions of
6744
        local classes in template functions.
6745
        * decl2.c (import_export_decl): Don't give external linkage to
6746
        instantiations of templates with internal linkage.
6747
        * parse.y (last_tree): Remove declaration.
6748
        (template_type): Pass extra parameter to lookup_template_class.
6749
        (self_template_type): Likewise.
6750
        (structsp): Move call to reset_specialization into left_curly.
6751
        (left_curly): Call reset_specialization, and begin_tree.
6752
        * pt.c (saved_trees): New variable.
6753
        (mangle_class_name_for_template): Change prototype.  Use
6754
        additional function context to name local classes in templates
6755
        correctly.
6756
        (classtype_mangled_name): Pass the context.
6757
        (push_template_decl): Handle local classes and templates, and
6758
        member functions for such classes.
6759
        (convert_nontype_parameter): Fix handling of pointer-to-member
6760
        constants.
6761
        (lookup_template_class): Handle local classes in templates.
6762
        (tsubst): Likewise.  Don't assume that template instantiations
6763
        have external linkage; pay attention to the template declaration.
6764
        (mark_decl_instantiated): Likewise.
6765
        (begin_tree): New function.
6766
        (end_tree): Likewise.
6767
 
6768
        * decl.c (xref_basetypes): Don't call complete_type for basetypes
6769
        that involve template parameters; that can lead to infinite
6770
        recursion unnecessarily.
6771
 
6772
        * pt.c (register_specialization): Do not register specializations
6773
        that aren't ready to be registered yet.
6774
        (check_explicit_specialization): Handle explicit specialization of
6775
        constructors and destructors.
6776
        (build_template_decl): New function.
6777
        (push_template_delc): Handle out-of-class specializations of
6778
        member templates.
6779
 
6780
        * pt.c (check_explicit_specialization): Set up the template
6781
        information before registering the specialization.
6782
        (coerce_template_parms): Fix thinko.
6783
        (tsubst): Handle specializations of member templates correctly.
6784
 
6785
        * class.c (finish_struct_methods): Remove calls to
6786
        check_explicit_specialization from here.
6787
        (finish_struct): And insert them here.
6788
        * cp-tree.h (perform_qualification_conversions): New function.
6789
        (perform_array_to_pointer_conversion): Likewise.
6790
        (begin_explicit_instantiation): Likewise.
6791
        (end_explicit_instantiation): Likewise.
6792
        (determine_specialization): Renamed from
6793
        determine_explicit_specialization.
6794
        (comp_template_parms): New function.
6795
        (processing_explicit_instantiation): New variable.
6796
        * cvt.c (perform_qualification_conversions): New function.
6797
        (perform_array_to_pointer_conversion): Likewise.
6798
        * decl.c (duplicate_decls): Don't consider template functions
6799
        alike unless they have the same parameters.  Refine handling of
6800
        instantiation/specialization mismatches.
6801
        (start_decl): Don't call pushdecl for template specializations,
6802
        since they don't affect overloading.
6803
        (start_function): Likewise.
6804
        (grokfndecl): Call check_explicit_specialization a little later.
6805
        Don't call duplicate_decls for memberm template specializations.
6806
        (grokdeclarator): Don't update template_count for classes that are
6807
        themselves specializations.  Remove use of `2' as parameter to
6808
        grokfndecl since that value isn't used.
6809
        * lex.c (cons_up_default_function): Save and restore
6810
        processing_explicit_instantiation around calls to grokfield.
6811
        * parse.y (finish_member_template_decl): New function.
6812
        (component_decl_1): Use it.
6813
        (fn.def2): Likewise.
6814
        (template_arg_list_opt): New nonterminal.
6815
        (template_type): Use it.
6816
        (self_template_type): Likewise.
6817
        (template_id): Likewise.
6818
        (object_template_id): Likewise.
6819
        (notype_template_declarator): Likwise.
6820
        (begin_explicit_instantiation): Likewise.
6821
        (end_explicit_instantiation): Likewise.
6822
        (explicit_instantiation): Use them.
6823
        * pt.c (coerce_template_parms): Add parameters.
6824
        (processing_explicit_instantiation): New variable.
6825
        (convert_nontype_parameter): New function.
6826
        (determine_overloaded_function): Likewise.
6827
        (begin_explicit_instantiation): Likewise.
6828
        (end_explicit_instantiation): Likewise.
6829
        (retrieve_specialization): Likewise.
6830
        (register_specialization): Likewise.
6831
        (processing_explicit_specialization): Removed.
6832
        (determine_specialization): Handle specializations of member
6833
        functions of template class instantiations.
6834
        (check_explicit_specialization): Refine to conform to standard.
6835
        (comp_template_parms): New function.
6836
        (coerce_template_parms): Call convert_nontype_parameter.
6837
        (tsubst): Refine handling of member templates.  Use
6838
        register_specialization.
6839
        (instantiate_template): Use retrieve_specialization.
6840
        (do_decl_instantiation): Likewise.
6841
        (instantiate_decl): Likewise.
6842
        (type_unification): Improve handling of explicit template
6843
        arguments.
6844
        * tree.c (mapcar): Return error_mark_node, rather than aborting,
6845
        on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
6846
        * typeck.c (build_unary_op): Call determine_specialization, rather
6847
        than determine_explicit_specialization.
6848
 
6849
Mon Jan 19 13:18:51 1998  Jason Merrill  
6850
 
6851
        * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
6852
 
6853
Fri Jan 16 11:40:50 1998  Bruno Haible  
6854
 
6855
        * error.c (dump_decl): For enum tags, output the tag, not its value.
6856
 
6857
1998-01-13  Brendan Kehoe  
6858
 
6859
        * decl.c (init_decl_processing): Only call init_rtti_processing
6860
        FLAG_RTTI is set.
6861
 
6862
Mon Jan 12 01:35:18 1998  Jason Merrill  
6863
 
6864
        * init.c (build_new_1): Split out from build_new.
6865
        (build_new): Just return a NEW_EXPR.
6866
        * expr.c (cplus_expand_expr): Handle NEW_EXPR.
6867
 
6868
        * decl2.c (get_temp_regvar): Tweak.
6869
 
6870
        * cp-tree.h (TREE_CALLS_NEW): Comment out.
6871
        * class.c (resolves_to_fixed_type_p): Remove use.
6872
        * method.c (build_opfncall): Likewise.
6873
        * call.c (build_new_op): Likewise.
6874
 
6875
Wed Jan  7 23:47:13 1998  Jason Merrill  
6876
 
6877
        * exception.cc (__eh_alloc, __eh_free): New fns.
6878
        (__cp_push_exception, __cp_pop_exception): Use them.
6879
        (__uncatch_exception): Call terminate here if no exception.
6880
        * except.c (build_terminate_handler): New fn.
6881
        (expand_start_catch_block): Use it.
6882
        (expand_exception_blocks): Likewise.
6883
        (alloc_eh_object): New fn.
6884
        (expand_throw): Use it.  Protect exception init with terminate.
6885
        * typeck.c (build_modify_expr): Remove code that ignores trivial
6886
        methods.
6887
 
6888
 
6889
 
6890
Copyright (C) 1998 Free Software Foundation, Inc.
6891
 
6892
Copying and distribution of this file, with or without modification,
6893
are permitted in any medium without royalty provided the copyright
6894
notice and this notice are preserved.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.