re PR c++/13081 (forward template declarations in <complex> let inlining fail)
[gcc.git] / gcc / cp / ChangeLog
1 2003-12-28 Mark Mitchell <mark@codesourcery.com>
2
3 PR c++/13081
4 * decl.c (duplicate_decls): Preserve inline-ness when redeclaring
5 a function template.
6
7 PR c++/12613
8 * decl.c (reshape_init): Reject GNU colon-style designated
9 initializers in arrays.
10
11 PR c++/13009
12 * call.c (build_special_member_call): Do not assume that we have a
13 pointer to the complete object in an assignment operator.
14
15 2003-12-28 Roger Sayle <roger@eyesopen.com>
16
17 PR c++/13070
18 * decl.c (duplicate_decls): When setting the type of an anticipated
19 declaration, merge the existing type attributes.
20
21 2003-12-25 Andrew Pinski <pinskia@physics.uc.edu>
22
23 PR c++/13268, c++/13339
24 * class.c (add_method): Return early when method is error_mark_node.
25 * pt.c (tsubst_friend_function): Return early when new_friend is
26 error_mark_node.
27
28 2003-12-23 Mark Mitchell <mark@codesourcery.com>
29
30 * cp-lang.c (cp_expr_size): Return zero for empty classes.
31
32 * cp-tree.h (warn_if_uknown_interface): Remove unused function.
33 * decl2.c (warn_if_unknown_interface): Likewise.
34
35 2003-12-23 Nathan Sidwell <nathan@codesourcery.com>
36
37 PR c++/13387
38 * cp-lang.c (cxx_get_alias_set): Correct logic for a base type.
39
40 2003-12-22 Mark Mitchell <mark@codesourcery.com>
41
42 * decl.c (start_function): Do not check
43 flag_alt_external_templates or flag_external_templates.
44 * decl2.c (warn_if_unknown_interface): Likewise.
45 * lex.c (extract_interface_info): Likewise.
46 * pt.c (lookup_template_class): Likewise.
47
48 PR c++/12862
49 * name-lookup.c (pushdecl): Look up all namespace-scope entities
50 in their corresponding namespace.
51
52 PR c++/12397
53 * typeck.c (finish_class_member_access_expr): Don't tree
54 IDENTIFIER_NODEs as non-dependent expressions.
55
56 2003-12-22 Andrew Pinski <pinskia@physics.uc.edu>
57
58 PR c++/5050
59 * tree.c (cp_start_inlining): Remove.
60 (cp_end_inlining): Remove.
61 * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Do not define.
62 (LANG_HOOKS_TREE_INLINING_END_INLINING): Do not define.
63 * cp-tree.h (cp_start_inlining): Do not declare.
64 (cp_end_inlining): Do not declare.
65
66 2003-12-22 Mark Mitchell <mark@codesourcery.com>
67
68 PR c++/12479
69 * parser.c (cp_parser_declaration_seq_opt): Only issue "extra ;"
70 pedwarn when not in a system header.
71
72 2003-12-21 Mark Mitchell <mark@codesourcery.com>
73
74 * cp-tree.h (cp_tree_index): Remove CPTI_RECORD_TYPE,
75 CPTI_UNION_TYPE, CPTI_ENUM_TYPE.
76 (record_type_node): Remove.
77 (union_type_node): Likewise.
78 (enum_type_node): Likewise.
79 * decl.c: Remove mention of above tree nodes in comment.
80 * lex.c (cxx_init): Do not assign to record_type_node,
81 union_type_node, or enum_type_node. Simplify handling of
82 class_type_node.
83
84 PR c++/11554
85 * init.c (sort_mem_initializers): Add warning.
86
87 2003-12-21 Kazu Hirata <kazu@cs.umass.edu>
88
89 * call.c: Fix comment formatting.
90 * class.c: Likewise.
91 * cp-tree.h: Likewise.
92 * cvt.c: Likewise.
93 * cxx-pretty-print.c: Likewise.
94 * decl.c: Likewise.
95 * decl2.c: Likewise.
96 * error.c: Likewise.
97 * except.c: Likewise.
98 * init.c: Likewise.
99 * name-lookup.c: Likewise.
100 * parser.c: Likewise.
101 * pt.c: Likewise.
102 * rtti.c: Likewise.
103 * semantics.c: Likewise.
104 * typeck.c: Likewise.
105 * typeck2.c: Likewise.
106
107 2003-12-19 Kazu Hirata <kazu@cs.umass.edu>
108
109 * cvt.c: Remove uses of "register" specifier in
110 declarations of arguments and local variables.
111 * decl.c: Likewise.
112 * decl2.c: Likewise.
113 * expr.c: Likewise.
114 * friend.c: Likewise.
115 * lex.c: Likewise.
116 * name-lookup.c: Likewise.
117 * repo.c: Likewise.
118 * search.c: Likewise.
119 * tree.c: Likewise.
120 * typeck.c: Likewise.
121 * typeck2.c: Likewise.
122
123 2003-12-19 Mark Mitchell <mark@codesourcery.com>
124
125 PR c++/12795
126 * name-lookup.c (pushdecl): Do not treated any functions as being
127 "nested" in C++.
128
129 2003-12-19 Jason Merrill <jason@redhat.com>
130
131 PR c++/13371
132 * typeck.c (build_modify_expr): Stabilize lhs if we're narrowing.
133 * cvt.c (convert_to_void): Don't warn about the RHS of a comma
134 being useless if TREE_NO_UNUSED_WARNING is set.
135
136 2003-12-18 Richard Henderson <rth@redhat.com>
137
138 * cp-tree.h (struct lang_type_header): Remove __extension__.
139
140 2003-12-18 Jason Merrill <jason@redhat.com>
141
142 PR c++/12253
143 * init.c (build_vec_init): Initialization of an element from
144 an initializer list is also a full-expression.
145
146 * parser.c, pt.c, semantics.c: Rename constant_expression_p
147 to integral_constant_expression_p.
148
149 2003-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
150
151 PR c++/13262
152 * pt.c (instantiate_decl): Wrap push_nested_class and
153 pop_nested_class around cp_finish_decl call for static member
154 variable.
155
156 2003-12-18 Giovanni Bajo <giovannibajo@gcc.gnu.org>
157
158 PR c++/9154
159 * parser.c (cp_parser_template_argument): A type-id followed by '>>'
160 is just an user typo, and should be accepted as last resort if any
161 other parsing fails.
162 (cp_parser_enclosed_template_argument_list): If the argument list is
163 parsed correctly, but the next token is '>>', emit a diagnostic.
164 (cp_parser_next_token_ends_template_argument): Accept '>>' as
165 delimiter of template argument, it will be later detected as a typo.
166
167 2003-12-17 Kelley Cook <kcook@gcc.gnu.org>
168
169 * Make-lang.in: Replace cp/g++.1 with $(docobjdir)/g++.1.
170
171 2003-12-17 Mark Mitchell <mark@codesourcery.com>
172
173 PR c++/10603
174 PR c++/12827
175 * parser.c (cp_parser_error): Help c_parse_error print good
176 messages if the next token is a keyword.
177 (cp_parser_parameter_declaration_list): When resynchronizing after
178 a bad parameter declaration, stop if a comma is found.
179 (cp_parser_parameter_declaration): Avoid backtracking.
180
181 2003-12-16 Mark Mitchell <mark@codesourcery.com>
182
183 PR c++/12696
184 * decl.c (reshape_init): Recover quickly from errors.
185
186 2003-12-16 Nathan Sidwell <nathan@codesourcery.com>
187
188 PR c++/9043
189 C++ ABI change: Mangling array indices in templates.
190 * decl.c (compute_array_index_type): Reorganize for earlier
191 template errors. Use value_dependent_expression_p for abi-2.
192 * mangle.c (write_array_type): Check broken mangling for
193 expression indices on abi-1
194
195 2003-12-16 Mark Mitchell <mark@codesourcery.com>
196
197 PR c++/12696
198 * decl.c (reshape_init): Recover quickly from errors.
199
200 PR c++/13275
201 * lex.c (reswords): Add "__offsetof" and "__offsetof__".
202 * parser.c (cp_parser): Add in_offsetof_p.
203 (cp_parser_new): Initialize it.
204 (cp_parser_primary_expression): Handle __offsetof__ (...).
205 (cp_parser_postfix_expression): Allow casts to pointer type and
206 uses of "->" in a constant expression if implementing offsetof.
207 (cp_parser_unary_expression): Allow the use of "&" in a constant
208 expression if implementing offsetof.
209
210 2003-12-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
211
212 PR c++/2294
213 * name-lookup.c (push_overloaded_decl): always construct an OVERLOAD
214 if the declaration comes from an using declaration.
215
216 2003-12-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
217
218 * semantics.c (finish_id_expression): Refactor the code to handle
219 template parameters, and emit a more informative error message
220 when they are used within an integral constant expression.
221
222 2003-12-16 Nathan Sidwell <nathan@codesourcery.com>
223
224 PR c++/13387
225 * class.c (finish_struct_1): Compute mode and alias set for
226 CLASSTYPE_AS_BASE.
227 * call.c (build_over_call): Use CLASSTYPE_AS_BASE for trivial
228 assignment of a class, as necessary.
229 * cp-lang.c (cxx_get_alias_set): The alias set as a base is the
230 same as for the complete type.
231
232 PR c++/13242
233 C++ ABI change. Mangling template parameters of reference type
234 * mangle.c (write_template_args): Remove unreachable code.
235 (write_template_arg): Look through an argument of reference type.
236
237 2003-12-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
238
239 PR c++/2294
240 * name-lookup.c (push_overloaded_decl): always construct an OVERLOAD
241 if the declaration comes from an using declaration.
242
243 2003-12-15 Mark Mitchell <mark@codesourcery.com>
244
245 PR c++/10926
246 * decl2.c (grokfield): Robustify.
247
248 PR c++/11116
249 * parser.c (cp_parser_throw_expression): Determine whether or not
250 an assignment-expression is present by doing one-token lookahead.
251
252 PR c++/13269
253 * parser.c (cp_parser_function_definition_after_declarator): Stop
254 scanning tokens when reaching EOF.
255
256 PR c++/12989
257 * typeck.c (cxx_sizeof_or_alignof_expr): Robustify.
258
259 PR c++/13310
260 * pt.c (dependent_template_p): Handle OVERLOADs.
261
262 2003-12-15 Mark Mitchell <mark@codesourcery.com>
263
264 PR c++/13243
265 PR c++/12573
266 * parser.c (cp_parser_postfix_expression): Tighten handling of
267 integral constant expressions.
268 (cp_parser_unary_expression): Likewise.
269 * pt.c (value_dependent_expression_p): Remove handling for
270 COMPONENT_REFs.
271
272 2003-12-15 Nathan Sidwell <nathan@codesourcery.com>
273
274 * class.c (add_method): Disallow destructor for java classes.
275 * decl.c (xref_basetypes): Check java class inheritance.
276 * decl2.c (check_java_method): Skip artificial params.
277
278 PR c++/13241
279 C++ ABI change. Mangling of symbols in expressions.
280 * mangle.c (write_mangled_name): Add top_level flag. Rework for
281 nested and unnested mangling. Deal with abi version 1 and version
282 2 differences.
283 (write_expression): Adjust write_mangled_name call.
284 (mangle_decl_string): Use write_mangled_name for all non-type decls.
285
286 2003-12-14 Mark Mitchell <mark@codesourcery.com>
287
288 PR c++/10779
289 PR c++/12160
290 * parser.c (struct cp_parser): Add in_template_argument_list_p.
291 (cp_parser_error): Use c_parse_error.
292 (cp_parser_name_lookup_error): New function.
293 (cp_parser_new): Initialize it.
294 (cp_parser_declarator): Add parenthesized_p parameter.
295 (cp_parser_nested_name_specifier_opt): Use
296 cp_parser_name_lookup_error.
297 (cp_parser_parenthesized_expression_list): Improve comments.
298 (cp_parser_condition): Adjust call to cp_parser_declarator.
299 (cp_parser_template_parameter): Adjust call to
300 cp_parser_parameter_declaration.
301 (cp_parser_template_argument_list): Set
302 in_template_argument_list_p.
303 (cp_parser_explicit_instantiation): Adjust call to
304 cp_parser_declarator.
305 (cp_parser_simple_type_specifier): Remove unncessary code.
306 (cp_parser_using_declaration): Use cp_parser_name_lookup_error.
307 (cp_parser_init_declarator): Handle member function definitions.
308 (cp_parser_direct_declarator): Adjust call to
309 cp_parser_declarator.
310 (cp_parser_type_id): Adjust call to cp_parser_declarator.
311 (cp_parser_parameter_declaration_list): Avoid backtracking where
312 possible.
313 (cp_parser_parameter_declaration): Add parenthesized_p parameter.
314 (cp_parser_function_definition): Remove.
315 (cp_parser_member_declaration): Do not backtrack to look for
316 function definitions.
317 (cp_parser_exception_declaration): Adjust call to
318 cp_parser_declarator.
319 (cp_parser_single_declaration): Handle function definitions via
320 cp_parser_init_declarator.
321 (cp_parser_save_member_function_body): New function.
322
323 2003-12-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
324
325 PR c++/13106
326 * decl.c (finish_function): Check if return type is dependent before
327 issuing no return statement warning.
328
329 2003-12-12 Nathan Sidwell <nathan@codesourcery.com>
330
331 PR c++/13118
332 * cp-tree.h (lang_decl_u): Add thunk_alias member.
333 (THUNK_VIRTUAL_OFFSET): Must be a FUNCTION_DECL.
334 (THUNK_ALIAS_P): Remove.
335 (THUNK_ALIAS): Adjust.
336 * class.c (update_vtable_entry_for_fn): Get the vbase within the
337 overriding function's return type.
338 (dump_thunk): Adjust THUNK_ALIAS printing.
339 (build_vtbl_initializer): Adjust THUNK_ALIAS use.
340 * method.c (make_thunk): Revert 12881 test change. Clear
341 THUNK_ALIAS.
342 (finish_thunk): Adjust THUNK_ALIAS setting.
343 (use_thunk): Adjust THUNK_ALIAS use.
344 * semantics.c (emit_associated_thunks): Likewise.
345
346 PR c++/13114, c++/13115
347 * class.c (layout_empty_base): Propagate the move of an empty base
348 to offset zero.
349
350 PR c++/12881
351 * method.c (make_thunk): Deal with thunk aliases when searching
352 for a thunk. Robustify assertion.
353
354 2003-12-11 Nathan Sidwell <nathan@codesourcery.com>
355
356 * mangle.c (conv_type_names): Holds IDENTIFIER_NODEs only.
357 (hash_type): Use TYPE_UID of the identifier's type.
358 (compare_type): Adjust.
359 (mangle_conv_op_name_for_type): Store identifier nodes only, use
360 TYPE_UID has hash value.
361
362 2003-12-10 Mark Mitchell <mark@codesourcery.com>
363
364 * cp-tree.h (DECL_CONV_FN_P): Check that DECL_NAME is non-NULL.
365
366 2003-12-08 Matt Austern <austern@apple.com>
367
368 PR c/13134
369 * decl.c (duplicate_decls): Copy visibility flag when appropriate.
370
371 2003-12-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
372
373 * init.c (build_new_1): Deal with an OVERLOAD set when
374 looking up for _Jv_AllocObject.
375 * except.c (build_throw): Likewise for _Jv_Throw.
376
377 2003-12-08 Jason Merrill <jason@redhat.com>
378
379 PR c++/11971
380 * tree.c (build_local_temp): Split out from build_cplus_new.
381 (force_target_expr): New fn.
382 * call.c (call_builtin_trap): Call it. Take a type parm.
383 (convert_arg_to_ellipsis): Pass it.
384 (build_x_va_arg): Use call_builtin_trap.
385
386 PR c++/11929
387 * call.c (magic_varargs_p): New fn.
388 (build_over_call): Do no ellipsis conversions for arguments to
389 functions with magic varargs.
390
391 * name-lookup.c, init.c, except.c: Revert Giovanni's patch from
392 yesterday.
393
394 Give the anonymous namespace a null DECL_NAME.
395 * cp-tree.h: Don't declare anonymous_namespace_name.
396 * decl.c: Don't define it.
397 * dump.c (cp_dump_tree): Don't check for it.
398 * cxx-pretty-print.c (pp_cxx_original_namespace_definition): Likewise.
399 * error.c (dump_decl): Likewise.
400 * name-lookup.c: Define it here.
401 (push_namespace): Put it in DECL_ASSEMBLER_NAME instead.
402 * mangle.c (write_unqualified_name): Adjust.
403
404 2003-12-07 Giovanni Bajo <giovannibajo@gcc.gnu.org>
405
406 PR c++/2294
407 * name-lookup.c (push_overloaded_decl): Always construct an
408 OVERLOAD unless the declaration is a built-in.
409 (set_namespace_binding): While binding OVERLOADs with only one
410 declaration, we still need to call supplement_binding.
411 * init.c (build_new_1): Deal with an OVERLOAD set when
412 looking up for _Jv_AllocObject.
413 * except.c (build_throw): Likewise for _Jv_Throw.
414
415 2003-12-06 Mark Mitchell <mark@codesourcery.com>
416
417 PR c++/13323
418 * class.c (same_signature_p): Handle conversion operators
419 correctly.
420 (check_for_override): Likewise.
421
422 2003-12-06 Kelley Cook <kcook@gcc.gnu.org>
423
424 * Make-lang.in (GXX_CROSS_NAME, CXX_CROSS_NAME): Delete.
425 (c++.install_common, cp/g++.1, c++.install-man): Adjust for above.
426 (c++.uninstall): Likewise.
427
428 2003-12-05 Danny Smith <dannysmith@gcc.gnu.org>
429 Mark Mitchell <mark@codesourcery.com>
430
431 PR c++/13305
432 * parser.c (cp_parser_elaborated_type_specifier): Accept
433 attributes.
434
435 2003-12-05 Mark Mitchell <mark@codesourcery.com>
436
437 PR c++/13314
438 * parser.c (cp_parser_class_specifier): Match push_scope/pop_scope
439 calls.
440 (cp_parser_class_head): Likewise.
441
442 2003-12-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
443
444 PR c++/13166
445 * parser.c (cp_parser_late_parsing_default_args): Make sure the
446 context is a class before calling push_nested_class and
447 pop_nested_class.
448
449 2003-12-03 James E Wilson <wilson@specifixinc.com>
450
451 * g++spec.c (lang_specific_driver): Delete USE_LIBUNWIND_EXCEPTIONS
452 support.
453
454 2003-12-03 Mark Mitchell <mark@codesourcery.com>
455
456 PR c++/9127
457 * cp-tree.h (at_namespace_scope_p): New function.
458 * parser.c (cp_parser_class_head): Handle invalid explicit
459 specializations.
460 * search.c (at_namespace_scope_p): New function.
461
462 PR c++/13179
463 * semantics.c (finish_handler_parms): Do not call eh_type_info for
464 types used in templates.
465
466 PR c++/10771
467 * parser.c (cp_parser_check_for_invalid_template_id): New
468 function.
469 (cp_parser_simple_type_specifier): Use it.
470 (cp_parser_elaborated_type_specifier): Likewise.
471 (cp_parser_class_head): Likewise.
472
473 2003-12-02 Giovanni Bajo <giovannibajo@gcc.gnu.org>
474
475 PR c++/10126
476 * pt.c (convert_nontype_argument): Handle default conversions
477 while converting a pointer to member function.
478
479 2003-12-02 Giovanni Bajo <giovannibajo@gcc.gnu.org>
480
481 PR c++/12573
482 * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
483 looking into them recursively.
484
485 2003-12-02 Richard Henderson <rth@redhat.com>
486
487 * name-lookup.h (struct cp_binding_level): Use ENUM_BITFIELD.
488 * parser.c (struct cp_token): Likewise.
489 (struct cp_parser_token_tree_map_node): Likewise.
490 * lex.c (struct resword): Move const after ENUM_BITFIELD.
491
492 2003-11-30 Mark Mitchell <mark@codesourcery.com>
493
494 PR c++/9849
495 * parser.c (cp_lexer_prev_token): New function.
496 (cp_parser_skip_to_closing_parenthesis): Add consume_paren
497 parameter.
498 (cp_parser_nested_name_specifier_opt): Add is_declaration
499 parameter.
500 (cp_parser_nested_name_specifier): Likewise.
501 (cp_parser_class_or_namespace_name): Likewise.
502 (cp_parser_class_name): Likewise.
503 (cp_parser_template_id): Likewise.
504 (cp_parser_template_name): Likewise.
505 (cp_parser_id_expression): Adjust calls to
506 cp_parser_nested_name_specifier_op, cp_parser_template_id,
507 cp_parser_class_name.
508 (cp_parser_unqualified_id): Likewise.
509 (cp_parser_postfix_expression): Likewise.
510 (cp_parser_pseudo_destructor_name): Likewise.
511 (cp_parser_cast_expression): Likewise.
512 (cp_parser_mem_initializer_id): Likewise.
513 (cp_parser_simple_type_specifier): Likewise.
514 (cp_parser_type_name): Likewise.
515 (cp_parser_elaborated_type_specifier): Likewise.
516 (cp_parser_qualified_namespace_specifier): Likewise.
517 (cp_parser_using_declaration): Likewise.
518 (cp_parser_using_directive): Likewise.
519 (cp_parser_ptr_operator): Likewise.
520 (cp_parser_declarator_id): Likewise.
521 (cp_parser_class_head): Likewise.
522 (cp_parser_base_specifier): Likewise.
523 (cp_parser_constructor_declarator_p): Likewise.
524 (cp_parser_direct_declarator): Fix typo in comment.
525 (cp_parser_parenthesized_expression_list): Adjust call to
526 cp_parser_skip_to_closing_parenthesis.
527 (cp_parser_selection_statement): Likewise.
528
529 2003-11-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
530
531 PR c++/12924
532 * typeck.c (finish_class_member_access_expr): Handle TEMPLATE_ID_EXPR
533 with OVERLOAD and DECL nodes as the first operand.
534
535 2003-11-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
536
537 * pt.c (tsubst) <ARRAY_REF>: Remove erroneous argument to build_nt.
538
539 2003-11-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
540
541 PR c++/5369
542 * friend.c (is_friend): Handle member function of a class
543 template as template friend.
544 (do_friend): Likewise.
545 * decl2.c (check_classfn): Add template_header_p parameter.
546 * decl.c (start_decl): Adjust check_classfn call.
547 (grokfndecl): Likewise.
548 * pt.c (is_specialization_of_friend): New function.
549 (uses_template_parms_level): Likewise.
550 (push_template_decl_real): Use uses_template_parms_level.
551 (tsubst_friend_function): Adjust check_classfn call.
552 * cp-tree.h (check_classfn): Adjust declaration.
553 (uses_template_parms_level): Add declaration.
554 (is_specialization_of_friend): Likewise.
555
556 2003-11-21 Mark Mitchell <mark@codesourcery.com>
557
558 PR c++/12515
559 * pt.c (build_non_dependent_expr): Handle GNU extension to ?:
560 operator.
561
562 2003-11-21 Jan Hubicka <jh@suse.cz>
563
564 * parser.c (cp_parser_postfix_expression): Initialize 's' to
565 NULL_TREE.
566
567 2003-11-20 Joseph S. Myers <jsm@polyomino.org.uk>
568
569 * Make-lang.in (c++.extraclean): Delete.
570
571 2003-11-20 Joseph S. Myers <jsm@polyomino.org.uk>
572
573 * Make-lang.in (check-g++, lang_checks): Add.
574
575 2003-11-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
576
577 PR c++/12932
578 * class.c (currently_open_derived_class): Check if
579 current_class_type is NULL_TREE.
580 * semantics.c (finish_call_expr): Check if
581 currently_open_derived_class returns NULL_TREE.
582 * cp-tree.h (DERIVED_FROM_P): Add parenthesis around PARENT
583 parameter.
584
585 2003-11-17 Jason Merrill <jason@redhat.com>
586
587 * init.c (build_new_1): Preevaluate placement args.
588 * call.c (build_op_delete_call): Don't expose placement args to
589 overload resolution.
590
591 2003-11-16 Jason Merrill <jason@redhat.com>
592
593 * Make-lang.in (c++.tags): Create TAGS.sub files in each directory
594 and TAGS files that include them for each front end.
595
596 2003-11-15 Bernardo Innocenti <bernie@develer.com>
597
598 PR c++/2294
599 * name-lookup.c: Revert previous patch for PR c++/2294 to prevent
600 build failure on libjava.
601
602 2003-11-14 Giovanni Bajo <giovannibajo@libero.it>
603
604 PR c++/2294
605 * name-lookup.c (push_overloaded_decl): Always construct an OVERLOAD
606 unless the declaration is a built-in.
607 (set_namespace_binding): While binding OVERLOADs with only one
608 declaration, we still need to call supplement_binding.
609
610 2003-11-14 Mark Mitchell <mark@codesourcery.com>
611
612 PR c++/12762
613 * parser.c (cp_parser_enclosed_template_argument_list): New
614 function.
615 (cp_parser_template_id): Use it.
616 (cp_parser_simple_type_specifier): Recognize invalid template
617 syntax.
618
619 2003-11-14 Giovanni Bajo <giovannibajo@libero.it>
620
621 PR c++/2094
622 * pt.c (unify): Add support for PTRMEM_CST and
623 FIELD_DECL unification.
624
625 2003-11-13 Richard Earnshaw <rearnsha@arm.com>
626
627 * decl.c (grokfndecl): Change OK to type tree.
628
629 2003-11-12 Mark Mitchell <mark@codesourcery.com>
630
631 * tree.c (build_target_expr_with_type): Treate VA_ARG_EXPR like
632 CONSTRUCTOR.
633
634 * decl.c (cp_make_fname_decl): When creating a top-level
635 __FUNCTION__-like symbol, do register it with pushdecl.
636
637 * decl.c (finish_case_label): Do not check that we are within a
638 switch statement here.
639 * parser.c (struct cp_parser): Add in_iteration_statement_p and
640 in_switch_statement_p.
641 (cp_parser_new): Initialize them.
642 (cp_parser_labeled_statement): Check validity of case labels
643 here.
644 (cp_parser_selection_statement): Set in_switch_statement_p.
645 (cp_parser_iteration_statement): Set in_iteration_statement_p.
646 (cp_parser_jump_statement): Check validity of break/continue
647 statements here.
648
649 PR c++/12735
650 * cp-tree.h (duplicate_decls): Return a tree.
651 * decl.c (duplicate_decls): Clarify documentation. Return
652 error_mark_node to indicate a failed redeclaration.
653 * friend.c (do_friend): Handle that case.
654 * name-lookup.c (pushdecl): Likewise.
655
656 2003-11-11 Jason Merrill <jason@redhat.com>
657
658 * cp-tree.h (DECL_NAMESPACE_ASSOCIATIONS): New macro.
659 * name-lookup.c (parse_using_directive): New fn.
660 (is_associated_namespace): New fn.
661 (arg_assoc_namespace): Also check associated namespaces.
662 * name-lookup.h: Declare new fns.
663 * pt.c (maybe_process_partial_specialization): Allow
664 specialization in associated namespace.
665 * parser.c (cp_parser_using_directive): Accept attributes. Use
666 parse_using_directive.
667
668 2003-11-10 Richard Henderson <rth@redhat.com>
669
670 * cvt.c (convert_to_void): Use void_zero_node after overload failure.
671
672 2003-11-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
673
674 PR c++/12832
675 * name-lookup.c (supplement_binding): Gracefully handle names
676 used at non-class scope prior declaration.
677
678 2003-11-06 Matt Austern <austern@apple.com>
679
680 * decl.c (duplicate_decls): copy DECL_VISIBILITY field.
681 * method.c (use_thunk): give thunk same visibility as function.
682 * optimize.c (maybe_clone_body): copy DECL_VISIBILITY field.
683
684 2003-11-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
685
686 PR c++/11616
687 * pt.c (instantiate_pending_templates): Save and restore
688 input_location.
689
690 2003-11-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
691
692 PR c++/2019
693 * friend.c (add_friend): Don't display previous declaration in
694 case of duplicate friend warning.
695
696 2003-11-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
697
698 PR c++/9810
699 * call.c (build_over_call): Check access using primary template
700 if FN is a member function template.
701
702 2003-11-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
703
704 PR c++/12796
705 * class.c (handle_using_decl): Set input_location before calling
706 error_not_base_type.
707
708 2003-10-26 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
709
710 PR c++/10371
711 * semantics.c (finish_non_static_data_member): Handle when
712 both processing_template_decl and qualifying_scope are true.
713
714 2003-10-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
715
716 PR c++/11076
717 * class.c (handle_using_decl): Swap arguments of error_not_base_type.
718 * parser.c (cp_parser_direct_declarator): Only resolve typename for
719 namespace scope declarations.
720
721 2003-10-24 Nathan Sidwell <nathan@codesourcery.com>
722
723 PR c++/12698, c++/12699, c++/12700, c++/12566
724 * cp-tree.h (THUNK_ALIAS_P, THUNK_ALIAS): New.
725 (debug_class, debug_thunks): New.
726 * class.c (dump_class_hierarchy_1): New break out from ...
727 (dump_class_hierarchy): ... here.
728 (dump_thunk, debug_thunks, debug_class): New.
729 (update_vtable_entry_for_fn): Add ssizetype casts. Correct
730 continued search for primary binfo via virtual.
731 (build_vtbl_initializer): Follow covariant thunk alias.
732 * method.c (make_thunk): Clear DECL_THUNKS of the thunk.
733 (finish_thunk): Look for an alias of the covariant thunk and point
734 to it.
735 (use_thunk): We should never use an alias.
736 * semantics.c (emit_associated_thunks): Do not emit aliases.
737
738 PR c++/12566
739 * cp-tree.h (cp_fname_init): Add TYPE pointer param.
740 * decl.c (cp_fname_init): Add TYPE pointer param. Set it. Don't
741 create an ad-hoc ERROR_MARK.
742 (cp_make_fname_decl): Adjust.
743 * pt.c (tsubst_expr): Adjust.
744
745 2003-10-23 Jason Merrill <jason@redhat.com>
746
747 PR c++/12726
748 * tree.c (build_target_expr_with_type): Don't call force_rvalue
749 for CONSTRUCTORs.
750
751 2003-10-22 Kazu Hirata <kazu@cs.umass.edu>
752
753 * call.c: Fix comment formatting.
754 * class.c: Likewise.
755 * cxx-pretty-print.c: Likewise.
756 * init.c: Likewise.
757 * parser.c: Likewise.
758 * pt.c: Likewise.
759 * semantics.c: Likewise.
760 * tree.c: Likewise.
761 * typeck.c: Likewise.
762 * typeck2.c: Likewise.
763
764 2003-10-21 Mark Mitchell <mark@codesourcery.com>
765
766 PR c++/11962
767 * typeck.c (build_x_conditional_expr): Handle missing middle
768 operands in templates.
769 * mangle.c (write_expression): Issue errors about attempts to
770 mangle a non-existant middle operator to the ?: operator.
771
772 2003-10-21 Robert Bowdidge <bowdidge@apple.com>
773 * decl.c (cp_finish_decl): Remove clause intended for asm directives
774 in struct or class fields: this code is never executed.
775
776 2003-10-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
777
778 * decl.c (start_decl): Exit if push_template_decl returns
779 error_mark_node.
780
781 2003-10-20 Kazu Hirata <kazu@cs.umass.edu>
782
783 * ChangeLog: Fix typos.
784 * call.c: Fix comment typos.
785 * class.c: Likewise.
786 * cp-tree.h: Likewise.
787 * cvt.c: Likewise.
788 * cxx-pretty-print.c: Likewise.
789 * decl.c: Likewise.
790 * decl2.c: Likewise.
791 * init.c: Likewise.
792 * mangle.c: Likewise.
793 * name-lookup.c: Likewise.
794 * parser.c: Likewise.
795 * search.c: Likewise.
796 * semantics.c: Likewise.
797 * tree.c: Likewise.
798 * typeck.c: Likewise.
799
800 2003-10-20 Jan Hubicka <jh@suse.cz>
801
802 * decl.c (start_cleanup_fn): Set DECL_DECLARED_INLINE_P to deffer
803 the expansion.
804
805 2003-10-20 Mark Mitchell <mark@codesourcery.com>
806
807 * Make-lang.in (c++.install-info): Remove.
808
809 2003-10-20 Jason Merrill <jason@redhat.com>
810
811 * class.c (layout_class_type): Set DECL_ARTIFICIAL on padding
812 field.
813
814 2003-10-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
815
816 PR c++/9781, c++/10583, c++/11862
817 * decl.c (cp_finish_decl): Exit immediately if decl is an
818 error_mark_node.
819 * pt.c (push_template_decl_real): Return error_mark_node for
820 invalid template declaration of variable.
821
822 2003-10-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
823
824 PR c++/12495
825 * pt.c (lookup_template_class): Handle when current_class_type
826 is a local class.
827
828 2003-10-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
829
830 PR c++/2513
831 * decl.c (make_typename_type): Use dependent_type_p.
832 (make_unbound_class_template): Likewise.
833 * pt.c (instantiate_class_template): Increment
834 processing_template_decl during substitution of template friend
835 function. Preincrement processing_template_decl rather than
836 postincrement.
837 (get_mostly_instantiated_function_type): Increment
838 processing_template_decl during partial substitution of function
839 type.
840
841 2003-10-15 Jan Hubicka <jh@suse.cz>
842
843 PR c++/12574
844 * decl2.c (cxx_callgraph_analyze_expr): Deal with baselink.
845
846 2003-10-14 Jason Merrill <jason@redhat.com>
847
848 PR c++/11878
849 * tree.c (build_target_expr_with_type): Call force_rvalue for
850 classes with non-trivial copy ctors.
851
852 PR c++/11063
853 * typeck.c (build_modify_expr): Call convert rather than abort.
854
855 2003-10-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
856
857 Breack out decl.c (3/n)
858 * name-lookup.c: Include flags.h
859 (lookup_name_current_level): Make static.
860 (add_decl_to_level): Likewise.
861 (push_local_binding): Likewise.
862 (push_overloaded_decl): Likewise.
863 (lookup_using_namespace): Likewise.
864 (qualified_lookup_using_namespace): Likewise.
865 (lookup_type_current_level): Likewise.
866 (unqualified_namespace_lookup): Likewise.
867 (namespace_ancestor): Likewise.
868 (push_using_directive): Likewise.
869 * decl.c (pushdecl): Move to name-lookup.c.
870 (pushdecl_top_level_1): Likewise.
871 (pushdecl_top_level): Likewise.
872 (pushdecl_top_level_and_finish): Likewise.
873 (maybe_push_decl): Likewise.
874 (push_using_decl): Likewise.
875 (push_overloaded_decl): Likewise.
876 (make_anon_name): Likewise.
877 (anon_cnt): Likewise.
878 (clear_anon_tags): Likewise.
879 (maybe_inject_for_scope_var): Likewise.
880 (check_for_out_of_scope_variable): Likewise.
881 * Make-lang.in (cp/name-lookup.o): Depend on flags.h.
882 * decl.c (warn_extern_redeclared_static): Export.
883 * cp-tree.h (warn_extern_redeclared_static): Declare.
884
885 2003-10-14 Nathanael Nerode <neroden@gcc.gnu.org>
886
887 * Make-lang.in: Replace uses of $(target_alias) with
888 $(target_noncanonical).
889
890 2003-10-13 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
891
892 * ChangeLog: Add PR number to patch for PR c++/12370.
893
894 2003-10-13 Gabriel Dos Reis <gdr@integrable-solutions.net>
895
896 * name-lookup.h (cxx_scope_find_binding_for_name): Don't export.
897 (binding_for_name): Likewise.
898 (cxx_binding_clear): Move to name-lookup.c.
899 * name-lookup.c (cxx_scope_find_binding_for_name): Now static.
900 (binding_for_name): Likewise.
901 * decl2.c (is_ancestor): Move to name-lookup.c
902 (namespace_ancestor): Likewise.
903 (add_using_namespace): Likewise.
904 (ambiguous_decl): Likewise.
905 (lookup_using_namespace): Likewise.
906 (qualified_lookup_using_namespace): Likewise.
907 (set_decl_namespace): Likewise.
908 (decl_namespace): Likewise.
909 (current_decl_namespace): Likewise.
910 (push_decl_namespace): Likewise.
911 (pop_decl_namespace): Likewise.
912 (push_scope): Likewise.
913 (pop_scope): Likewise.
914 (struct arg_lookup): Likewise.
915 (arg_assoc): Likewise.
916 (arg_assoc_args): Likewise.
917 (arg_assoc_type): Likewise.
918 (add_function): Likewise.
919 (arg_assoc_namespace): Likewise.
920 (arg_assoc_class): Likewise.
921 (arg_assoc_template_arg): Likewise.
922 (do_namespace_alias): Likewise.
923 (validate_nonmember_using_decl): Likewise.
924 (do_nonmember_using_decl): Likewise.
925 (do_toplevel_using_decl): Likewise.
926 (do_local_using_decl): Likewise.
927 (do_class_using_decl): Likewise.
928 (do_using_directive): Likewise.
929 (constructor_name_full): Likewise.
930 (constructor_name): Likewise.
931 (constructor_name_p): Likewise.
932
933 2003-10-13 Gabriel Dos Reis <gdr@integrable-solutions.net>
934
935 Break out decl.c (2/n)
936 * name-lookup.c: Include diagnostic.h
937 (cxx_binding_free): Make static.
938 (cxx_binding_make): Likewise.
939 (binding_table_new): Likewise
940 (binding_table_free): Likewise.
941 (binding_table_insert): Likewise.
942 (binding_table_find_anon_type): Likewise.
943 (binding_table_reverse_maybe_remap): Likewise.
944 (supplement_binding): Likewise.
945 * name-lookup.h (global_scope_name): Declare extern.
946 (global_type_node): Likewise.
947 (cxx_binding_free): Don't export.
948 (cxx_binding_make): Likewise.
949 (binding_table_new): Likewise.
950 (binding_table_free): Likewise.
951 (binding_table_insert): Likewise.
952 (binding_table_find_anon_type): Likewise.
953 (binding_table_reverse_maybe_remap): Likewise.
954 * Make-lang.in (cp/name-lookup.o): Depend on $(DIAGNOSTIC_H)
955 * decl.c (lookup_namespace_name): Move to name-lookup.c
956 (select_decl): Likewise.
957 (unqualified_namespace_lookup): Likewise.
958 (lookup_qualified_name): Likewise.
959 (lookup_name_real): Likewise.
960 (lookup_name_nonclass): Likewise.
961 (lookup_function_nonclass): Likewise.
962 (lookup_name): Likewise.
963 (lookup_name_current_level): Likewise.
964 (lookup_type_current_level): Likewise.
965 (lookup_flags): Likewise.
966 (qualify_lookup): Likewise.
967 (lookup_tag): Likewise.
968 (lookup_tag_reverse): Likewise.
969 (getdecls): Likewise.
970 (storedecls): Remove.
971 (cxx_remember_type_decls): Move to name-lookup.c.
972 (global_bindings_p): Likewise.
973 (innermost_nonclass_level): Likewise.
974 (toplevel_bindings_p): Likewise.
975 (namespace_bindings_p): Likewise.
976 (kept_level_p): Likewise.
977 (innermost_scope_kind): Likewise.
978 (template_parm_scope_p): Likewise.
979 (push_binding): Likewise.
980 (push_local_binding): Likewise.
981 (add_decl_to_level): Likewise. Make extern.
982 (push_class_binding): Move to name-lookup.c.
983 (resume_level): Likewise. Rename to resume_scope.
984 (begin_scope): Move to name-lookup.c.
985 (indent): Likewise.
986 (binding_depth): Likewise.
987 (is_class_level): Likewise.
988 (cxx_scope_descriptor): Likewise.
989 (cxx_scope_debug): Likewise.
990 (namespace_scope_ht_size): Likewise.
991 (leave_scope): Likewise.
992 (pushlevel_class): Likewise.
993 (poplevel_class): Likewise.
994 (clear_identifier_class_values): Likewise.
995 (pushdecl_with_scope): Likewise.
996 (pushdecl_namespace_level): Likewise.
997 (pushdecl_class_level): Likewise.
998 (push_class_level_binding): Likewise.
999 (push_using_directive): Likewise.
1000 (identifier_global_value): Likewise.
1001 (keep_next_level_flag): Likewise.
1002 (keep_next_level): Likewise.
1003 (free_binding_level): Likewise.
1004 (set_class_shadows): Likewise.
1005 (maybe_push_cleanup_level): Likewise.
1006 (cp_namespace_decls): Likewise.
1007 (bt_print_entry): Likewise.
1008 (print_binding_level): Likewise.
1009 (print_other_binding_stack): Likewise.
1010 (print_binding_stack): Likewise.
1011 (push_namespace): Likewise.
1012 (pop_namespace): Likewise.
1013 (push_nested_namespace): Likewise.
1014 (pop_nested_namespace): Likewise.
1015 (cxx_saved_binding_make): Likewise.
1016 (struct cxx_saved_binding_make): Likewise.
1017 (store_bindings): Likewise.
1018 (maybe_push_to_top_level): Likewise.
1019 (push_to_top_level): Likewise.
1020 (pop_from_top_level): Likewise.
1021 (identifier_type_value): Likewise.
1022 (set_identifier_type_value): Likewise.
1023 (set_identifier_type_value_with_scope): Likewise.
1024 (pop_everything): Likewise.
1025 (pushtag): Likewise.
1026 (follow_tag_typedef): Likewise.
1027 (maybe_process_template_type_declaration): Likewise.
1028 (pop_binding): Likewise.
1029 * cp-tree.h: Move corresponding declarations to name-lookup.h
1030
1031 2003-10-12 Steven Bosscher <steven@gcc.gnu.org>
1032
1033 * cvt.c (ocp_convert): Move warning to C common code.
1034
1035 2003-10-09 Jason Merrill <jason@redhat.com>
1036
1037 PR c++/6392
1038 * tree.c (build_cplus_array_type): Handle all quals the same.
1039 (cp_build_qualified_type_real): Look through arrays first.
1040
1041 * tree.c (build_cplus_new): Use build_decl to create a VAR_DECL.
1042 (build_target_expr_with_type): Likewise.
1043
1044 * pt.c (instantiate_class_template): Sanity check that our
1045 enclosing class has been instantiated.
1046
1047 2003-10-08 Giovanni Bajo <giovannibajo@libero.it>
1048
1049 * cp_tree.h: Added TFF_NO_FUNCTION_ARGUMENTS.
1050 * error.c (dump_function_decl): Use it to skip the dump of the
1051 arguments.
1052 (dump_expr): When dumping a declaration found within an
1053 expression, always set TFF_NO_FUNCTION_ARGUMENTS
1054 in the flags.
1055
1056 2003-10-08 Giovanni Bajo <giovannibajo@libero.it>
1057
1058 PR c++/11097
1059 * pt.c (tsubst_decl): Substitute also the DECL_NAME node of
1060 USING_DECL.
1061
1062 2003-10-06 Mark Mitchell <mark@codesourcery.com>
1063
1064 PR c++/10147
1065 * call.c (initialize_reference): Tweak error message.
1066 * cxx-pretty-print.h (cxx_pretty_printer_flags): Remove
1067 pp_cxx_flag_qualified_id and pp_cxx_flag_global_scope.
1068 * cxx-pretty-print.c (pp_cxx_id_expression): Always display
1069 qualified entities using qualified names.
1070
1071 PR c++/12337
1072 * init.c (build_new_1): Make sure that the expression returned is
1073 not an lvalue.
1074
1075 PR c++/12344, c++/12236, c++/8656
1076 * decl.c (start_function): Do not ignore attributes embedded in a
1077 function declarator.
1078
1079 2003-10-06 Mark Mitchell <mark@codesourcery.com>
1080
1081 * Make-lang.in (c++.info): Remove.
1082 (c++.dvi): Remove.
1083 (c++.generated-manpages): Replace with ...
1084 (generated-manpages): ... this.
1085
1086 2003-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
1087
1088 * decl.c (struct cp_binding_level): Move to name-lookup.h
1089 (current_binding_level): Likewise.
1090 (class_binding_level): Likewise.
1091 * cp-tree.h (enum scope_kind): Likewise.
1092
1093 2003-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
1094
1095 * name-lookup.c (binding_entry_free): Nullify name and type
1096 fields.
1097
1098 2003-10-02 Mark Mitchell <mark@codesourcery.com>
1099
1100 PR c++/12486
1101 * typeck.c (finish_class_member_access_expr): Issue diagnostic
1102 on erroneous use of qualified name.
1103
1104 2003-09-30 Richard Henderson <rth@redhat.com>
1105
1106 PR c++/12370
1107 * decl.c (duplicate_decls): Copy DECL_SAVED_INSNS too.
1108
1109 2003-09-30 Kelley Cook <kelleycoook@wideopenwest.com>
1110
1111 * g++spec.c: Convert to ISO C90 prototypes.
1112 * parser.c: Likewise.
1113
1114 2003-09-30 Gabriel Dos Reis <gdr@integrable-solutions.net>
1115
1116 * decl.c (pop_binding): Don't mess with nullifying binding->scope
1117 here.
1118 * name-lookup.c: Re-format.
1119 (cxx_binding_free): Nullify binding->scope.
1120
1121 2003-09-29 Jan Hubicka <jh@suse.cz>
1122
1123 PR C++/12047
1124 * except.c (build_eh_type_type): Call mark_used on the type.
1125
1126 2003-09-28 Richard Henderson <rth@redhat.com>
1127
1128 * typeck.c (c_expand_asm_operands): Take location_t, instead of
1129 individual file and line.
1130
1131 2003-09-28 Andreas Jaeger <aj@suse.de>
1132
1133 * decl.c (cxx_builtin_type_decls): Convert to ISO C90 function
1134 definition.
1135 * init.c (push_base_cleanups): Likewise.
1136 * decl2.c (finish_file): Likewise.
1137 * mangle.c (init_mangle): Likewise.
1138 (dump_substitution_candidates): Likewise.
1139 * search.c: Likewise.
1140
1141 2003-09-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
1142
1143 * name-lookup.h (get_global_value_if_present): New function.
1144 (is_typename_at_global_scope): Likewise.
1145 * except.c (do_begin_catch): Use get_global_value_if_present.
1146 (do_end_catch): Likewise.
1147 (do_allocate_exception): Likewise.
1148 (do_free_exception): Likewise.
1149 (build_throw): Likewise.
1150 * parser.c (cp_parser_member_declaration): Likewise.
1151 * rtti.c (throw_bad_cast): Likewise.
1152 (throw_bad_typeid): Likewise.
1153 * decl.c (check_tag_decl): Use is_typename_at_global_scope.
1154 (grokdeclarator): Likewise.
1155 * cp-tree.h (global_namespace): Move to name-lookup.h
1156 * call.c (call_builtin_trap): Tidy.
1157
1158 2003-09-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1159
1160 PR c++/11415
1161 * parser.c (cp_parser_nested_name_specifier_opt): Issue correct
1162 error message when parser->scope is global_namespace.
1163
1164 2003-09-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
1165
1166 * cp-tree.h, name-lookup.h, decl.c, decl2.c: Remove reference to
1167 macros BINDING_SCOPE, BINDING_VALUE and BINDING_TYPE.
1168
1169 2003-09-26 Gabriel Dos Reis <gdr@integrable-solutions.net>
1170
1171 * decl.c (pop_binding_level, suspend_binding_level,
1172 find_class_binding_level): Merge into leave_scope. Remove.
1173 (leave_scope): New function.
1174 (poplevel): Update.
1175 (poplevel_class): Likewise.
1176 (pop_namespace): Likewise.
1177
1178 2003-09-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1179
1180 PR c++/5655
1181 * parser.c (cp_parser_check_access_in_redeclaration): New function.
1182 (cp_parser_member_declaration): Use it.
1183 (cp_parser_template_declaration_after_export): Likewise.
1184
1185 2003-09-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
1186
1187 * cp-tree.h (scope_kind): Add new enumerator.
1188 (keep_next_level): Change parameter type to bool.
1189 (begin_scope): Change prototype.
1190 (pushlevel): Remove declaration.
1191 * decl.c (push_binding_level): Fold in begin_scope. Remove.
1192 (struct cp_binding_level): Remove tag_tranparent field. Make keep
1193 of bitsize one.
1194 (keep_next_level_flag): Make a bool.
1195 (cxx_scope_descriptor): Update scope names table
1196 (make_cxx_scope): Fold in begin_scope. Remove..
1197 (namespace_scope_ht_size): New function.
1198 (begin_scope): Change prototype. Return a scope. Tidy.
1199 (kept_level_p): Update.
1200 (pushlevel): Remove.
1201 (maybe_push_cleanup_level): Simplify.
1202 (poplevel): Update for sk_cleanup and keep change.
1203 (print_binding_level): Likewise.
1204 (initial_push_namespace_scope): Fold in begin_scope. Remove.
1205 (push_namespace): Update.
1206 (pushtag): Likewise.
1207 (lookup_tag): Likewise.
1208 (lookup_name_current_level): Likewise.
1209 (lookup_type_current_level): Likewise.
1210 (cxx_init_decl_processing): Likewise.
1211 (start_function): Likewise.
1212 (begin_function_body): Likewise.
1213 (start_method): Likewise.
1214 * pt.c (push_inline_template_parms_recursive): Likewise.
1215 (begin_template_parm_list): Likewise.
1216 (begin_specialization): Likewise.
1217 * semantics.c (do_pushlevel): Likewise.
1218 (begin_compound_stmt): Likewise.
1219 (begin_stmt_expr): Likewise.
1220
1221 2003-09-21 Richard Henderson <rth@redhat.com>
1222
1223 * class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
1224 method.c, optimize.c, pt.c, semantics.c, tree.c: Revert.
1225
1226 2003-09-21 Richard Henderson <rth@redhat.com>
1227
1228 * class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
1229 method.c, optimize.c, pt.c, semantics.c, tree.c: Update for
1230 DECL_SOURCE_LOCATION rename and change to const.
1231
1232 2003-09-20 Richard Henderson <rth@redhat.com>
1233
1234 * decl.c, decl2.c, pt.c: Use %J in diagnostics.
1235
1236 2003-09-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1237
1238 PR c++/157
1239 * parser.c (cp_parser_direct_declarator): Clear
1240 parser->num_template_parameter_lists when parsing function
1241 parameters.
1242 (cp_parser_constructor_declarator_p): Likewise.
1243
1244 2003-09-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1245
1246 PR c++/495
1247 * pt.c (tsubst_friend_class): Only use innermost template
1248 arguments for the injected friend class template.
1249
1250 2003-09-19 Nathan Sidwell <nathan@codesourcery.com>
1251
1252 PR c++/12332
1253 * pt.c (instantiate_class_template): Increment
1254 processing_template_decl around the tsubst of a template member
1255 function.
1256
1257 2003-09-19 Gabriel Dos Reis <gdr@integrable-solutions.net>
1258
1259 * decl.c (cxx_scope_descriptor): Fix thinko.
1260 (struct cp_binding_level): Adjust type of binding_depth field.
1261
1262 2003-09-18 Danny Smith <dannysmith@users.sourceforge.net>
1263
1264 PR c++/12320
1265 * call.c (type_passed_as): Check for incomplete type.
1266 (convert_for_arg_passing): Likewise.
1267
1268 2003-09-18 Nathan Sidwell <nathan@codesourcery.com>
1269
1270 PR c++/9848
1271 * optimize.c (maybe_clone_body): Don't set MARK_USED on parameters
1272 here.
1273 * semantics.c (expand_body): Set it here on the remaining clones.
1274
1275 2003-09-18 Roger Sayle <roger@eyesopen.com>
1276
1277 * lex.c (init_operators): Remove operator_name_info for FFS_EXPR.
1278 * class.c (instantiate_type): Remove FFS_EXPR case.
1279
1280 2003-09-18 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1281
1282 * ChangeLog: Fix recent commit.
1283
1284 2003-09-18 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1285
1286 * ChangeLog: Add PR number to patch for PR c++/12316.
1287
1288 2003-09-18 Gabriel Dos Reis <gdr@integrable-solutions.net>
1289
1290 * error.c (dump_type): Simplify. Use pp_type_specifier_seq for
1291 "C" types.
1292 * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Fix thinko.
1293
1294 2003-09-17 Richard Henderson <rth@redhat.com>
1295
1296 * semantics.c (expand_body): Don't save/restore input_location.
1297
1298 2003-09-17 Mark Mitchell <mark@codesourcery.com>
1299
1300 PR c++/12266
1301 * cp-tree.h (tsubst_flags_t): Add tf_conv.
1302 * class.c (standard_conversion): Pass tf_conv to
1303 instantiate_type.
1304 (resolve_address_of_overloaded_function): Do not call mark_used
1305 when just checking conversions.
1306
1307 PR debug/12066
1308 * cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define.
1309 * cp-tree.h (cxx_builtin_type_decls): Declare.
1310 * decl.c (builtin_type_decls): New variables.
1311 (cxx_builtin_type_decls): New function.
1312 (record_builtin_type): Add to builtin_type_decls.
1313
1314 2003-09-17 Richard Henderson <rth@redhat.com>
1315
1316 PR c++/12316
1317 * semantics.c (expand_or_defer_fn): Inc/dec function_depth.
1318
1319 2003-09-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1320
1321 PR c++/7939
1322 * typeck.c (comptypes): Don't ICE when its first argument is
1323 error_mark_node.
1324 (compparms): Reverse the arguments of same_type_p.
1325
1326 2003-09-15 Nathan Sidwell <nathan@codesourcery.com>
1327
1328 PR c++/12184
1329 * typeck.c (convert_arguments): Return error_mark_node for an
1330 incomplete parameter. Make error message more informative.
1331
1332 2003-09-12 Mark Mitchell <mark@codesourcery.com>
1333
1334 PR c++/3907
1335 * class.c (maybe_note_name_used_in_class): Refine test for whether
1336 or not we are in a class scope.
1337
1338 * cp-tree.h (language_function): Remove x_expanding_p.
1339 (expanding_p): Remove.
1340 (doing_semantic_analysis_p): Remove.
1341 (scope_kind): Add sk_function_parms, sk_class,
1342 sk_namespace.
1343 (innermost_scope_kind): New method.
1344 * call.c (cxx_type_promotes_to): Use type_decays_to.
1345 * cp-lang.c (LANG_HOOKS_PUSHLEVEL): Redefine.
1346 (LANG_HOOKS_POPLEVEL): Likewise.
1347 * decl.c (cp_binding_level): Remove parm_flag, template_parms_p,
1348 template_spec_p, namespace_p, is_for_scope, is_try_scope, and
1349 is_catch_scope. Add kind and explicit_spec_p.
1350 (cxx_scope_descriptor): Use a lookup table.
1351 (find_class_binding_level): Use "kind" field in binding_level, not
1352 the various flags.
1353 (pop_binding_level): Likewise.
1354 (innermost_nonclass_level): Likewise.
1355 (toplevel_bindings_p): Likewise.
1356 (namespace_bindings_p): Likewise.
1357 (template_parm_scope_p): Likewise.
1358 (innermost_scope_kind): New method.
1359 (current_tmpl_spec_kind): Use "kind" field in binding_level, not
1360 the various flags.
1361 (pushlevel): Remove check for doing_semantic_analysis_p.
1362 (begin_scope): Simplify.
1363 (add_decl_to_level): Use "kind" field in binding_level, not
1364 the various flags.
1365 (push_local_binding): Likewise.
1366 (pop_label): Remove check for doing_semantic_analysis_p.
1367 (poplevel): Use "kind" field in binding_level, not
1368 the various flags.
1369 (set_block): Remove check for doing_semantic_analysis_p.
1370 (pushlevel_class): Use "kind" field in binding_level, not
1371 the various flags.
1372 (poplevel_class): Likewise.
1373 (initial_push_namespace_scope): Likewise.
1374 (maybe_push_to_top_level): Likewise.
1375 (set_identifier_type_value_with_scope): Likewise.
1376 (pop_everything): Likewise.
1377 (maybe_process_template_type_declaration): Likewise.
1378 (pushtag): Likewise.
1379 (pushdecl): Likewise.
1380 (pushdecl_with_scope): Likewise.
1381 (check_previous_goto_1): Likewise.
1382 (define_label): Likewise.
1383 (finish_case_label): Likewise.
1384 (lookup_tag): Likewise.
1385 (unqualified_namespace_lookup): Likewise.
1386 (lookup_name_real): Likewise.
1387 (lookup_name_current_level): Likewise.
1388 (lookup_type_current_level): Likewise.
1389 (record_builtin_type): Likewise.
1390 (cp_make_fname_decl): Likewise.
1391 (maybe_inject_for_scope_var): Likewise.
1392 (cp_finish_decl): Remove check for doing_semantic_analysis_p.
1393 (start_function): Use begin_scope, not pushlevel.
1394 (finish_function): Use "kind" field in binding_level, not
1395 the various flags.
1396 (start_method): Use begin_scope, not pushlevel.
1397 (make_label_decl): Do not check expanding_p.
1398 (save_function-data): Do not set expanding_p.
1399 (cxx_push_function_context): Do not clear expanding_p.
1400 * semantics.c (cxx_expand_function_start): Do not set expanding_p.
1401
1402 2003-09-14 Mark Mitchell <mark@codesourcery.com>
1403
1404 * class.c (layout_class_type): Make DECL_MODE match TYPE_MODE for
1405 an bit-field whose width exceeds that of its type.
1406
1407 2003-09-14 Geoffrey Keating <geoffk@apple.com>
1408
1409 * rtti.c (get_tinfo_decl): Set TREE_PUBLIC for typeinfo decls.
1410
1411 2003-09-14 Kazu Hirata <kazu@cs.umass.edu>
1412
1413 * ChangeLog: Follow spelling conventions.
1414 * parser.c: Likewise.
1415
1416 2003-09-13 Richard Henderson <rth@redhat.com>
1417
1418 * decl2.c (finish_file): Check cgraph_assemble_pending_functions
1419 during relaxation loop.
1420
1421 2003-09-11 David Edelsohn <edelsohn@gnu.org>
1422
1423 * decl2.c (var_finalized_p): Swap arms of conditional.
1424
1425 2003-09-10 Nathan Sidwell <nathan@codesourcery.com>
1426
1427 PR c++/11788
1428 * typeck.c (build_address): If it is a function, mark it used.
1429 (build_unary_op): Do not lose object's side-effects when taking
1430 address of static member function.
1431 * class.c (resolve_address_of_overloaded_function): Use
1432 tsubst_flags_t parameter. Only expect overload sets. Adjust.
1433 (instantiate_type): Adjust flags passing. Do not lose object's
1434 side-effects when taking address of static member function.
1435
1436 2003-09-11 Richard Henderson <rth@redhat.com>
1437
1438 * semantics.c (expand_or_defer_fn): Update for new
1439 cgraph_finalize_function argument.
1440
1441 2003-09-10 Richard Henderson <rth@redhat.com>
1442
1443 * decl2.c (cxx_callgraph_analyze_expr): Mark argument unused.
1444
1445 2003-09-10 Jan Hubicka <jh@suse.cz>
1446
1447 * decl2.c (var_finalized_p): New.
1448 (maybe_emit_vtables, write_out_vars, finish_file): Use it.
1449
1450 2003-09-10 Richard Henderson <rth@redhat.com>
1451
1452 * decl2.c (cxx_callgraph_analyze_expr): New, from corpse of
1453 mark_member_pointers.
1454 (lower_function): Remove.
1455 * cp-tree.h: Update to match.
1456 * cp-lang.c (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): New.
1457 (LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Remove.
1458
1459 2003-09-09 Richard Henderson <rth@redhat.com>
1460
1461 * semantics.c (expand_or_defer_fn): Update call to
1462 cgraph_finalize_function.
1463
1464 * semantics.c (expand_or_defer_fn): Use cgraph_finalize_function
1465 always.
1466
1467 * decl2.c (finish_file): Avoid out-of-bounds array reference
1468 during memmove.
1469
1470 2003-09-09 Richard Henderson <rth@redhat.com>
1471
1472 * decl2.c (mark_member_pointers): Rename from
1473 mark_member_pointers_and_eh_handlers and don't check eh handlers.
1474
1475 2003-09-09 Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de>
1476
1477 PR bootstrap/12168
1478 * method.c (use_thunk): Clear DECL_RTL of copied nodes.
1479
1480 2003-09-08 Mark Mitchell <mark@codesourcery.com>
1481
1482 * cp-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to
1483 c_register_builtin_type.
1484
1485 PR c++/11786
1486 * decl2.c (add_function): Do not complain about seeing the same
1487 non-function twice.
1488 * semantics.c (perform_koenig_lookup): Improve documentation.
1489
1490 PR c++/5296
1491 * pt.c (try_one_overload): Add addr_p parameter.
1492 (resolve_overloaded_unification): Pass it.
1493
1494 2003-09-08 Richard Henderson <rth@redhat.com>
1495
1496 * optimize.c (maybe_clone_body): Inc/dec function_depth.
1497
1498 2003-09-08 Richard Henderson <rth@redhat.com>
1499
1500 * decl.c (finish_function): Clear current_function_decl.
1501 * decl2.c (mark_used): Don't push/pop gc context.
1502 * optimize.c (optimize_function): Likewise.
1503 * tree.c (cp_cannot_inline_tree_fn): Likewise.
1504 * pt.c (instantiate_decl): Inc/dec function_depth instead.
1505 * semantics.c (expand_body): Update for tree_rest_of_compilation
1506 nested argument.
1507
1508 2003-09-07 Gabriel Dos Reis <gcc@integrable-solutions.net>
1509
1510 PR c++/11762
1511 * error.c (dump_decl): Handle namespace-alias-definition.
1512 * decl.c (warn_extern_redeclared_static): There is no point in
1513 checking changes in storage class specifier for a namespace
1514 declaration.
1515 (duplicate_decls): Tidy diagnostic message.
1516 * cxx-pretty-print.c (pp_cxx_left_brace): New macro.
1517 (pp_cxx_right_brace): Likewise.
1518 (pp_cxx_original_namespace_definition): New function.
1519 (pp_cxx_namespace_alias_definition): Likewise.
1520 (pp_cxx_declaration): Use them. Handle NAMESPACE_DECLs.
1521
1522 2003-09-07 Jan Hubicka <jh@suse.cz>
1523
1524 * decl2.c (maybe_emit_vtables, write_out_vars, finish_file):
1525 Avoid re-emitting variables in unit-at-a-time mode.
1526
1527 2003-09-06 Mark Mitchell <mark@codesourcery.com>
1528
1529 PR c++/11867
1530 * call.c (standard_conversion): Improve comments.
1531 (perform_direct_initialization): Make sure we return an expression
1532 of the correct type.
1533 * typeck.c (build_static_cast): Check for ambiguity and
1534 accessibility when performing conversions.
1535
1536 2003-09-06 Gabriel Dos Reis <gdr@integrable-solutions.net>
1537
1538 * cp-tree.h (add_binding): Remove declaration.
1539 * name-lookup.h (supplement_binding): Declare.
1540 * decl.c (add_binding): Move to name-lookup.c.
1541 (push_local_binding): Adjust.
1542 (push_class_binding): Likewise.
1543 (set_identifier_type_value_with_scope): Likewise.
1544 * name-lookup.c (supplement_binding): Rename from add_binding.
1545 Return a bool. Improve documentation.
1546 (set_namespace_binding): Adjust.
1547 * Make-lang.in (cp/name-lookup.o): Depend on toplev.h
1548
1549 2003-09-06 Nathan Sidwell <nathan@codesourcery.com>
1550
1551 PR c++/11794
1552 * class.c (pushclass): Push dependent using decls for nested
1553 classes of templates too.
1554
1555 2003-09-06 Roger Sayle <roger@eyesopen.com>
1556
1557 PR c++/11409
1558 * class.c (resolve_address_of_overloaded_function): When building
1559 list of matching non-template function decls, ignore anticipated
1560 declarations of undeclared or shadowed GCC builtins.
1561
1562 2003-09-06 Steven Bosscher <steven@gcc.gnu.org>
1563
1564 PR c++/11595
1565 * decl.c (define_label): Remove unreachable timevar pop.
1566 Always return the decl, even if the definition is invalid.
1567
1568 2003-09-06 Nathan Sidwell <nathan@codesourcery.com>
1569
1570 PR c++/12167
1571 * parser.c (cp_parser_late_parsing_default_args): Push & pop the
1572 unparsed functions queue.
1573
1574 2003-09-05 Mark Mitchell <mark@codesourcery.com>
1575
1576 PR c++/12163
1577 * call.c (perform_direct_initialization): Correct logic for
1578 direct-initialization of a class type.
1579
1580 PR c++/12146
1581 * pt.c (lookup_template_function): Robustify.
1582
1583 2003-09-05 Nathan Sidwell <nathan@codesourcery.com>
1584
1585 PR c++/11922
1586 * pt.c (tsubst_qualified_id): Make sure we get a non-type.
1587 (tsubst_expr, tsubst_copy_and_build): Pass false, not zero, as
1588 is_type_p to lookup_qualified_name.
1589
1590 * semantics.c (finish_call_expr): Refactor some code.
1591
1592 PR c++/12037
1593 * cp-tree.h (COMPOUND_EXPR_OVERLOADED): New.
1594 (build_min_non_dep): Declare.
1595 * tree.c (build_min): Propagate TREE_SIDE_EFFECTS.
1596 (build_min_non_dep): New.
1597 * cvt.c (convert_to_void): Don't explicitly copy
1598 TREE_SIDE_EFFECTS, TREE_NO_UNUSED_WARNING.
1599 * call.c (build_new_method_call): Use build_min_non_dep.
1600 * decl2.c (grok_array_decl): Likewise.
1601 (build_offset_ref_call_from_tree): Likewise.
1602 * typeck.c (finish_class_member_access_expr,
1603 build_x_indirect_ref, build_x_binary_op, build_x_unary_op,
1604 build_x_conditional_expr, build_x_compound_expr): Likewise.
1605 (build_static_cast, build_reinterpret_cast,
1606 build_const_cast): Propagate TREE_SIDE_EFFECTS inside a template.
1607 * typeck2.c (build_x_arrow): Use build_min_non_dep.
1608 (build_functional_cast): Propagate TREE_SIDE_EFFECTS inside a
1609 template.
1610 * rtti.c (build_dynamic_cast_1): Set DECL_IS_PURE.
1611 (build_dynamic_cast): Set TREE_SIDE_EFFECTS.
1612 * pt.c (build_non_dependent_expr): Check COMPOUND_EXPR_OVERLOADED.
1613
1614 2003-09-04 Richard Henderson <rth@redhat.com>
1615
1616 * decl2.c (mark_member_pointers_and_eh_handlers): Update for
1617 change in cgraph_mark_needed_node arguments.
1618
1619 2003-09-02 Geoffrey Keating <geoffk@apple.com>
1620
1621 PR 12161
1622 * decl2.c (mark_used): Use ggc_push_context/ggc_pop_context.
1623 * tree.c (cp_cannot_inline_tree_fn): Likewise.
1624
1625 2003-09-04 Nathan Sidwell <nathan@codesourcery.com>
1626
1627 * cp-tree.h (finish_sizeof, finish_alignof): Remove.
1628 (expr_sizeof): Replace with ...
1629 (cxx_sizeof_or_alignof_expr): ... here.
1630 (cxx_sizeof_or_alignof_type): Make complain parameter a bool.
1631 * parser.c (cp_parser_unary_expression): Commonize alignof and
1632 sizeof handling.
1633 * pt.c (tsubst_copy_and_build): Adjust alignof and sizeof
1634 substitution.
1635 * semantics.c (finish_sizeof, finish_alignof): Remove.
1636 * typeck.c (cxx_sizeof_or_alignof_type): Complain parameter
1637 becomes bool. Set TREE_READONLY.
1638 (expr_sizeof): Replace with ...
1639 (cxx_sizeof_or_alignof_expr): ... here. Clear TREE_SIDE_EFFECTS.
1640
1641 2003-09-04 Mark Mitchell <mark@codesourcery.com>
1642
1643 Remove cast-as-lvalue extension.
1644 * call.c (build_conditional_expr): Correct formatting.
1645 (convert_like_real): Use lvalue_p, not non_cast_lvalue_p.
1646 (initialize_real): Use real_lvalue_p, not real_non_cast_lvalue_p.
1647 * cp-tree.h (non_cast_lvalue_p): Remove.
1648 (real_non_cast_lvalue_p): Remove.
1649 (non_cast_lvalue_or_else): Remove.
1650 * tree.c (lvalue_p_1): Remove allow_cast_as_lvalue parameter.
1651 (real_lvalue_p): Adjust call to lvalue_p_1.
1652 (non_cast_lvalue_p): Remove.
1653 (non_cast_lvalue_or_else): Remove.
1654 (lvalue_p): Adjust call to lvalue_p_1.
1655 (lvalue_or_else): Simplify.
1656 * typeck.c (build_unary_op): Use lvalue_or_else, not
1657 non_cast_lvalue_or_else.
1658 (build_static_cast): Use real_lvalue_p, not real_non_cast_lvalue_p.
1659
1660 2003-09-03 DJ Delorie <dj@redhat.com>
1661
1662 * decl.c (finish_function): Pass fndecl to aggregate_value_p.
1663
1664 2003-09-03 Mark Mitchell <mark@codesourcery.com>
1665
1666 PR c++/12053
1667 * class.c (include_empty_classes): Correct logic for ABI version 1.
1668
1669 2003-09-03 Richard Henderson <rth@redhat.com>
1670
1671 * optimize.c (optimize_function): Push/pop ggc context around
1672 the call to optimize_inline_calls.
1673
1674 2003-09-02 Scott Brumbaugh <scottb.lists@verizon.net>
1675
1676 PR c++/11553
1677 * parser.c (cp_parser_decl_specifier_seq): Add check for a
1678 duplicate friend decl-specifier.
1679
1680 2003-09-02 Mark Mitchell <mark@codesourcery.com>
1681
1682 PR c++/11847
1683 * pt.c (convert_nontype_argument): Correct representation of
1684 REFERENCE_TYPE expressions.
1685
1686 PR c++/11808
1687 * cp-tree.h (KOENIG_LOOKUP_P): New macro.
1688 (finish_call_expr): Change prototype.
1689 * parser.c (cp_parser_postfix_expression): Adjust call to
1690 finish_call_expr.
1691 * pt.c (tsubst_copy_and_build): Use KOENIG_LOOKUP_P.
1692 * semantics.c (finish_call_expr): Add koenig_p parameter.
1693
1694 2003-09-01 Mark Mitchell <mark@codesourcery.com>
1695
1696 PR c++/12114
1697 * cp-tree.h (initialize_reference): Change prototype.
1698 * call.c (initialize_reference): Add cleanup parameter.
1699 * decl.c (grok_reference_init): Likewise.
1700 (check_initializer): Likewise.
1701 (cp_finish_decl): Insert a CLEANUP_STMT if necessary.
1702 (duplicate_decls): When replacing an anticipated builtin, do not
1703 honor TREE_NOTHROW.
1704 * typeck.c (convert_for_initialization): Correct call to
1705 initialize_reference.
1706
1707 PR c++/11972
1708 * pt.c (dependent_type_p_r): Pass only the innermost template
1709 arguments to any_dependent_template_arguments_p.
1710
1711 2003-09-01 Josef Zlomek <zlomekj@suse.cz>
1712
1713 * error.c (dump_expr): Kill BIT_ANDTC_EXPR.
1714 * lex.c (init_operators): Kill BIT_ANDTC_EXPR.
1715 * pt.c (tsubst_copy): Kill BIT_ANDTC_EXPR.
1716 * typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR.
1717 (tsubst_copy_and_build): Kill BIT_ANDTC_EXPR.
1718
1719 2003-08-29 Mark Mitchell <mark@codesourcery.com>
1720
1721 PR c++/12093
1722 * pt.c (build_non_dependent_expr): Do not build a
1723 NON_DEPENDENT_EXPR for a STRING_CST.
1724
1725 PR c++/11928
1726 * search.c (add_conversions): Avoid adding two conversion
1727 operators for the same type.
1728
1729 2003-08-29 Mark Mitchell <mark@codesourcery.com>
1730
1731 PR c++/6196
1732 * pt.c (tsubst_copy_and_build): Correct handling of
1733 address-of-label extension.
1734 * semantics.c (finish_goto_stmt): The address of a label must go
1735 through the lvalue-to-rvalue conversion.
1736
1737 2003-08-29 Richard Henderson <rth@redhat.com>
1738 Jason Merrill <jason@redhat.com>
1739
1740 * cp-lang.c (LANG_HOOKS_RTL_EXPAND_START): New.
1741 (LANG_HOOKS_RTL_EXPAND_STMT): New.
1742 * cp-tree.h (cxx_expand_function_start): Declare.
1743 * decl.c (start_function): Use allocate_struct_function.
1744 Move stmts_are_full_exprs_p assertion from expand_body.
1745 Do not free_after_parsing or free_after_compilation.
1746 (cxx_push_function_context): Move code to set struct function
1747 data from genrtl_start_function.
1748 * optimize.c (optimize_function): Don't inc/dec function_depth.
1749 * semantics.c (expand_body): Use tree_rest_of_compilation.
1750 (cxx_expand_function_start): Rename from genrtl_start_function,
1751 omit bits done by tree_rest_of_compilation.
1752 (genrtl_finish_function): Remove.
1753 (clear_decl_rtl): Move to ../tree-optimize.c.
1754
1755 2003-08-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
1756
1757 PR c++/11811
1758 * cxx-pretty-print.c (pp_cxx_canonical_template_parameter): New
1759 function.
1760 * cxx-pretty-print.h: Declare.
1761 * error.c (dump_template_parameter): Use it.
1762 (dump_type): Likewise.
1763
1764 2003-08-28 Mark Mitchell <mark@codesourcery.com>
1765
1766 * init.c (decl_constant_value): Deal with COND_EXPR specially.
1767 * call.c (build_conditional_expr): Revert previous patch.
1768
1769 PR optimization/5079
1770 * call.c (build_conditional_expr): Use decl_constant_value to
1771 simplify the arguments.
1772
1773 2003-08-26 Dan Nicolaescu <dann@ics.uci.edu>
1774
1775 * parser.c (struct cp_token): Use enum bitfields.
1776 (CP_TOKEN_BLOCK_NUM_TOKENS): Make sure cp_token_block fits in a
1777 512B allocation unit.
1778 (cp_parser_token_tree_map_node): Use enum bitfields.
1779
1780 2003-08-26 Nathan Sidwell <nathan@codesourcery.com>
1781
1782 PR c++/11871
1783 * decl.c (push_class_level_binding): Correct old_decl value from
1784 my 2003-07-29 reorganization.
1785
1786 * call.c (build_call): Don't set TREE_SIDE_EFFECTS here.
1787 (build_new_method_call): Add goto finish.
1788 * semantics.c (simplify_aggr_init_exprs_r): Don't set
1789 TREE_SIDE_EFFECTS on a call.
1790
1791 2003-08-25 Richard Henderson <rth@redhat.com>
1792
1793 * cxx-pretty-print.c (pp_cxx_class_name): Remove unused function.
1794
1795 2003-08-25 Gabriel Dos Reis <gdr@integrable-solutions.net>
1796
1797 * cxx-pretty-print.h (pp_cxx_flag_default_argument): New flag.
1798 (cxx_pretty_printer): Adjust base type.
1799 (pp_cxx_function_specifier): Declare.
1800 * cxx-pretty-print.c (pp_cxx_whitespace): New macro.
1801 (pp_cxx_left_paren): Likewise.
1802 (pp_cxx_right_paren): Likewise.
1803 (pp_cxx_dot): Likewise.
1804 (pp_cxx_arrow): Likewise.
1805 (pp_cxx_semicolon): Likewise.
1806 (pp_cxx_identifier): Likewise.
1807 (pp_cxx_cv_qualifier_seq): Likewise.
1808 (pp_cxx_storage_class_specifier): Likewise.
1809 (pp_cxx_expression_list): Likewise.
1810 (pp_cxx_space_for_pointer_operator): Likewise.
1811 (pp_cxx_init_declarator): Likewise.
1812 (pp_cxx_call_argument_list): Likewise.
1813 (pp_cxx_nonconsecutive_character): Tidy.
1814 (pp_cxx_conversion_function_id): New function.
1815 (pp_cxx_template_id): Likewise.
1816 (pp_cxx_template_keyword_if_needed): Likewise.
1817 (pp_cxx_nested_name_specifier): Likewise.
1818 (pp_cxx_unqualified_id): Tidy
1819 (pp_cxx_qualified_id): Handle more nodes.
1820 (pp_cxx_primary_expression): Tidy.
1821 (pp_cxx_postfix_expression): Likewise.
1822 (pp_cxx_new_expression): Tidy.
1823 (pp_cxx_delete_expression): Likewise.
1824 (pp_cxx_cast_expression): New function.
1825 (pp_cxx_pm_expression): Tidy.
1826 (pp_cxx_conditional_expression): Likewise.
1827 (pp_cxx_assignment_operator): New function.
1828 (pp_cxx_assignment_expression): Tidy.
1829 (pp_cxx_expression): New function.
1830 (pp_cxx_function_specifier): Likewise.
1831 (pp_cxx_decl_specifier_seq): Likewise.
1832 (pp_cxx_simple_type_specifier): Tidy.
1833 (pp_cxx_type_specifier_seq): Likewise.
1834 (pp_cxx_ptr_operator): New function.
1835 (pp_cxx_implicit_parameter_type): Likewise.
1836 (pp_cxx_parameter_declaration): Tidy.
1837 (pp_cxx_parameter_declaration_clause): New function.
1838 (pp_cxx_exception_specification): Likewise.
1839 (pp_cxx_direct_declarator): Tidy.
1840 (pp_cxx_declarator): Likewise.
1841 (pp_cxx_ctor_initializer): New function.
1842 (pp_cxx_function_definition): Likewise.
1843 (pp_cxx_abstract_declarator): Tidy.
1844 (pp_cxx_direct_abstract_declarator): Likewise.
1845 (pp_cxx_type_id): Likewise.
1846 (pp_cxx_exception_declaration): New function.
1847 (pp_cxx_statement): Likewise.
1848 (pp_cxx_simple_declaration): Likewise.
1849 (pp_cxx_template_parameter_list): Likewise.
1850 (pp_cxx_template_parameter): Likewise.
1851 (pp_cxx_template_declaration): Likewise.
1852 (pp_cxx_explicit_specialization): Likewise.
1853 (pp_cxx_explicit_instantiation): Likewise.
1854 (pp_cxx_declaration): Tidy.
1855 (pp_cxx_pretty_printer_init): Initialize more fields.
1856
1857 2003-08-25 Mark Mitchell <mark@codesourcery.com>
1858
1859 PR c++/8795
1860 * cp-tree.h (build_cplus_method_type): Remove.
1861 * call.c (standard_conversion): Use build_method_type_directly
1862 instead of build_cplus_method_type.
1863 * class.c (build_clone): Likewise.
1864 (adjust_clone_args): Likewise.
1865 * decl.c (build_ptrmem_type): Likewise.
1866 (grokdeclarator): Likewise.
1867 (check_function_type): Likewise.
1868 * decl2.c (grok_method_quals): Likewise.
1869 (maybe_retrofit_in_chrg): Likewise.
1870 * pt.c (copy_default_args_to_explicit_spec): Likewise.
1871 (tsubst_function_type): Likewise.
1872 (tsubst): Likewise.
1873 * tree.c (build_cplus_method_type): Remove.
1874 * typeck.c (merge_types): Use build_method_type_directly.
1875
1876 2003-08-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1877
1878 PR c++/3765
1879 * search.c (dfs_access_in_type): Fix typo in comment.
1880 (dfs_accessible_queue_p): Likewise.
1881 (dfs_accessible_p): Only terminate when a friend is found.
1882 (accessible_p): Return immediately if access_in_type allows
1883 access.
1884
1885 2003-08-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1886
1887 PR c++/641, c++/11876
1888 * friend.c (add_friend): Add complain parameter.
1889 (make_friend_class): Likewise.
1890 (do_friend): Adjust add_friend call.
1891 * decl.c (grokdeclarator): Adjust make_friend_class call.
1892 * parser.c (cp_parser_member_declaration): Likewise.
1893 (cp_parser_template_declaration_after_export): Likewise.
1894 * pt.c (instantiate_class_template): Adjust make_friend_class
1895 and add_friend call.
1896 * cp-tree.h (make_friend_class): Adjust declaration.
1897 (add_friend): Likewise.
1898
1899 2003-08-21 Jason Merrill <jason@redhat.com>
1900
1901 PR c++/11283
1902 * call.c (build_conditional_expr): Ignore cv-qual differences for
1903 non-class types.
1904
1905 2003-08-21 Mark Mitchell <mark@codesourcery.com>
1906
1907 PR c++/11551
1908 * parser.c (cp_parser_id_expression): Add declarator_p parameter.
1909 (cp_parser_primary_expression): Adjust call to
1910 cp_parser_id_expression.
1911 (cp_parser_unqualified_id): Complain about the use of
1912 typedef-names in a destructor declarator.
1913 (cp_parser_postfix_expression): Adjust call to
1914 cp_parser_id_expression.
1915 (cp_parser_type_parameter): Likewise.
1916 (cp_parser_template_argument): Likewise.
1917 (cp_parser_declarator_id): Likewise.
1918
1919 PR c++/11919
1920 * call.c (standard_conversion): Use same_type_p, not pointer
1921 equality, to compare types.
1922
1923 PR c++/10762
1924 * parser.c (cp_parser_using_declaration): Check for invalid uses
1925 of template-ids here...
1926 * decl2.c (do_class_using_decl): ... rather than here.
1927
1928 2003-08-20 Mark Mitchell <mark@codesourcery.com>
1929
1930 PR c++/11834
1931 * pt.c (more_specialized): Bump processing_template_decl.
1932
1933 2003-08-21 Jason Merrill <jason@redhat.com>
1934
1935 PR c++/11614
1936 * decl.c (grokdeclarator): Recognize a flexible array based on the
1937 type, not the form of the declarator.
1938
1939 2003-08-20 Jason Merrill <jason@redhat.com>
1940
1941 * semantics.c (simplify_aggr_init_expr): Split out from
1942 simplify_aggr_init_exprs_r. Convert slot address to match
1943 the return type.
1944 * cp-tree.h: Declare it.
1945 * tree.c (cp_copy_res_decl_for_inlining): Don't clobber the
1946 DECL_NAME of a user variable.
1947
1948 2003-08-20 Nathan Sidwell <nathan@codesourcery.com>
1949
1950 PR c++/11945
1951 * pt.c (build_non_dependent_expr): Look inside COND_EXPR and
1952 COMPOUND_EXPR.
1953 * semantics.c (finish_expr_stmt): Always convert to void.
1954 * typeck.c (build_x_compound_exp): Always convert to void.
1955
1956 2003-08-19 Mark Mitchell <mark@codesourcery.com>
1957
1958 PR c++/11684
1959 * cp-tree.h (grok_op_properties): Change prototype.
1960 * decl.c (grok_op_properties): Add complain parameter.
1961 (grokfndecl): Pass it.
1962 * pt.c (tsubst_decl): Adjust accordingly.
1963
1964 PR c++/10926
1965 * decl.c (start_method): Return immediately if push_template_decl
1966 does not like the declaration.
1967 * pt.c (push_template_decl_real): Disallow member template
1968 destructors.
1969
1970 PR c++/11036
1971 * cp-tree.h (add_binding): Add prototype.
1972 * class.c (add_method): Set TYPE_HAS_DESTRUCTOR if appropriate.
1973 (maybe_warn_about_overly_private_class): Use
1974 CLASSTYPE_DESTRUCTORS.
1975 (pushclass): Adjust call to set_identifier_type_value.
1976 * decl.c (add_binding): Give it external linkage.
1977 (push_local_binding): Adjust call to add_binding.
1978 (push_class_binding): Likewise.
1979 (set_identifier_type_value_with_scope): Change prototype. Use
1980 add_binding for global bindings.
1981 (set_identifier_type_value): Adjust accordingly.
1982 (pushtag): Likewise.
1983 (pushdecl): Use set_identifier_type_value, not
1984 set_identifier_type_value_with_scope.
1985 (pushdecl_namespace_level): Adjust calls to
1986 SET_IDENTIFIER_TYPE_VALUE to pass a DECL.
1987 (pushdecl_class_level): Likewise.
1988 (lookup_tag): Use select_decl.
1989 (select_decl): Improve comment.
1990 (record_builtin_type): Do not call pushdecl.
1991 (cxx_init_decl_processing): Do not call xref_tag for bad_alloc.
1992 (cp_finish_decl): Adjust call to set_identifier_type_value.
1993 (check_elaborated_type_specifier): Improve checks for invalid uses
1994 of typedefs.
1995 (xref_tag): Adjust call to check_elaborated_type_specifier.
1996 * decl2.c (grokclassfn): Do not set TYPE_HAS_DESTRUCTOR.
1997 * name-lookup.c (set_namespace_binding): Use add_binding.
1998 * parser.c (cp_parser_simple_type_specifier): Return a TYPE_DECL,
1999 rather than an IDENTIFIER_NODE, to represent built-in types, if
2000 requested by the caller.
2001 (cp_parser_postfix_expression): Adjust call.
2002 (cp_parser_type_specifier): Likewise.
2003 (cp_parser_elaborated_type_specifier): Adjust call to
2004 check_elaborated_type_specifier.
2005 * typeck2.c (build_functional_cast): Do not perform name lookups.
2006
2007 PR c++/10717
2008 * decl.c (expand_static_init): Remove unnecessary code.
2009
2010 2003-08-19 Andrew Pinski <pinskia@physics.uc.edu>
2011
2012 PR c++/10538, PR c/5582
2013 * cp/cp-lang.c (LANG_HOOKS_DECL_UNINIT): Define.
2014
2015 2003-08-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2016
2017 PR c++/11174
2018 * init.c (build_offset_ref): Perform access checking for
2019 pointer to member correctly.
2020
2021 2003-08-19 Gabriel Dos Reis <gdr@integrable-solutions.net>
2022
2023 * cp-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Fix spelling.
2024
2025 2003-08-18 Nathan Sidwell <nathan@codesourcery.com>
2026
2027 PR c++/11957
2028 * cp-tree.h (finish_stmt_expr): Add bool parameter.
2029 * init.c (finish_init_stmts): Pass true to finish_stmt_expr. Don't
2030 adjust the stmt_expr here.
2031 (build_vec_init): Use finish_stmt_expr_expr, convert result to
2032 array type.
2033 * parser.c (cp_parser_primar_expression): Adjust finish_stmt_expr
2034 call.
2035 * pt.c (tsubst_copy): Likewise.
2036 * semantics.c (finish_stmt_expr): Add parameter.
2037
2038 * pt.c (instantiate_class_template): Push to class's scope before
2039 tsubsting base.
2040
2041 2003-08-17 Jan Hubicka <jh@suse.cz>
2042
2043 PR C++/11702
2044 * semantics.c (finish_id_expression): Mark all functions as used.
2045
2046 2003-08-16 Nathan Sidwell <nathan@codesourcery.com>
2047
2048 PR c++/11512
2049 * cvt.c (convert_to_void): Indicate which side of conditional has
2050 no effects, and rhs of comma operator. Test for no sideeffect
2051 expressions here and always build a convert expr.
2052 * init.c (expand_default_init): Convert the init to void.
2053 * typeck.c (build_x_compound_expr): Do not check for side effects
2054 here.
2055 (build_compound_expr): Do not convert lhs when building a
2056 template.
2057
2058 2003-08-15 Nathan Sidwell <nathan@codesourcery.com>
2059
2060 * cp-tree.def (NON_DEPENDENT_EXPR): Add operand.
2061 * decl2.c (build_offset_ref_call_from_tree): Use
2062 build_non_dependent_expr.
2063 * error.c (dump_expr) <NON_DEPENDENT_EXPR case>: Dump the operand.
2064 * pt.c (build_non_dependent_expr): Set operand.
2065
2066 2003-08-14 Jan Hubicka <jh@suse.cz>
2067
2068 * decl2.c (mark_member_pointers): Rename to...
2069 (mark_member_pointers_and_eh_tinfos): ... this one; deal with eh tinfos
2070 (lower_function): Update call.
2071 * except.c (eh_type_info): Break out from ...
2072 (build_eh_type): ... here; tinfo is already used.
2073 (finish_eh_spec_block): Mark tinfos as used.
2074 * semantics.c (finish_handler_params): Mark tinfo as used.
2075 * cp-tree.h (eh_type_info): Declare.
2076
2077 2003-08-15 Nathan Sidwell <nathan@codesourcery.com>
2078
2079 * pt.c (instantiate_class_template): Set location before
2080 substuting bases.
2081
2082 * decl.c (make_typename_type): Use my_friendly_assert.
2083 * pt.c (tsubst_aggr_type): Rearrange context substitution.
2084
2085 2003-08-14 Jan Hubicka <jh@suse.cz>
2086
2087 * method.c (use_thunk): Expand body directly.
2088
2089 2003-08-12 Mark Mitchell <mark@codesourcery.com>
2090
2091 PR c++/11703
2092 * call.c (type_passed_as): Use TYPE_SIZE, not TYPE_PRECISION to
2093 determine whether or not to promote types.
2094 (convert_for_arg_passing): Likewise.
2095 * decl2.c (cp_build_parm_decl): Do not set DECL_ARG_TYPE in
2096 templates.
2097 * pt.c (tsubst_decl): Do not expect it to be set.
2098
2099 PR c++/9512
2100 PR c++/10923
2101 * cp-tree.h (check_elaborated_type_specifier): Declare.
2102 (handle_class_head): Remove.
2103 (note_got_semicolon): Likewise.
2104 (note_list_got_semicolon): Likewise.
2105 (finish_class_definition): Likewise.
2106 * decl.c (check_elaborated_type_specifier): Make it public.
2107 Robustify.
2108 (handle_class_head): Remove.
2109 * parser.c (cp_parser_elaborated_type_specifier): Use
2110 check_elaborated_type_specifier.
2111 (cp_parser_class_specifier): Do not call finish_class_definition.
2112 (cp_parser_class_head): Or handle_class_head. Check for
2113 over-qualified names.
2114 * semantics.c (finish_class_definition): Remove.
2115
2116 * parser.c (cp_parser_check_for_definition_in_return_type): New
2117 function.
2118 (cp_parser_simple_declaration): Adjust call to
2119 cp_parser_init_declarator.
2120 (cp_parser_decl_specifier_seq): Change type of
2121 declares_class_or_enum parameter.
2122 (cp_parser_explicit_instantiation): Adjust accordingly.
2123 (cp_parser_type_specifier): Change type of
2124 declares_class_or_enum parameter.
2125 (cp_parser_init_declarator): Add declares_class_or_enum
2126 parameter.
2127 (cp_parser_parameter_declaration): Adjust call to
2128 cp_parser_decl_specifier_seq.
2129 (cp_parser_function_definition): Likewise.
2130 (cp_parser_member_declaration): Likewise.
2131 (cp_parser_single_declaration): Likewise.
2132
2133 * cp-tree.h (lang_type_class): Remove has_call_overloaded,
2134 has_array_ref_overloaded, has_arrow_overloaded, and got_semicolon.
2135 (TYPE_OVERLOADS_CALL_EXPR): Remove.
2136 (TYPE_OVERLOADS_ARRAY_REF): Likewise.
2137 (TYPE_OVERLOADS_ARROW): Likewise.
2138 (CLASSTYPE_GOT_SEMICOLON): Likewise.
2139 * class.c (check_bases): Do not set them.
2140 (finish_struct_1): Likewise.
2141 * decl.c (cp_finish_decl): Do not set CLASSTYPE_GOT_SEMICOLON.
2142 (build_ptrmemfunc_type): Likewise.
2143 (grok_op_properties): Do not set TYPE_OVERLOADS_*.
2144 (start_function): Do not check CLASSTYPE_GOT_SEMICOLON.
2145 * decl2.c (grokfield): Do not set CLASSTYPE_GOT_SEMICOLON.
2146 * lex.c (note_got_semicolon): Remove.
2147 (note_list_got_semicolon): Likewise.
2148 * parser.c (cp_parser_simple_declaration): Do not call
2149 note_list_got_semicolon.
2150 * pt.c (list_eq): Remove.
2151 (lookup_template_class): Do not set CLASSTYPE_GOT_SEMICOLON.
2152 (instantiate_class_template): Do not set TYPE_OVERLOADS*.
2153 (instantiate_class_template): Do not set CLASSTYPE_GOT_SEMICOLON.
2154 * ptree.c (cxx_print_type): Do not print them.
2155 * semantics.c (finish_member_class_template): Do not call
2156 note_list_got_semicolon.
2157
2158 2003-08-11 Aldy Hernandez <aldyh@redhat.com>
2159
2160 * call.c (standard_conversion): Opaque pointers interconvert.
2161
2162 * testsuite/g++.dg/other/opaque-3.C: New.
2163
2164 2003-08-11 Mark Mitchell <mark@codesourcery.com>
2165
2166 * typeck.c (merge_types): Handle cv-qualified pointer-to-member
2167 types correctly.
2168
2169 2003-08-10 Mark Mitchell <mark@codesourcery.com>
2170
2171 PR c++/11789
2172 * cp-tree.h (get_vbase): Remove.
2173 (get_vbase_types): Remove.
2174 * init.c (expand_member_init): Correct logic for looking up base
2175 classes.
2176
2177 2003-08-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
2178
2179 * error.c (dump_expr): Tidy.
2180 * cxx-pretty-print.c (pp_cxx_nonconsecutive_character): New.
2181 (pp_cxx_begin_template_argument_list): Likewise.
2182 (pp_cxx_end_template_argument_list): Likewise.
2183 (is_destructor_name): Likewise.
2184 (pp_cxx_unqualified_id): Likewise.
2185 (pp_cxx_qualified_id): Likewise.
2186 (pp_cxx_id_expression): Likewise.
2187 (pp_cxx_new_expression): Likewise.
2188 (pp_cxx_delete_expression): Likewise.
2189 (pp_cxx_pm_expression): Likewise.
2190 (pp_cxx_type_specifier): Rework.
2191 (pp_cxx_type_id): Likewise.
2192 (pp_cxx_primary_expression): Likewise.
2193 (pp_cxx_postfix_expression): Likewise.
2194 (pp_cxx_unary_expression): Likewise.
2195 (pp_cxx_multiplicative_expression): Likewise.
2196 (pp_cxx_conditional_expression): Likewise.
2197 (pp_cxx_assignment_expression): Likewise.
2198 (pp_cxx_pretty_printer_init): Tidy.
2199
2200 2003-08-10 Nathan Sidwell <nathan@codesourcery.com>
2201
2202 * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): non-NULL
2203 NODE is always a TREE_VEC of nonzero size.
2204 (NUM_TMPL_ARGS): NODE is always a TREE_VEC.
2205 * decl2.c (arg_assoc): Template args will be a vec.
2206 * error.c (dump_decl) <TEMPLATE_ID_EXPR case>: Call
2207 dump_template_argument_list.
2208 (dump_template_parms): Args will be a vec.
2209 * parser.c (cp_parser_template_argument_list): Produce a
2210 vector, not a list.
2211 * pt.c (coerce_template_parms): Args are always vectors.
2212 (mangle_class_name_for_template): Likewise.
2213 (lookup_template_function): Likewise.
2214 (lookup_template_class): Likewise.
2215 (tsubst_template_args): Likewise.
2216 (tsubst_baselink): Use tsubst_template_args.
2217 (tsubst_qualified_id): Likewise.
2218 (tsubst_copy) <TEMPLATE_ID_EXPR case>: Likewise.
2219 (tsubst_copy_and_build) <TEMPLATE_ID_EXPR case>: Likewise.
2220 (any_dependent_template_args_p): Args are always vectors.
2221 * tree.c (cp_tree_equal): Add TEMPLATE_ID_EXPR case.
2222
2223 PR c++/11670
2224 * call.c (convert_like_real): Add rvalue binding error message.
2225 * error.c (dump_expr) <NOP_EXPR case>: Detect when the no expr is
2226 really a cast.
2227
2228 PR c++/10530
2229 * pt.c (dependent_type_p_r): A dependent template-id is a class
2230 type with dependent template arguments, or a bound template
2231 template parameter.
2232 (type_dependent_expression_p): A template function decl cannot
2233 have a dependent context.
2234
2235 2003-08-07 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2236
2237 PR c++/5767
2238 * parser.c (cp_parser_class_name): Return immediately when scope
2239 is error_mark_node.
2240
2241 2003-08-07 Aldy Hernandez <aldyh@redhat.com>
2242
2243 * cp/Make-lang.in (cp/call.o): Add dependency for target.h.
2244
2245 * cp/call.c (standard_conversion): Support opaque types.
2246 Include target.h.
2247 (strip_top_quals): Use cp_build_qualified_type instead of
2248 TYPE_MAIN_VARIANT.
2249
2250 * cp/typeck.c (convert_for_assignment): Support opaque types.
2251
2252 * testsuite/g++.dg/other/opaque-1.C: New.
2253
2254 * testsuite/g++.dg/other/opaque-2.C: New.
2255
2256 2003-08-06 Aldy Hernandez <aldyh@redhat.com>
2257
2258 * decl.c (grokparms): Use cp_build_qualified_type instead
2259 TYPE_MAIN_VARIANT.
2260
2261 2003-08-05 Gabriel Dos Reis <gdr@integrable-solutions.net>
2262
2263 * cxx-pretty-print.h: New file.
2264 * cxx-pretty-print.c: Likewise.
2265 * error.c (scratch_pretty_printer): Change type.
2266 (init_error): Tidy.
2267 (dump_aggr_type): Likewise.
2268 (dump_global_iord): Likewise.
2269 (dump_expr): Likewise.
2270 (dump_char): Remove.
2271 * cp-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTITCS): Define.
2272 (cxx_initialize_diagnostics): New function.
2273 * Make-lang.in (CXX_OBJS): Add cp/cxx-pretty-print.o
2274 (CXX_PRETTY_PRINT_H): New variable.
2275 (cp/cxx-pretty-print.o): New rule.
2276 (cp/cp-lang.o): Update dependence.
2277 (cp/error.o): Likewise.
2278
2279 2003-08-05 Steven Bosscher <steven@gcc.gnu.org>
2280
2281 * cp-tree.h (struct lang_decl): Don't include c_lang_decl.
2282 (DECL_DECLARED_INLINE_P): Remove.
2283 * decl2.c (import_export_decl): Only look at DECL_DECLARED_INLINE_P
2284 if decl is a FUNCTION_DECL. This never made sense, but now it is
2285 required to avoid a tree check failure.
2286 * decl.c (grokfndecl): Don't touch DID_INLINE_FUNC.
2287 * optimize.c (maybe_clone_body): Likewise.
2288
2289 2003-08-04 Roger Sayle <roger@eyesopen.com>
2290
2291 * decl.c (cxx_insert_default_attributes): Delete.
2292 * cp-tree.h (cxx_insert_default_attributes): Don't prototype.
2293 * cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.
2294
2295 2003-08-03 Nathan Sidwell <nathan@codesourcery.com>
2296
2297 PR c++/11704
2298 * pt.c (type_dependent_expression_p): Cope with COMPONENT_REF with
2299 unknown type.
2300
2301 PR c++/11766
2302 * typeck.c (comp_ptr_ttypes_real): Don't loop on pointers to
2303 member functions.
2304
2305 2003-08-02 Nathan Sidwell <nathan@codesourcery.com>
2306
2307 PR c++/9447
2308 * cp-tree.def (USING_DECL): Document its type.
2309 * class.c (pushclass): If we're entering a template, push any
2310 dependent using decls it has.
2311 * decl2.c (do_class_using_decl): Refactor. Type is NULL iff it is
2312 a dependent scope.
2313 * pt.c (tsubst_decl) <USING_DECL case>: Set type.
2314 (tsubst): Remove USING_DECL checks.
2315 (type_dependent_expression_p): Remove USING_DECL case.
2316 * semantics.c (finish_member_declaration): A USING_DECL's type
2317 indicates whether it is dependent.
2318
2319 2003-08-02 Nathan Sidwell <nathan@codesourcery.com>
2320
2321 * cp-tree.h (pushclass): Remove unneeded parameter.
2322 * class.c (pushclass): Remove unneeded MODIFY parm. Adjust.
2323 (push_nested_class): Adjust pushclass call.
2324 * pt.c (instantiate_class_template): Likewise.
2325 * semantics.c (begin_class_definition): Likewise.
2326
2327 2003-08-01 Nathanael Nerode <neroden@gcc.gnu.org>
2328
2329 * typeck2.c (add_exception_specifier): Use 'bool' where appropriate.
2330
2331 2003-08-01 Mark Mitchell <mark@codesourcery.com>
2332
2333 PR c++/11697
2334 * decl.c (decls_match): Don't ignore the types of template
2335 classes.
2336
2337 PR c++/11744
2338 * pt.c (tsubst_copy_and_build): Refine Koenig lookup logic.
2339
2340 2003-08-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2341
2342 PR c++/8442, c++/8806
2343 * decl.c (qualify_lookup): Accept TEMPLATE_DECL if types are
2344 preferred.
2345 (check_elaborated_type_specifier): Add allow_template_p
2346 parameter. Check tag mismatch and class template.
2347 (xref_tag): Add template_header_p parameter. Add assertion
2348 that name is an IDENTIFIER_NODE. Remove implicit typename
2349 warning. Simplify lookup process if globalize is true.
2350 (cxx_init_decl_processing): Adjust call to xref_tag.
2351 (xref_tag_from_type): Likewise.
2352 * decl2.c (handle_class_head): Likewise.
2353 * parser.c (cp_parser_elaborated_type_specifier,
2354 cp_parser_class_head): Likewise.
2355 * rtti.c (init_rtti_processing, build_dynamic_cast1,
2356 tinfo_base_init, emit_support_tinfos): Likewise.
2357 * class.c (is_base_of_enclosing_class): Remove.
2358 * pt.c (convert_template_argument): Don't accept RECORD_TYPE as
2359 template template argument.
2360 * cp-tree.h (xref_tag): Adjust declaration.
2361 (is_base_of_enclosing_class): Remove.
2362 * NEWS: Document template template argument change.
2363
2364 2003-08-01 Nathan Sidwell <nathan@codesourcery.com>
2365
2366 * parser.c (cp_parser_init_declarator,
2367 cp_paser_member_declaration): Reformat.
2368 * pt.c (lookup_template_class, type_unification_real, unify,
2369 type_dependent_expression_p): Reformat.
2370
2371 PR c++/11295
2372 * cp-tree.h (tubst_flags_t): Add tf_stmt_expr_cmpd,
2373 tf_stmt_expr_body.
2374 (finish_stmt_expr_expr): Declare.
2375 * parser.c (cp_parser_primary_expression): Tell
2376 cp_parser_compount_statement that it is a statement expression.
2377 (cp_parser_statement, cp_parser_labeled_statement,
2378 cp_parser_compound_statement, cp_parser_statement_seq_opt): Add
2379 in_statement_expr_p parameter.
2380 (cp_parser_expression_statement): Likewise. Call
2381 finish_stmt_expr_expr for final expression of a statement
2382 expression.
2383 (cp_parser_for_init_statement,
2384 cp_parser_implicitly_scoped_statement,
2385 cp_parser_already_scoped_statement, cp_parser_function_definition,
2386 cp_parser_try_block, cp_parser_handled): Adjust.
2387 * pt.c (tsubst_copy) <STMT_EXPR case>: Pass tf_stmt_expr.
2388 (tsubst_expr): Process tf_stmt_expr and tf_stmt_exprs flags.
2389 (tsubst_expr) <EXPR_STMT case>: Check tf_stmt_exprs flag.
2390 * semantics.c (finish_expr_stmt): Do not deal with statement
2391 expressions.
2392 (begin_stmt_expr): Clear last_expr_type.
2393 (finish_stmt_expr_expr): New.
2394 (finish_stmt_expr): Process the value expression.
2395
2396 * typeck.c (build_compound_expr): If RHS is a TARGET_EXPR, put the
2397 compound expr inside the target's initializer.
2398
2399 PR c++/11525
2400 * parser.c (cp_parser_primary_expression): Do not set
2401 non-constant-p merely because it is a dependent scope.
2402
2403 PR c++/9447
2404 * decl2.c (do_class_using_decl): Set type to NULL_TREE.
2405 * semantics.c (finish_expr_stmt): Do not convert to void in a
2406 template.
2407
2408 2003-07-31 Nathan Sidwell <nathan@codesourcery.com>
2409
2410 * pt.c (coerce_template_parms): Refactor.
2411 (fn_type_unification): Increment processing_template_decl when
2412 tsubsting an incomplete set of explicit args.
2413
2414 PR c++/11347
2415 * pt.c (instantiate_class_template): Increment
2416 processing_template_decl around the tsubst of a template member
2417 class.
2418 (tsubst_qualified_id): Assert we do not have a dependent scope.
2419
2420 * pt.c (coerce_template_template_parms, lookup_template_class,
2421 can_complete_type_without_circularity, instantiate_class_template,
2422 tsubst_decl, unify): Reformat.
2423
2424 2003-07-31 Jan Hubicka <jh@suse.cz>
2425
2426 * decl2.c (maybe_make_one_only): Use mark_referenced.
2427 * method.c (use_thunk): Likewsie.
2428
2429 2003-07-30 Jan Hubicka <jh@suse.cz>
2430
2431 * class.c (build_vtable_entry_ref): Kill.
2432 (build_vtbl_ref_1): Do not call build_vtable_entry_ref.
2433 (build_vfn_ref): Do not call build_vtable_entry_ref.
2434 * cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
2435 * cp-tree.h (prepare_assemble_variable): Kill.
2436 * cp-decl.c (prepare_assemble_variable): Kill.
2437
2438 2003-07-29 Geoffrey Keating <geoffk@apple.com>
2439
2440 * parser.c (cp_lexer_new_main): Use c_common_no_more_pch instead
2441 of setting valid_pch by hand.
2442
2443 2003-07-29 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
2444
2445 * decl.c (finish_enum): Initialize underlying_type.
2446
2447 2003-07-29 Nathan Sidwell <nathan@codesourcery.com>
2448
2449 PR c++/9447
2450 * decl.c (add_binding): Add bval local variable.
2451 (push_class_level_binding): Likewise. Allow a USING_DECL to be
2452 pushed.
2453 * decl2.c (do_class_using_decl): The type of a using decl is
2454 unknown.
2455 * parser.c (cp_parser_postfix_expression): Refactor unqualified-id
2456 function call lookup code.
2457 * pt.c (tsubst): A USING_DECL will have unknown type.
2458 (tsubst_copy_and_build): Allow a using decl.
2459 (type_dependent_expression_p): A USING_DECL will make it
2460 dependent.
2461 * semantics.c (finish_member_declaration): Push a dependent using
2462 declaration.
2463
2464 2003-07-28 Mark Mitchell <mark@codesourcery.com>
2465
2466 PR c++/11530
2467 * parser.c (cp_parser_postfix_expression): Do not call mark_used.
2468 * semantics.c (finish_id_expression): Call mark_used for all
2469 declarations.
2470
2471 2003-07-28 Mark Mitchell <mark@codesourcery.com>
2472
2473 PR c++/11667
2474 * call.c (standard_conversion): Allow all integral->enumeral
2475 conversions, after marking them as bad.
2476 * decl.c (finish_enum): Make sure that all enumerators are
2477 properly converted to the underlying type.
2478 (build_enumerator): Set DECL_CONTEXT for namespace-scope
2479 enumeration types.
2480 * pt.c (tsubst_copy): Adjust handling of CONST_DECLs accordingly.
2481 (tsubst_enum): Tidy.
2482
2483 * Make-lang.in (typeck.o): Depend on convert.h.
2484 (class.o): Likewise.
2485 (rtti.o): Likewise.
2486 * call.c: Include convert.h.
2487 (convert_arg_to_ellipsis): Use convert_to_real.
2488 * class.c: Include convert.h.
2489 (build_base_path): Use convert_to_integer.
2490 * rtti.c: Include convert.h.
2491 (build_headof): Use convert_to_integer.
2492 * typeck.c: Include convert.h.
2493 (decay_conversion): Use convert_to_integer.
2494 (build_unary_op): Use build_nop.
2495 (get_delta_difference): Use convert_to_integer.
2496 (build_ptrmemfunc): Avoid unnecessary conversions.
2497
2498 2003-07-28 Jan Hubicka <jh@suse.cz>
2499
2500 * decl2.c (mark_member_pointers): Verify that member pointer points to
2501 the function.
2502
2503 2003-07-28 Nathan Sidwell <nathan@codesourcery.com>
2504
2505 * cp-tree.h (begin_compound_stmt): No scope arg is a bool.
2506 (finish_compound_stmt): Remove no scope arg.
2507 * decl.c (register_dtor_fn): Adjust begin_compound_stmt and
2508 end_compound_stmt calls.
2509 (expand_static_init, begin_destructor_body, begin_function_body,
2510 finish_function_body): Likewise.
2511 * decl2.c (start_objects, finish_objects,
2512 start_static_storage_duration_function,
2513 finish_static_storage_duration_function): Likewise.
2514 * init.c (begin_init_stmts, finish_init_stmts,
2515 construct_virtual_base, build_vec_init): Likewise.
2516 * method.c (do_build_assign_ref, synthesize_method): Likewise.
2517 * parser.c (cp_parser_compound_statement,
2518 cp_parser_implicitly_scoped_statement,
2519 cp_parser_already_scoped_statement): Likewise.
2520 * pt.c (tsubst_expr): Likewise.
2521 * semantics.c (begin_compound_stmt): No scope arg is a bool.
2522 (finish_compound_stmt): Remove no scope arg.
2523
2524 * error.c (dump_expr) <COMPOUND_EXPR case>: A compound expr is
2525 always dyadic.
2526
2527 2003-07-27 Mark Mitchell <mark@codesourcery.com>
2528
2529 * call.c (standard_conversion): Tweak handling of
2530 pointer-to-member types.
2531 * pt.c (tsubst): Correctly qualify pointers-to-data member types.
2532 * typeck.c (comp_ptr_ttypes_real): Check qualifiers on
2533 pointer-to-data member types.
2534
2535 2003-07-27 Nathan Sidwell <nathan@codesourcery.com>
2536
2537 * parser.c (cp_parser_type_parameter): Reformat.
2538 (cp_parser_parameter_declaration): Deprecate default args where
2539 not allowed.
2540
2541 2003-07-26 Nathan Sidwell <nathan@codesourcery.com>
2542
2543 * cfns.h: Rebuilt.
2544
2545 * cp-tree.h (begin_init_stmts, finish_init_stmts): Remove.
2546 (begin_global_stmt_expr, finish_global_stmt_expr): Remove.
2547 * init.c (begin_init_stmts): Make static. Return is_global
2548 value. Always call begin_stmt_expr.
2549 (finish_init_stmts): Make static. Add is_global parm. Always
2550 building a stmt tree.
2551 (build_aggr_init): Adjust begin_init_stmts, finish_init_stmts calls.
2552 (build_vec_init): Likewise. Always building a stmt tree.
2553 (expand_default_init): Always building a stmt tree.
2554 (get_temp_regvar): Likewise.
2555 * semantics.c (begin_global_stmt_expr,
2556 finish_global_stmt_expr): Remove.
2557
2558 2003-07-25 Nathan Sidwell <nathan@codesourcery.com>
2559
2560 * cp-tree.h (build_compound_expr): Take LHS & RHS args.
2561 (build_x_compound_expr_from_list): Declare.
2562 * typeck.c (build_x_compound_expr_from_list): New.
2563 (build_x_compound_expr): Adjust.
2564 (build_compound_expr): Remove unreachable code. Take two
2565 parameters, adjust.
2566 * decl.c (grok_reference_init): Use
2567 build_x_compound_expr_from_list.
2568 (expand_static_init): Adjust build_compound_expr call.
2569 (cxx_maybe_build_cleanup): Likewise.
2570 * init.c (perform_member_init): Use
2571 build_x_compound_expr_from_list.
2572 (build_new_1): Likewise.
2573 (build_vec_delete): Adjust build_compound_expr calls.
2574 (build_vbase_delete): Likewise.
2575 * typeck2.c (store_init_value): Use
2576 build_x_compound_expr_from_list.
2577 (build_functional_cast): Likewise.
2578
2579 2003-07-25 Nathan Sidwell <nathan@codesourcery.com>
2580
2581 * cp-tree.h (enum tsubst_flags_t): Add tf_user.
2582 * decl.c (make_typename_type): Pass it.
2583 * pt.c (lookup_template_class): Use it.
2584 (resolve_typename_type): Pass it.
2585 * semantics.c (finish_template_type): Pass it.
2586
2587 2003-07-25 Nathan Sidwell <nathan@codesourcery.com>
2588
2589 PR c++/11617
2590 * cp-tree.h (qualified_name_lookup_error): Declare.
2591 * pt.c (tsubst_qualified_id): Use qualified_name_lookup_error for
2592 errors.
2593 (tsubst_expr) <DECL_STMT case>: Likewise.
2594 (tsubst_copy_and_build) <COMPONENT_REF case>: Likewise.
2595 * semantics.c (qualified_name_lookup_error): New, broken out of ...
2596 (finish_id_expression): ... here. Use it.
2597
2598 2003-07-25 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
2599
2600 * cfns.gperf: Add '%%' delimiter to placate gperf 3.0.
2601
2602 2003-07-25 Nathan Sidwell <nathan@codesourcery.com>
2603
2604 PR c++/11596
2605 * pt.c (maybe_fold_nontype_arg, maybe_fold_nontype_args): Remove.
2606 (tsubst_template_arg): New.
2607 (tsubst_template_arg_vector): Rename to ...
2608 (tsubst_template_args): ... this. Accept a TREE_LIST form. Use
2609 tsubst_template_arg.
2610 (coerce_template_parms): Use tsubst_template_arg for default
2611 value.
2612 (tsubst_template_parms): Likewise.
2613 (tsubst_aggr_type): Adjust.
2614 (tsubst_decl): Likewise.
2615 (tsubst): Use tsubst_template_arg for a DOMAIN. Adjust.
2616 (tsubst_copy) <TEMPLATE_ID_EXPR case>: Use tsubst_template_args.
2617
2618 2003-07-25 Gabriel Dos Reis <gdr@integrable-solutions.net>
2619
2620 * Make-lang.in (cp/error.o): Depend on DIAGNOSTIC_H.
2621 * error.c: Use the new pretty-printer framework.
2622
2623 2003-07-24 Per Bothner <pbothner@apple.com>
2624
2625 * decl.c (pushdecl_class_level): Don't use push_srcloc/pop_srcloc
2626 which causes errors messages to incorrectly mention included files.
2627
2628 2003-07-24 Mark Mitchell <mark@codesourcery.com>
2629
2630 * cp-tree.h (convert_to_base_statically): Declare.
2631 * call.c (build_special_member_call): Convert INSTANCE to the base
2632 type.
2633 * class.c (convert_to_base_statically): New method.
2634 * init.c (construct_virtual_base): Use it.
2635 * method.c (do_build_assign_ref): Fix typo in comment.
2636
2637 2003-07-24 Jason Merrill <jason@redhat.com>
2638
2639 * decl.c: Just set truthvalue_* to boolean_*.
2640
2641 2003-07-24 Nathan Sidwell <nathan@codesourcery.com>
2642
2643 * decl.c (reshape_init): Remove unreachable code.
2644
2645 2003-07-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2646
2647 PR c++/11513
2648 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): Use current_scope.
2649
2650 2003-07-23 Mark Mitchell <mark@codesourcery.com>
2651
2652 PR c++/11645
2653 * cp-tree.h (accessible_base_p): Declare.
2654 * call.c (build_over_call): Use it.
2655 * search.c (accessible_base_p): New function, split out from ...
2656 (lookup_base): ... here.
2657
2658 PR c++/11517
2659 * call.c (build_conditional_expr): Use perform_implicit_conversion
2660 and error_operand_p. Robustify.
2661 * typeck.c (build_unary_op): Use perform_implicit_conversion.
2662
2663 2003-07-23 Nathan Sidwell <nathan@codesourcery.com>
2664
2665 PR c++/10953
2666 * parser.c (cp_parser_nested_name_specifier): Reset scope on
2667 failure.
2668 (cp_parser_elaborated_type_specifier): Likewise.
2669
2670 2003-07-22 Mark Mitchell <mark@codesourcery.com>
2671
2672 Eliminate use of POINTER_TYPE for pointers-to-members.
2673 * call.c (standard_conversion): Rework pointer-to-member handling.
2674 Add comments.
2675 (add_builtin_candidate): Likewise.
2676 (resolve_scoped_fn_name): Remove.
2677 (build_conditional_expr): Rework pointer-to-member handling.
2678 (compare_ics): Likewise.
2679 * class.c (check_field_decls): Use TYPE_PTR_P.
2680 * cp-lang.c (cp_var_mod_type_p): Rework pointer-to-member
2681 handling.
2682 * cp-tree.h (SCALAR_TYPE_P): Use TYPE_PTR_TO_MEMBER_P.
2683 (TYPE_PTRMEM_P): Add comment.
2684 (TYPE_PTR_P): Simplify.
2685 (TYPE_PTROB_P): Correct definition.
2686 (TYPE_PTR_TO_MEMBER_P): New macro.
2687 (TYPE_PTRMEM_CLASS_TYPE): Adjust.
2688 (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
2689 (resolved_scoped_fn_name): Remove declaration.
2690 (build_offset_ref): Change prototype.
2691 (resolve_offset_ref): Remove.
2692 (comp_target_types): Remove.
2693 * cvt.c (cp_convert_to_pointer): Rework pointer-to-member
2694 handling.
2695 (convert_to_reference): Use can_convert.
2696 (ocp_convert): Improve error handling. Rework pointer-to-member
2697 handling.
2698 (perform_qualification_conversions): Rework pointer-to-member
2699 handling.
2700 * decl.c (build_ptrmem_type): Handle functions too.
2701 (create_array_type_for_decl): Remove OFFSET_TYPE error message.
2702 (grokdeclarator): Use OFFSET_TYPE for pointers to data members.
2703 (grokparms): Remove OFFSET_TYPE error message.
2704 * dump.c (cp_dump_tree): Rework pointer-to-member handling.
2705 * error.c (dump_type_prefix): Likewise.
2706 * expr.c (cplus_expand_constant): Use build_nop.
2707 * init.c (build_offset_ref): Add address_p parameter. Fold in
2708 necessary bits from resolve_offset_ref.
2709 (resolve_offset_ref): Remove.
2710 * parser.c (cp_parser_postfix_expression): Remove special case
2711 code for OFFSET_TYPE.
2712 * pt.c (convert_nontype_argument): Rework pointer-to-member
2713 handling.
2714 (convert_template_argument): Likewise.
2715 (unify): Likewise.
2716 (invalid_nontype_parm_type_p): Likewise.
2717 (dependent_type_p_r): Likewise.
2718 * rtti.c (get_tinfo_decl): Remove OFFSET_TYPE special case.
2719 (target_incomplete_p_): Rework pointer-to-member
2720 handling.
2721 (get_pseudo_ti_init): Likewise.
2722 (get_pseudo_ti_desc): Likewise.
2723 * semantics.c (finish_qualified_id_expr): Adjust call to
2724 build_offset_ref. Remove use of resolve_offset_ref.
2725 * tree.c (pod_type_p): Use TYPE_PTR_TO_MEMBER_P.
2726 * typeck.c (target_type): Use TYPE_PTRMEM_P.
2727 (type_unknown_p): Remove obsolete code about the time before
2728 non-dependent expressions were handled correctly.
2729 (qualify_type_recursive): Remove.
2730 (composite_pointer_type_r): New function.
2731 (composite_pointer_type): Use it.
2732 (merge_types): Remove dead comments.
2733 (comp_cv_target_types): Remove.
2734 (comp_target_types): Likewise.
2735 (comp_target_parms): Likewise.
2736 (cxx_sizeof_or_alignof_type): Remove OFFSET_TYPE error.
2737 (build_indirect_ref): Use TYPE_PTR_TO_MEMBER_P.
2738 (build_binary_op): Do not use of comp_target_types.
2739 (pointer_diff): Remove OFFSET_TYPE case.
2740 (build_unary_op): Adjust pointer-to-member handling.
2741 (unary_complex_lvalue): Likewise.
2742 (check_for_casting_away_constness): Add description parameter.
2743 (build_static_cast): Pass it.
2744 (build_reinterpret_cast): Use check_for_casting_away_constness.
2745 (build_const_cast): Adjust pointer-to-member handling.
2746 (build_c_cast): Likewise.
2747 (convert_for_assignment): Remove OFFSET_TYPE error message.
2748 (comp_ptr_ttypes_real): Adjust pointer-to-member handling.
2749 (comp_ptr_ttypes_reinterpret): Remove.
2750 (casts_away_constness_r): Adjust pointer-to-member handling.
2751 (casts_away_constness): Liekwise.
2752 (strip_all_pointer_quals): Remove.
2753 * typeck2.c (digest_init): Adjust pointer-to-member handling.
2754 (build_m_component_ref): Likewise.
2755
2756 2003-07-22 Wolfgang Bangerth <bangerth@dealii.org>
2757
2758 * lex.c (unqualified_fn_lookup_error): Mention that the error
2759 message needs to be kept in synch with the manual.
2760
2761 2003-07-22 Nathan Sidwell <nathan@codesourcery.com>
2762
2763 PR c++/11614
2764 * decl.c (grokdeclarator): An array member is only a flexible
2765 array member if the field itself is the array.
2766
2767 2003-07-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2768
2769 PR c++/10793
2770 * decl.c (xref_basetypes): Handle error_mark_node.
2771
2772 2003-07-22 Nathan Sidwell <nathan@codesourcery.com>
2773
2774 * cp-tree.h (enum cp_lvalue_kind): Add clk_packed.
2775 * tree.c (lvalue_p_1): Set it.
2776 * class.c (check_field): Don't allow non-packed non-POD fields to
2777 be packed.
2778 * call.c (reference_binding): Need a temporary for all bitfield
2779 and packed fields.
2780 (convert_like_real): Check it is ok to make a temporary here.
2781
2782 2003-07-21 Nathan Sidwell <nathan@codesourcery.com>
2783
2784 * cp-tree.h (hack_identifier): Remove.
2785 * method.c (hack_identifier): Remove.
2786 * semantics.c (finish_id_expression): Expand hack_identifier
2787 here. Simplify.
2788
2789 2003-07-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2790
2791 * call.c class.c decl.c decl2.c g++spec.c lex.c parser.c pt.c rtti.c
2792 semantics.c typeck.c: Remove unnecessary casts.
2793
2794 2003-07-18 Nathan Sidwell <nathan@codesourcery.com>
2795
2796 * cp-tree.h (hack_identifier): Remove.
2797 * method.c (hack_identifier): Remove.
2798 * semantics.c (finish_id_expression): Expand hack_identifier
2799 here. Simplify.
2800
2801 2003-07-18 Nathan Sidwell <nathan@codesourcery.com>
2802
2803 * cp-tree.h (finish_non_static_data_member): Add object param.
2804 * method.c (hack_identifier): Adjust.
2805 * pt.c (tsubst_copy_and_build) <COMPONENT_REF case>: Don't search
2806 again for a FIELD_DECL.
2807 * semantics.c (finish_non_static_data_member): Add object
2808 parameter. Always save the DECL in the COMPONENT_REF.
2809 * call.c (resolve_scoped_fn_name): Adjust.
2810
2811 2003-07-17 Zack Weinberg <zack@codesourcery.com>
2812
2813 * pt.c (get_bindings): Make definition consistent with
2814 forward declaration.
2815
2816 2003-07-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2817
2818 PR c++/7809
2819 * friend.c (add_friend): Check access for member functions
2820 and templates.
2821
2822 2003-07-17 Gabriel Dos Reis <gdr@integrable-solutions.net>
2823
2824 PR c++/10668
2825 * typeck.c (build_class_member_access_expr): Improve diagnostic.
2826
2827 2003-07-16 Mark Mitchell <mark@codesourcery.com>
2828
2829 PR c++/11547
2830 * cp-tree.h (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P): New
2831 macro.
2832 (DECL_PRETTY_FUNCTION_P): Use VAR_DECL_CHECK.
2833 * decl.c (duplicate_decls): Merge
2834 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2835 * parser.c (cp_parser_postfix_expression): Adjust call to
2836 cp_parser_initializer_list and
2837 cp_parser_parenthesized_expression_list.
2838 (cp_parser_parenthesized_expression_list): Add non_constant_p.
2839 (cp_parser_new_placement): Adjust call to
2840 cp_parser_parenthesized_expression_list.
2841 (cp_parser_direct_new_declarator): Likewise.
2842 (cp_parser_conditional_expression): Remove.
2843 (cp_parser_constant_expression): Parse an assignment-expression,
2844 not a conditional-expression.
2845 (cp_parser_simple_declaration): Resolve expression/declaration
2846 ambiguity more quickly.
2847 (cp_parser_mem_initializer): Adjust call to
2848 cp_parser_parenthesized_expression_list.
2849 (cp_parser_init_declarator): Keep track of whether or not the
2850 initializer is a constant-expression.
2851 (cp_parser_initializer): Add non_constant_p parameter.
2852 (cp_parser_initializer_clause): Likewise.
2853 (cp_parser_initializer_list): Likewise.
2854 (cp_parser_attribute_list): Adjust call to
2855 cp_parser_parenthesized_expression_list.
2856 (cp_parser_functional_cast): Likewise.
2857 * pt.c (tsubst_decl): Copy
2858 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2859 (tsubst_expr): Tweak use of DECL_PRETTY_FUNCTION_P.
2860 * semantics.c (finish_id_expression): Use
2861 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2862
2863 2003-07-16 Neil Booth <neil@daikokuya.co.uk>
2864
2865 * lang-options.h: Remove.
2866
2867 2003-07-16 Andrew Pinski <pinskia@physics.uc.edu>
2868
2869 PR c/10962
2870 * class.c (field_decl_cmp): Remove.
2871 (resort_field_decl_cmp): Remove.
2872 (resort_sorted_fields): Remove.
2873 (add_fields_to_vec): Rename to ...
2874 (add_fields_to_record_type): this.
2875 (finish_struct_1): Change to be using
2876 sorted_fields_type's fields.
2877 * cp-tree.h (lang_decl): In lang_decl_u3
2878 change sorted_fields to be a pointer to
2879 sorted_fields_type.
2880 (resort_sorted_fields): Remove prototype.
2881 * search.c (lookup_field_1): Change to be using
2882 sorted_fields_type's fields.
2883
2884 2003-07-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2885
2886 PR c++/5421
2887 * decl.c (grokdeclarator): Handle TEMPLATE_ID_EXPR if friend
2888 is a member of other class.
2889 * friend.c (do_friend): Don't build TEMPLATE_DECL if friend
2890 is a specialization of function template.
2891
2892 2003-07-16 Gabriel Dos Reis <gdr@integrable-solutions.net>
2893
2894 PR c++/10903
2895 * pt.c (convert_nontype_argument): Fix thinko in diagnostic.
2896 Improve.
2897
2898 2003-07-15 Mark Mitchell <mark@codesourcery.com>
2899
2900 * cp-tree.def (LOOKUP_EXPR): Remove.
2901 * cp-tree.h (cp_id_kind): Add CP_ID_KIND_UNQUALIFIED_DEPENDENT.
2902 (LOOKUP_EXPR_GLOBAL): Remove.
2903 (get_bindings): Remove.
2904 (is_aggr_type_2): Remove.
2905 * call.c (resolved_scoped_fn_name): Remove support for
2906 LOOKUP_EXPR.
2907 * decl.c (grokfndecl): Likewise.
2908 (grokdeclarator): Likewise.
2909 * error.c (dump_decl): Likewise.
2910 (dump_expr): Likewise.
2911 * friend.c (do_friend): Likewise.
2912 * init.c (build_offset_ref): Likewise.
2913 * lex.c (unqualified_fn_lookup_error): Use pedwarn. Do not create
2914 LOOKUP_EXPRs
2915 * mangle.c (write_expression): Remove support for LOOKUP_EXPR.
2916 * parser.c (cp_parser_postfix_expression): Modify Koenig lookup
2917 test.
2918 * pt.c (get_bindings): Give it internal linkage.
2919 (check_explicit_specialization): Remove support for LOOKUP_EXPR.
2920 (lookup_template_function): Likewise.
2921 (for_each_tempalte_parm_r): Likewise.
2922 (tsubst_decl): Likewise.
2923 (tsubst_qualified_id): Handle template template parameters.
2924 (tsubst_copy): Remove support for LOOKUP_EXPR.
2925 (tsubst_copy_and_build): Likewise.
2926 (most_general_template): Likewise.
2927 (value_dependent_expression_p): Likewise.
2928 (type_dependent_expression_p): Note that IDENTIFIER_NODEs are
2929 always dependent.
2930 * semantics.c (perform_koenig_lookup): Do not create
2931 IDENTIFIER_NODEs.
2932 (finish_fname): Likewise.
2933 (finish_id_expression): Likewise.
2934 * tree.c (is_aggr_type_2): Remove.
2935
2936 2003-07-16 Gabriel Dos Reis <gdr@integrable-solutions.net>
2937
2938 PR c++/11531
2939 * typeck.c (check_return_expr): Fix thinko in diagnostic.
2940
2941 2003-07-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2942
2943 PR c++/10108
2944 * pt.c (tsubst_decl) <TEMPLATE_DECL>: Add a check for
2945 error_mark_node.
2946
2947 2003-07-14 Mark Mitchell <mark@codesourcery.com>
2948
2949 PR c++/11509
2950 * pt.c (dependent_scope_ref_p): New function.
2951 (value_dependent_expression_p): Use it.
2952 (type_dependent_expression_p): Likewise.
2953
2954 * pt.c (tsubst_friend_function): Use reregister_specialization.
2955
2956 PR c++/7019
2957 * cp-tree.h (lookup_qualified_name): Adjust prototype.
2958 * decl.c (lookup_qualified_name): Add complain parameter. Adjust
2959 call to is_aggr_type.
2960 * parser.c (cp_parser_lookup_name): Adjust call to
2961 lookup_qualified_name.
2962 * pt.c (tsubst_qualified_id): Likewise.
2963 (tsubst_copy_and_build): Likewise.
2964 * semantics.c (finish_qualified_id_expr): Deal with erroneous
2965 expressions.
2966
2967 2003-07-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
2968
2969 PR c++/11510
2970 * call.c (op_error): Properly format REALPART_EXPR and
2971 IMAGPART_EXPR.
2972 * error.c (dump_expr): Likewise.
2973
2974 2003-07-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
2975
2976 * error.c (dump_expr): Handle EMPTY_CLASS_EXPR.
2977
2978 2003-07-14 Gabriel Dos Reis <gdr@integrable-solutions.net>
2979
2980 PR c++/5293
2981 * call.c (initialize_reference): Improve diagnostic.
2982
2983 2003-07-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2984
2985 PR c++/11154
2986 * pt.c (more_specialized_class): Add full_args parameter.
2987 (most_specialized_class): Adjust calls to more_specialized_class.
2988 * cp-tree.h (more_specialized_class): Adjust declaration.
2989
2990 2003-07-14 Dan Nicolaescu <dann@ics.uci.edu>
2991
2992 * lex.c (enum tree_node_kind): Delete.
2993
2994 2003-07-13 Mark Mitchell <mark@codesourcery.com>
2995
2996 PR c++/11503
2997 * cp-tree.h (DECL_SELF_REFERENCE_P): New macro.
2998 (SET_DECL_SELF_REFERENCE_P): Likewise.
2999 * class.c (build_self_reference): Use SET_DECL_SELF_REFERENCE_P.
3000 * pt.c (tsubst_decl): Copy it.
3001 * search.c (lookup_base): Use DECL_SELF_REFERENCE_P.
3002
3003 * pt.c (reregister_specialization): Fix thinko in previous change.
3004
3005 * cp-tree.h (cp_id_kind): New type.
3006 (unqualified_name_lookup_error): Change prototype.
3007 (unqualified_fn_lookup_error): New function.
3008 (do_identifier): Remove.
3009 (do_scoped_id): Likewise.
3010 (tsubst_copy_and_build): Change prototype.
3011 (reregister_specialization): New function.
3012 (perform_koenig_lookup): Likewise.
3013 (finish_id_expression): Likewise.
3014 * call.c (build_method_call): Adjust call to
3015 unqualified_name_lookup_error.
3016 * decl.c (duplicate_decls): Use reregister_specialization.
3017 * lex.c (is_global): Remove.
3018 (unqualified_name_lookup_error): Return a value.
3019 (do_identifier): Remove.
3020 (do_scoped_id): Likewise.
3021 (identifier_typedecl_value): Remove.
3022 (unqualified_fn_lookup_error): New function.
3023 * parser.c (cp_parser_id_kind): Remove.
3024 (cp_parser_non_constant_id_expression): Remove.
3025 (cp_parser_primary_expression): Use finish_id_expression.
3026 (cp_parser_class_or_namespace_name): Use cp_id_kind, not
3027 cp_parser_id_kind.
3028 (cp_parser_postfix_expression): Use perform_koenig_lookup.
3029 (cp_parser_template_argument): Use cp_id_kind.
3030 (cp_parser_fold_non_dependent_expr): Adjust call to
3031 tsubst_copy_and_build.
3032 * pt.c (unregister_specialization): Rename to ...
3033 (reregister_specialization): This.
3034 (tsubst_friend_function): Use it.
3035 (maybe_fold_nontype_arg): Adjust call to tsubst_copy_and_build.
3036 (tsubst_qualified_id): Likewise.
3037 (tsubst_expr): Likewise.
3038 (tsubst_copy_and_build): Add function_p parameter. Use
3039 finish_id_expression. Introduce RECUR macro.
3040 (tsubst_non_call_postfix_expression): New function.
3041 (regenerate_decl_from_template): Use reregister_specialization.
3042 * semantics.c (perform_koenig_lookup): New function.
3043 (finish_id_expression): Likewise.
3044
3045 2003-07-13 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3046
3047 * pt.c (push_access_scope_real): Remove.
3048 (push_access_scope): Move code from push_access_scope_real.
3049 (pop_access_scope): Don't check for TEMPLATE_DECL.
3050 (instantiate_template): Defer access checking during template
3051 substitution.
3052 (regenerate_decl_from_template): Tidy.
3053
3054 2003-07-11 Nathanael Nerode <neroden@gcc.gnu.org>
3055
3056 PR c++/11437
3057 * operators.def: Add definitions for __imag__, __real__.
3058
3059 2003-07-11 Nathan Sidwell <nathan@codesourcery.com>
3060
3061 PR c++/11050
3062 * parser.c (cp_parser_expression_list): Rename to ...
3063 (cp_parser_parenthesized_expression_list): ... here. Add attribute
3064 parameter, parse the surounding parentheses.
3065 (cp_parser_skip_to_closing_parenthesis): Add recover and or_comma
3066 parameters. Return int.
3067 (cp_parser_skip_to_closing_parenthesis or comma): Remove.
3068 (cp_parser_postfix_expression): Adjust function call parsing.
3069 (cp_parser_new_placement): Adjust.
3070 (cp_parser_new_initializer): Likewise.
3071 (cp_parser_cast_expression): Likewise.
3072 (cp_parser_selection_statement): Likewise.
3073 (cp_parser_mem_initializer): Likewise.
3074 (cp_parser_asm_definition): Likewise.
3075 (cp_parser_init_declarator): Likewise.
3076 (cp_parser_declarator): Make
3077 cdtor_or_conv_p an int ptr.
3078 (cp_parser_direct_declarator): Likewise. Check for a parameter
3079 list on cdtors & conv functions.
3080 (cp_parser_initializer): Adjust.
3081 (cp_parser_member_declaration): Adjust.
3082 (cp_parser_attribute_list): Move code into
3083 cp_parser_parens_expression_list.
3084 (cp_parser_functional_cast): Adjust.
3085 * pt.c (type_dependent_expression_p): Erroneous expressions are
3086 non-dependent.
3087
3088 2003-07-11 Geoffrey Keating <geoffk@apple.com>
3089
3090 * decl.c (cp_finish_decl): Handle 'used' attribute.
3091
3092 * cp-lang.c (c_reset_state): New dummy routine.
3093 * cp-tree.h (finish_file): Move prototype to c-common.h.
3094 * parser.c (c_parse_file): Rename from yyparse; don't call finish_file.
3095
3096 2003-07-11 Mark Mitchell <mark@codesourcery.com>
3097
3098 PR c++/8327
3099 * pt.c (tsubst_qualified_id): Implement suggested resolution for
3100 Core Issue 2.
3101 (type_dependent_expression_p): Likewise.
3102
3103 2003-07-10 Mark Mitchell <mark@codesourcery.com>
3104
3105 * typeck.c (build_binary_op): Do not warn about signed
3106 vs. unsigned comparisons in the bodies of templates.
3107
3108 PR c++/9411
3109 * parser.c (cp_parser_postfix_expression): Check dependency of
3110 functions.
3111
3112 2003-07-09 Mark Mitchell <mark@codesourcery.com>
3113
3114 PR c++/10032
3115 * decl.c (cxx_init_decl_processing): With -pedantic, pedwarns are
3116 still errors.
3117
3118 PR c++/10527
3119 * error.c (decl_to_string): Do not print default argument
3120 expressions.
3121
3122 * cp-tree.h (break_out_calls): Remove declaration.
3123 * tree.c (break_out_calls): Remove.
3124 * typeck.c (build_modify_expr): Avoid invalid sharing of trees.
3125
3126 2003-07-09 Nathan Sidwell <nathan@codesourcery.com>
3127
3128 PR c++ 9483
3129 * class.c (check_field_decls): Pass DECL_NAME to constructor_name_p.
3130 * decl2.c (constructor_name_p): Avoid repeated constructor_name
3131 calls.
3132 * decl.c (grokdeclarator): Refactor ctor/dtor detection.
3133
3134 2003-07-09 Mark Mitchell <mark@codesourcery.com>
3135
3136 * typeck.c (build_x_unary_op): Take note of the fact that
3137 PREINCREMENT_EXPR and POSTINCREMENT_EXPR are binary operations on
3138 trees.
3139
3140 * parser.c (cp_parser_primary_expression): Preserve the form of
3141 qualified expressions in templates, even if they are not
3142 dependent.
3143 * pt.c (convert_nontype_argument): Handle non-dependent SCOPE_REFs.
3144 (tsubst_qualified_id): Likewise.
3145 * search.c (accessible_p): Treat everything in the body of a
3146 template as accessible.
3147
3148 2003-07-08 Mark Mitchell <mark@codesourcery.com>
3149
3150 * cp-tree.def (NON_DEPENDENT_EXPR): New node.
3151 * cp-tree.h (build_call_from_tree): Remove.
3152 (build_member_call): Likewise.
3153 (dependent_template_arg_p): Remove.
3154 (any_dependent_template_arguments_p): New function.
3155 (dependent_template_id_p): Likewise.
3156 (any_type_dependent_arguments_p): Likewise.
3157 (build_non_dependent_expr): Likewise.
3158 (build_non_dependent_args): Likewise.
3159 (build_x_compound_expr): Adjust prototype.
3160 * call.c (build_new_method_call): Handle non-dependent expressions
3161 correctly.
3162 * decl2.c (grok_array_decl): Likewise.
3163 (build_offset_ref_call_from_tree): Likewise.
3164 (build_call_from_tree): Remove.
3165 * error.c (dump_decl): Handle NON_DEPENDENT_EXPR.
3166 (dump_expr): Likewise.
3167 * init.c (build_member_call): Remove.
3168 * mangle.c (write_expression): Update handling for template-ids.
3169 * parser.c (cp_parser_primary_expression): Use
3170 any_dependent_template_arguments_p. Update constant-expression
3171 handling.
3172 (cp_parser_postfix_expression): Use
3173 any_type_dependent_arguments_p. Simplify call processing.
3174 (cp_parser_unary_expression): Simplify.
3175 (cp_parser_expression): Adjust for changes to
3176 build_x_compound_expr.
3177 (cp_parser_template_argument): Implement standard-conforming
3178 parsing of non-type template arguments.
3179 (cp_parser_direct_declarator): Use
3180 cp_parser_fold_non_dependent_expr.
3181 (cp_parser_fold_non_dependent_expr): New function.
3182 (cp_parser_next_token_ends_template_argument_p): Likewise.
3183 * pt.c (convert_template_argument): Do not call
3184 maybe_fold_nontype_arg.
3185 (tsubst_baselink): Likewise.
3186 (tsubst_copy_and_build): Share common code. Make sizeof/alignof
3187 processing work correctly for non-dependent expressions. Adjust
3188 handling of COMPOUND_EXPR. Simplify call processing.
3189 (value_dependent_expression_p): Deal with functional casts and
3190 sizeof/alignof correctly.
3191 (type_dependent_expression_p): Handle overloaded functions.
3192 (any_type_dependent_arguments_p): New function.
3193 (any_dependent_template_arguments_p): Likewise.
3194 (dependent_template_p): Treat SCOPE_REFs as dependent.
3195 (dependent_template_id_p): Simplify.
3196 (build_non_dependent_expr): New function.
3197 (build_non_dependent_args): Likewise.
3198 * semantics.c (finish_stmt_expr): Don't make dependent
3199 statement-expresions have void type.
3200 (finish_call_expr): Handle non-dependent expressions
3201 correctly.
3202 * tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues.
3203 * typeck.c (cxx_sizeof_or_alignof_type): Give the expression
3204 type size_t, even in templates.
3205 (expr_sizeof): Likewise.
3206 (finish_class_member_access_expr): Handle non-dependent expressions
3207 correctly.
3208 (build_x_indirect_ref): Likewise.
3209 (build_x_binary_op): Likewise.
3210 (build_x_unary_op): Likewise.
3211 (build_x_conditional_expr): Likewise.
3212 (build_x_compound_expr): Likewise.
3213 * typeck2.c (build_x_arrow): Likewise.
3214
3215 2003-07-09 Jan Hubicka <jh@suse.cz>
3216
3217 * cp-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New.
3218 * decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS.
3219 (start_function): Use DECL_ESTIMATED_INSNS.
3220 * optimize.c (maybe_clone_body): Use DECL_ESTIMATED_INSNS.
3221
3222 * decl2.c (maybe_emit_vtables): Fix marking vtables as needed in
3223 unit-at-a-time
3224
3225 2003-07-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3226
3227 PR c++/11030
3228 * pt.c (instantiate_class_template): Don't call xref_tag to
3229 inject name when the friend class is a specialization.
3230
3231 2003-07-07 Mark Mitchell <mark@codesourcery.com>
3232
3233 * cp-tree.h (build_scoped_method_call): Remove.
3234 (lookup_qualified_name): Remove parameter.
3235 (tsubst_copy_and_build): Declare.
3236 (finish_qualified_object_call_expr): Remove.
3237 (check_accessibility_of_qualified_id): New function.
3238 (finish_qualified_id_expr): Likewise.
3239 (non_reference): Likewise.
3240 (build_expr_from-tree): Remove.
3241 * call.c (non_reference): Remove.
3242 (build_scoped_method_call): Likewise.
3243 (build_method_call): Use error_operand_p. Assert that we are not
3244 processing a template.
3245 (standard_conversion): Use non_reference.
3246 * class.c (build_vtbl_entry_ref): Likewise.
3247 (build_vtbl_ref_1): Likewise.
3248 * cvt.c (build_expr_type_conversion): Use non_reference.
3249 * decl.c (lookup_qualified_name): Remove flags parameter.
3250 (grok_op_properties): Use non_reference.
3251 * decl2.c (grok_array_decl): Likewise.
3252 (build_expr_from_tree): Remove.
3253 (build_offset_ref_call_from_tree): Update comment.
3254 * error.c (parm_to_string): Call reinit_global_formatting_buffer.
3255 * except.c (prepare_eh_types): Use non_reference.
3256 (can_convert_eh): Likewise.
3257 * init.c (build_dtor_call): Avoid using build_method_call.
3258 * mangle.c (write_template_param): Remove misleading comment.
3259 * method.c (locate_copy): Use non_reference.
3260 * parser.c (cp_parser_scope_through_which_access_occurs): Remove.
3261 (cp_parser_primary_expression): Do not create SCOPE_REFs is
3262 non-dependent contexts.
3263 (cp_parser_postfix_expression): Use finish_qualified_id_expr.
3264 (cp_parser_direct_declarator): Use tsubst_copy_and_build, not
3265 build_expr_from_tree.
3266 (cp_parser_lookup_name): Adjust call to lookup_qualified_name.
3267 Use check_accessibility_of_qualified_id.
3268 * pt.c (maybe_fold_nontype_arg): Use tsubst_copy_and_build, not
3269 build_expr_from_tree.
3270 (tsubst_baselink): New function.
3271 (tsubst_qualified_id): Likewise.
3272 (tsubst_copy): Use them. Remove support for METHOD_CALL_EXPR.
3273 (tsubst_expr): Adjust call to lookup_qualified_name.
3274 (tsubst_copy_and_build): Handle SCOPE_REFs specially. Adjust
3275 handling of CALL_EXPRs.
3276 (value_dependent_expression_p): Use INTEGRAL_OR_ENUMERATION_TYPE_P.
3277 * rtti.c (get_tinfo_decl_dynamic): Use non_reference.
3278 * search.c (check_final_overrider): Likewise.
3279 * semantics.c (check_accessibility_of_qualified_id): New function.
3280 (finish_qualified_object_call_expr): Remove.
3281 * typeck.c (target_type): Use non_reference.
3282 (cxx_sizeof_or_alignof_type): Likewise.
3283 (dubious_conversion_warnings): Likewise.
3284 (convert_for_initialization): Likewise.
3285 (non_reference): New function.
3286
3287 2003-07-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3288
3289 * decl.c (print_binding_level, print_other_binding_stack,
3290 print_binding_stack): Merge uses of HOST_PTR_PRINTF with adjacent
3291 stdio calls.
3292 * ptree.c (cxx_print_decl, cxx_print_binding): Likewise.
3293
3294 2003-07-07 Andreas Jaeger <aj@suse.de>
3295
3296 * friend.c: Convert to ISO C90 prototypes.
3297
3298 * Make-lang.in ($(srcdir)/cp/cfns.h): Use ANSI-C as output
3299 language.
3300 * cfns.h: Regenerate.
3301
3302 * typeck.c: Convert remaining prototypes to ISO C90.
3303 * search.c: Likewise.
3304
3305 * decl2.c (build_expr_from_tree): Convert prototype to ISO C90.
3306 * semantics.c (expand_or_defer_fn): Likewise
3307 * mangle.c (discriminator_for_string_literal): Likewise.
3308 * g++spec.c (lang_specific_driver): Likewise.
3309
3310 * search.c (lookup_base_r): Remove unused variable.
3311
3312 2003-07-07 Nathan Sidwell <nathan@codesourcery.com>
3313
3314 * semantics.c: (genrtl_try_block) Adjust emit_line_note
3315 calls.
3316
3317 2003-07-07 Andreas Jaeger <aj@suse.de>
3318
3319 * search.c (lookup_base_r): Remove unused variable.
3320
3321 2003-07-06 Michael Chastain <mec@shout.net>
3322
3323 PR debug/10055
3324 * lex.c (cxx_init): Call push_srcloc and pop_srcloc rather than
3325 assigning to input_filename directly.
3326
3327 2003-07-06 Kazu Hirata <kazu@cs.umass.edu>
3328
3329 * call.c: Fix comment formatting.
3330 * class.c: Likewise.
3331 * cp-tree.h: Likewise.
3332 * decl.c: Likewise.
3333 * decl2.c: Likewise.
3334 * error.c: Likewise.
3335 * method.c: Likewise.
3336 * name-lookup.c: Likewise.
3337 * parser.c: Likewise.
3338 * pt.c: Likewise.
3339 * rtti.c: Likewise.
3340 * search.c: Likewise.
3341 * typeck.c: Likewise.
3342
3343 2003-07-06 Mark Mitchell <mark@codesourcery.com>
3344
3345 PR c++/11345
3346 * search.c (lookup_base_r): Remove is_non_public and
3347 within_current_scope parameters. Remove other dead code.
3348 (lookup_base): Adjust call to lookup_base_r.
3349 (adjust_result_of_qualified_name_lookup): Improve comment.
3350 * semantics.c (finish_call_expr): Use maybe_dummy_object.
3351
3352 2003-07-06 Neil Booth <neil@daikokuya.co.uk>
3353
3354 * cp-lang.c (LANG_HOOKS_HANDLE_FILENAME,
3355 LANG_HOOKS_MISSING_ARGUMENT): Override.
3356
3357 2003-07-05 Mark Mitchell <mark@codesourcery.com>
3358
3359 PR c++/11431
3360 * typeck.c (build_static_cast): Check for reference conversions
3361 earlier.
3362
3363 2003-07-04 Mark Mitchell <mark@codesourcery.com>
3364
3365 * cp-tree.h (perform_integral_promotions): Declare.
3366 * call.c (build_addr_func): Use decay_conversion.
3367 (convert_arg_to_ellipsis): Likewise. Remove misleading comment.
3368 (convert_for_arg_passing): Use perform_integral_promotions.
3369 * cvt.c (build_expr_type_conversion): Use decay_conversion.
3370 (type_promotes_to): Do not return a cv-qualified type.
3371 * decl.c (grok_reference_init): Fix formatting.
3372 (get_atexit_node): Use decay_conversion.
3373 (build_enumerator): Use perform_integral_promotions.
3374 * init.c (build_vec_init): Use decay_conversion.
3375 * semantics.c (finish_expr_stmt): Likewise.
3376 (finish_switch_cond): Use perform_integral_promotions.
3377 * typeck.c (default_conversion): Likewise.
3378 (perform_integral_promotions): New function.
3379 (build_indirect_ref): Use decay_conversion.
3380 (build_array_ref): Use perform_integral_promotions.
3381 (convert_arguments): Use decay_conversion.
3382 (build_unary_op): Use perform_integral_promotions.
3383 (build_c_cast): Use decay_conversion.
3384 (build_modify_expr): Likewise.
3385 (convert_for_initialization): Likewise.
3386 * typeck2.c (build_x_arrow): Likewise.
3387
3388 2003-07-04 Kazu Hirata <kazu@cs.umass.edu>
3389
3390 * call.c: Fix comment typos.
3391 * class.c: Likewise.
3392 * cp-tree.h: Likewise.
3393 * cvt.c: Likewise.
3394 * decl2.c: Likewise.
3395 * decl.c: Likewise.
3396 * init.c: Likewise.
3397 * mangle.c: Likewise.
3398 * parser.c: Likewise.
3399 * pt.c: Likewise.
3400 * search.c: Likewise.
3401 * semantics.c: Likewise.
3402 * tree.c: Likewise.
3403 * typeck.c: Likewise.
3404
3405 2003-07-04 Zack Weinberg <zack@codesourcery.com>
3406
3407 * parser.c (cp_lexer_read_token): No need to handle string
3408 constant concatenation.
3409
3410 2003-07-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3411
3412 * cp-tree.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_CXXDIAG): Define.
3413 (cp_error_at, cp_warning_at, cp_pedwarn_at): Mark with
3414 ATTRIBUTE_GCC_CXXDIAG.
3415
3416 2003-07-03 Mark Mitchell <mark@codesourcery.com>
3417
3418 * call.c (build_addr_func): Handle bound pointers-to-members.
3419 (build_method_call): Do not call resolve_offset_ref.
3420 (implicit_conversion): Likewise.
3421 (resolve_scoped_fn_name): Use finish_non_static_data_member, not
3422 resolve_offset_ref.
3423 (resolve_args): Do not call resolve_offset_ref.
3424 (build_conditional_expr): Likewise.
3425 (build_new_method_call): Likewise.
3426 * cp-tree.def (OFFSET_REF): Update documentation.
3427 * cvt.c (cp_convert_to_pointer): Update handling of conversions from
3428 pointers to members to pointers.
3429 (ocp_convert): Do not call resolve_offset_ref.
3430 (convert_to_void): Likewise.
3431 (build_expr_type_conversion): Likewise.
3432 * decl2.c (delete_sanity): Likewise.
3433 * init.c (resolve_offset_ref): Simplify greatly.
3434 (build_vec_delete): Do not call resolve_offset_ref.
3435 * parser.c (cp_parser_postfix_expression): Call resolve_offset_ref
3436 if appropriate.
3437 (cp_parser_unary_expression): Use
3438 cp_parser_simple_cast_expression.
3439 (cp_parser_delete_expression): Likewise.
3440 (cp_parser_cast_expression): Likewise.
3441 (cp_parser_pm_expression): Use cp_parser_binary_op.
3442 (cp_parser_simple_cast_expression): New function.
3443 * rtti.c (build_dynamic_cast_1): Do not call resolve_offset_ref.
3444 * semantics.c (finish_increment_expr): Likewise.
3445 (finish_typeof): Likewise.
3446 * tree.c (lvalue_p_1): Do not handle OFFSET_REF.
3447 * typeck.c (require_complete_type): Do not handle OFFSET_REFs.
3448 (decay_conversion): Do not call resolve_offset_ref.
3449 (finish_class_member_access_expr): Likewise.
3450 (convert_arguments): Likewise.
3451 (build_x_binary_op): Handle DOTSTAR_EXPR.
3452 (condition_conversion): Do not call resolve_offset_ref.
3453 (unary_complex_lvalue): Likewise.
3454 (build_static_cast): Likewise.
3455 (build_reinterpret_cast): Likewise.
3456 (build_const_cast): Likewise.
3457 (build_c_cast): Likewise.
3458 (build_modify_expr): Likewise.
3459 (convert_for_assignment): Likewise.
3460 (convert_for_initialization): Likewise.
3461 * typeck2.c (build_x_arrow): Likewise.
3462 (build_m_component_ref): Simplify.
3463
3464 * call.c (build_scoped_method_call): Use convert_to_void.
3465 (build_method_call): Likewise.
3466 * class.c (check_field_decls): Remove dead code.
3467 * cvt.c (convert_from_reference): Remove OFFSET_TYPE handling.
3468 * decl2.c (grok_array_decl): Remove dead code.
3469 (arg_assoc_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
3470 as pointer-to-member representation.
3471 * init.c (build_offset_ref): Tidy.
3472 (build_vec_delete_1): Use convert_to_void.
3473 * mangle.c (write_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
3474 as pointer-to-member representation.
3475
3476 2003-07-03 Nathan Sidwell <nathan@codesourcery.com>
3477
3478 PR c++/9162
3479 * decl.c (grokdeclarator): Return friend decls, not
3480 void_type_node.
3481 * decl2.c (grokfield): Alter friend decl check.
3482 * parser.c (struct cp_parser): Document default_arg chain on
3483 unparsed_functions_queue.
3484 (cp_parser_save_default_args): New.
3485 (cp_parser_init_declarator, cp_parser_function_definition,
3486 cp_parser_member_declaration): Call it.
3487 (cp_parser_class_specifier): Remove unused variable. Alter
3488 processing of unparsed_functions_queue.
3489
3490 2003-07-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3491
3492 * class.c (add_method, check_field_decl): Fix format specifier.
3493 * decl.c (duplicate_decls, pushdecl, check_goto,
3494 fixup_anonymous_aggr, maybe_commonize_var, grokdeclarator,
3495 start_enum): Likewise.
3496 * decl2.c (ambiguous_decl): Likewise.
3497 * pt.c (redeclare_class_template): Likewise.
3498
3499 2003-07-02 Nathan Sidwell <nathan@codesourcery.com>
3500
3501 PR c++/10219
3502 * pt.c (type_unification_real): Don't unify exprs of error type.
3503 * tree.c (error_type): Don't die on error_type.
3504
3505 PR c++/9779
3506 * decl2.c (arg_assoc_class): Don't die on NULL type.
3507 * typeck.c (type_unknown_p): Don't die on untyped expressions.
3508
3509 2003-07-01 Mark Mitchell <mark@codesourcery.com>
3510
3511 PR c++/6949
3512 * decl2.c (grokfield): Create TEMPLATE_DECLs for methods in local
3513 classes.
3514
3515 2003-07-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3516
3517 * error.c (locate_error): %P takes an `int', not a `tree'.
3518
3519 2003-07-02 Jan Hubicka <jh@suse.cz>
3520
3521 * decl2.c (defer_fn): Set DECL_DEFER_OUTPUT.
3522 (finish-file): Do not process function with DECL_DEFER_OUTPUT clear;
3523 clear DECL_DEFER_OUTPUT once function is processed; avoid flags
3524 massaging.
3525
3526 * cp-tree.h (DECL_NEEDED_P): Support unit-at-a-time
3527 (expand_or_defer_fn): Declare.
3528 (lower_function): Declare.
3529 * decl.c (start_cleanup_fn): Use expand_or_defer_fn.
3530 * decl2.c: Include cgraph.h and varpool.h
3531 (maybe_emit_vtables): Make explicit instantations as needed.
3532 (mark_member_pointers, lower_function): New functions.
3533 (finish_file): Do unit-at-a-time.
3534 * method.c (synthesize_method): Use expand_or_defer_fn.
3535 * optimize.c (maybe_clone_body): Use expand_or_defer_fn.
3536 * parser.c (cp_parser_function_definition_after_decl): Use
3537 expand_or_defer_fn.
3538 * pt.c (instantiate_decl): Likewise.
3539 * semantics.c: Include cgraph.h
3540 (expand_or_defer_fn): Break out from ...
3541 (expand_body): ... here; deal with unit-at-a-time.
3542 * cp-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION,
3543 LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Define.
3544
3545 2003-07-01 Mark Mitchell <mark@codesourcery.com>
3546
3547 * call.c (resolve_scoped_fn_name): Return error_mark_node for
3548 erroneous cases.
3549
3550 2003-07-01 Mark Mitchell <mark@codesourcery.com>
3551
3552 PR c++/11149
3553 * call.c (resolve_scoped_fn_name): Check that the qualifying scope
3554 is a class type.
3555
3556 2003-07-01 Giovanni Bajo <giovannibajo@libero.it>
3557
3558 PR c++/8046
3559 * error.c (dump_decl): Handle BIT_NOT_EXPR as
3560 pseudo destructor calls.
3561
3562 2003-07-01 Nathan Sidwell <nathan@codesourcery.com>
3563
3564 * cp-tree.h (define_label): Replace filename and lineno
3565 arguments with a location_t.
3566 * decl.c (pop_label): Adjust define_label call.
3567 (define_label): Replace filename and lineno arguments with a
3568 location_t.
3569 * semantics.c (finish_label): Adjust define_label call.
3570
3571 2003-07-01 Mark Mitchell <mark@codesourcery.com>
3572
3573 PR c++/9559
3574 * decl2.c (grokfield): Do not build NOP_EXPRs around the
3575 error_mark_node.
3576
3577 2003-06-30 Neil Booth <neil@daikokuya.co.uk>
3578
3579 * Make-lang.in: Update.
3580 * cp-lang.c (c_language): Define.
3581 (LANG_HOOKS_INIT_OPTIONS): Use common hook.
3582 * cp-tree.h (cxx_init_options): Remove.
3583 * lex.c: Don't include diagnostic.h.
3584 (cxx_init_options): Remove.
3585
3586 2003-06-30 Giovanni Bajo <giovannibajo@libero.it>
3587
3588 PR c++/4933
3589 * error.c (dump_expr): Support correctly the COMPOUND_EXPR
3590 tree generated within a template. Use dump_expr to dump an
3591 expression sizeof.
3592
3593 2003-06-30 Giovanni Bajo <giovannibajo@libero.it>
3594
3595 * mangle.c (write_expression): Exit gracefully when trying to
3596 mangle a CALL_EXPR.
3597
3598 2003-06-30 Giovanni Bajo <giovannibajo@libero.it>
3599
3600 PR c++/10750
3601 * parser.c (cp_parser_primary_expression): A VAR_DECL with a
3602 (value- or type-) dependent expression as DECL_INITIAL is a
3603 valid constant-expression (at parser time).
3604
3605 2003-06-30 Giovanni Bajo <giovannibajo@libero.it>
3606
3607 PR c++/11106
3608 * error.c (dump_decl): Call dump_decl to dump the DECL_NAME for a
3609 USING_DECL, instead of print_tree_identifier.
3610
3611 2003-06-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
3612
3613 * cp-tree.h (language_to_string): Adjust declaration.
3614 * dump.c (cp_dump_tree): Adjust usage.
3615 * error.c (dump_char): Use output_formatted_scalar. Tidy.
3616 (parm_to_string): Lose unused parameter. Tidy.
3617 (expr_to_string): Likewise.
3618 (code_to_string): Likewise.
3619 (language_to_string): Likewise.
3620 (op_to_string): Likewise.
3621 (assop_to_string): Likewise.
3622 (digit_buffer): Remove.
3623 (dump_type): Format builtin vector type as __vector__.
3624
3625 2003-06-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
3626
3627 * error.c (print_integer): Remove.
3628 (dump_type_suffix): Adjust.
3629 (dump_expr): Likewise.
3630
3631 2003-06-28 Nathan Sidwell <nathan@codesourcery.com>
3632
3633 * error.c (print_instantiation_partial_context): Take a
3634 location_t.
3635 (print_instantiation_full_context): Adjust.
3636 (print_instantiation_context): Adjust.
3637
3638 * cp-tree.h (cp_line_of, cp_file_of): Remove.
3639 * error.c (cp_line_of, cp_file_of): Merge into ...
3640 (location_of): ... here. Make static, return a location_t.
3641 (cp_error_at, cp_warning_at, cp_pedwarn_at): Adjust.
3642
3643 2003-06-28 Nathan Sidwell <nathan@codesourcery.com>
3644
3645 PR c++/10784
3646 * call.c (joust): Move warn_conversion check outwards.
3647
3648 2003-06-27 Zack Weinberg <zack@codesourcery.com>
3649
3650 * decl.c (build_typename_type)
3651 * mangle.c (write_template_template_arg)
3652 * parser.c (cp_parser_scope_through_which_access_occurs)
3653 * pt.c (push_access_scope_real, push_access_scope, pop_access_scope)
3654 * repo.c (get_base_filename)
3655 * semantics.c (maybe_convert_cond):
3656 Mark the definition static, matching the forward declaration.
3657
3658 2003-06-27 Mark Mitchell <mark@codesourcery.com>
3659
3660 PR c++/10468
3661 * pt.c (tsubst): Handle qualified TYPEOF_TYPEs correctly.
3662
3663 2003-06-27 Mark Mitchell <mark@codesourcery.com>
3664
3665 PR c++/10796
3666 * decl.c (finish_enum): Implement DR377.
3667
3668 * decl.c (cp_finish_decl): Don't make variables with reference
3669 type readonly while they are being initialized.
3670
3671 2003-06-26 Mark Mitchell <mark@codesourcery.com>
3672
3673 PR c++/11332
3674 * typeck.c (build_static_cast): Avoid returning expressions with
3675 reference type.
3676
3677 2003-06-26 Nathan Sidwell <nathan@codesourcery.com>
3678
3679 * call.c (build_op_delete_call): Use strip_array_call. Correct
3680 error message to say 'delete' or 'delete[]'.
3681
3682 2003-06-26 Giovanni Bajo <giovannibajo@libero.it>
3683
3684 PR c++/8266
3685 * pt.c (check_explicit_specialization): When looking up a
3686 template function from an identifier outside class-scope, bind
3687 it to CP_DECL_CONTEXT.
3688
3689 2003-06-25 Mark Mitchell <mark@codesourcery.com>
3690
3691 PR c++/10990
3692 * search.c (lookup_base_r): Rely on accessible_p, rather than
3693 trying to emulate that logic here.
3694
3695 PR c++/10931
3696 * call.c (convert_like): Pass issue_conversion_warnings.
3697 (convert_like_with_context): Likewise.
3698 (convert_like_real): Add issue_conversion_warnings parameter.
3699 (perform_direct_initialization_if_possible): New function.
3700 * cp-tree.h (perform_direct_initialization_if_possible): Declare it.
3701 * typeck.c (check_for_casting_away_constness): New function.
3702 (build_static_cast): Rewrite.
3703
3704 2003-06-24 Nathan Sidwell <nathan@codesourcery.com>
3705
3706 * call.c (enforce_access): Assert we get a binfo.
3707 (build_op_delete_call): Pass a binfo to
3708 perform_or_defer_access_check.
3709 * class.c (alter_access): Likewise.
3710 * decl.c (make_typename_type): Likewise.
3711 (make_unbound_class_template): Likewise.
3712 * lex.c (do_identifier): Likewise.
3713 * method.c (hack_identifier): Likewise.
3714 * parser.c (cp_parser_lookup_name): Likewise.
3715 * search.c (lookup_member): Likewise. Move IDENTIFIER_CLASS_VALUE
3716 test.
3717 * semantics.c (finish_non_static_data_member): Likewise.
3718 (perform_or_defer_access_check): Expect a binfo.
3719 * typeck.c (comptypes): Expect types.
3720
3721 * mangle.c (find_substitution): Don't pass a non-type to same_type_p
3722 * friend.c (make_friend_class): Likewise.
3723 * pt.c (check_default_tmpl_args): Likewise.
3724 (lookup_template_class): Likewise.
3725
3726 2003-06-24 Jan Hubicka <jh@suse.cz>
3727
3728 * method.c (thunk_labelno): Move outside ifdef block to make garbage
3729 collector happy.
3730
3731 2003-06-24 Jan Hubicka <jh@suse.cz>
3732
3733 * class.c (build_vtable): Make vtables.
3734 * cp-tree.h (DECL_VTABLE_OR_VTT_P): New macro.
3735 * decl2.c (output_vtable_inherit): Rename to ...
3736 (prepare_assemble_variable): ... this one; change interface.
3737 (maybe_emit_vtables): Do not call output_vtable_inherit.
3738 * cp-lang.c (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Define.
3739 * cp-tree.h (prepare_assemble_variable): New.
3740
3741 2003-06-23 Andrew Pinski <pinskia@physics.uc.edu>
3742
3743 * method.c: add prototype for make_alias_for_thunk.
3744 (thunk_labelno, make_alias_for_thunk): only define
3745 if ASM_OUTPUT_DEF is defined.
3746
3747 2003-06-23 Jakub Jelinek <jakub@redhat.com>
3748
3749 * method.c (thunk_labelno): New variable.
3750 (make_alias_for_thunk): New function.
3751 (use_thunk): Use it if defined ASM_OUTPUT_DEF. Put the thunk
3752 into the same section as the function it is calling.
3753 Include gt-cp-method.h.
3754 * Make-lang.in (gt-cp-method.h): Depend on s-gtype.
3755 (cp/method.o): Depend on gt-cp-method.h.
3756 * config-lang.in (gtfiles): Add $(srcdir)/cp/method.c.
3757
3758 2003-06-23 Jan Hubicka <jh@suse.cz>
3759
3760 * decl.c (register_dtor_fn): Mark cleanup as used.
3761 * decl2.c (mark_vtable_entries): Skip nops.
3762 * rtti.c (get_tinfo_ptr): Mark tinfo as used.
3763 (build_dynamic_cast_1): Likewise.
3764 (tinfo_base_init): Likewise.
3765 (emit_tinfo_decl): Likewise.
3766
3767 2003-06-23 Jakub Jelinek <jakub@redhat.com>
3768
3769 * mangle.c (hash_type): Val is the TREE_LIST itself, not a pointer
3770 to it.
3771
3772 2003-06-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
3773
3774 PR c++/10784
3775 * call.c (joust): Warn about choosing conversion sequence only if
3776 -Wconversion.
3777
3778 2003-06-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
3779
3780 PR c++/10864
3781 * call.c (op_error): Tidy.
3782 * error.c (dump_expr): Properly format 'T()' when T is an
3783 aggregate type.
3784
3785 2003-06-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
3786
3787 PR c++/10915
3788 * decl.c (grok_op_properties): Warn possible confusing conversion
3789 only if -Wconversion.
3790
3791 2003-06-20 Mark Mitchell <mark@codesourcery.com>
3792
3793 PR c++/10749
3794 * parser.c (cp_parser_class_head): See through dependent names
3795 when parsing a class-head.
3796
3797 PR c++/10845
3798 * pt.c (try_class_unification): Correct handling of member class
3799 templates.
3800
3801 2003-06-20 Nathan Sidwell <nathan@codesourcery.com>
3802
3803 * semantics.c (genrtl_finish_function): Adjust
3804 expand_function_end call.
3805
3806 2003-06-19 Mark Mitchell <mark@codesourcery.com>
3807
3808 PR c++/10939
3809 * pt.c (tsubst_decl): Do not try to substitute into non-dependent
3810 functions.
3811 (value_dependent_expression_p): Correct logic for FUNCTION_DECLs.
3812
3813 PR c++/9649
3814 * cp-tree.h (pushdecl_class_level): Change prototype.
3815 (push_class_level_binding): Likewise.
3816 * decl.c (add_binding): Reject duplicate static data members.
3817 (pushdecl_class_level): Return a value indicating whether or not
3818 the binding was valid.
3819 (push_class_level_binding): Likewise.
3820 * semantics.c (finish_member_declaration): Don't keep invalid
3821 declarations.
3822
3823 PR c++/11041
3824 * call.c (initialize_reference): Do not use cp_finish_decl to emit
3825 temporary variables.
3826 * cp-tree.h (static_aggregates): Declare.
3827 (pushdecl_top_level_and_finish): Likewise.
3828 * decl.c (pushdecl_top_level_1): New function.
3829 (pushdecl_top_level): Use it.
3830 (pushdecl_top_level_and_finish): New function.
3831 (initialize_local_var): Remove redundant code.
3832 (cp_finish_decl): Remove support for RESULT_DECLs. Don't check
3833 building_stmt_tree.
3834 * decl.h (static_aggregates): Remove.
3835 * decl2.c (get_guard): Use pushdecl_top_level_and_finish.
3836 * rtti.c (get_tinfo_decl): Use pushdecl_top_level_and_finish.
3837 (tinfo_base_init): Likewise.
3838
3839 2003-06-19 Matt Austern <austern@apple.com>
3840
3841 PR c++/11228
3842 * init.c (build_zero_init): Assert that number of array elements
3843 is an integer constant.
3844 (build_default_init) Don't use build_zero_init for arrays with
3845 variable number of elements.
3846
3847 2003-06-19 Andreas Jaeger <aj@suse.de>
3848
3849 * cp-tree.h: Remove duplicated declarations.
3850
3851 2003-06-18 Nathanael Nerode <neroden@gcc.gnu.org>
3852
3853 * pt.c: Convert to ISO C.
3854 * semantics.c: Convert to ISO C.
3855
3856 2003-06-18 Nathan Sidwell <nathan@codesourcery.com>
3857
3858 * cp-tree.h (comp_except_specs, compparms, cp_has_mutable_p,
3859 at_least_as_qualified_p, more_qualified_p): Return bool.
3860 * typeck.c: ANSIFY function definitions.
3861 (comp_array_types): Take redeclaration bool parameter.
3862 (comptypes): Rearrange STRICT handling.
3863 (at_least_as_qualified_p, more_qualified_p,
3864 comp_cv_qualification): Cache cv quals.
3865 (compparms): Rearrange loop.
3866
3867 2003-06-18 Nathan Sidwell <nathan@codesourcery.com>
3868
3869 * cp-tree.h (COMPARE_RELAXED): Rename to ...
3870 (COMPARE_DERIVED): ... here. Adjust comment.
3871 (resolve_typename_type_in_current_instantiation): Remove.
3872 (cp_tree_equal, comptypes): Return a bool.
3873 * cvt.c (convert_to_reference): Adjust comptypes call.
3874 * pt.c (template_args_equal, unify,): Adjust cp_tree_equal call.
3875 (resolve_typename_type_in_current_instantiation): Remove.
3876 * tree.c (cp_tree_equal): Return bool. Cope with TEMPLATE_DECLs and
3877 IDENTIFIER_NODEs. Abort if undeciderable. Adjust recursive
3878 calls. Refactor code.
3879 * typeck.c (comp_array_types): Return bool. Lose callback.
3880 parameter. Adjust cp_tree_equal calls.
3881 (comptypes): Return bool. Adjust strict handling. Remove relaxed
3882 enumeration and java type handling. Deal with typename types here.
3883 Adjust recursive and cp_tree_equals calls. Adjust base and derived
3884 checking.
3885 (comp_target_types): Remove unreachable code. Adjust
3886 same_or_base_type_p calls.
3887 (ptr_reasonably_similar): Adjust base and derived check.
3888
3889 * typeck.c (maybe_warn_about_returning_address_of_local): Remove
3890 unused calculation.
3891 (check_return_expr): Adjust error messages.
3892 * cp-tree.def (SCOPE_REF): Correct comment.
3893
3894 2003-06-17 Mark Mitchell <mark@codesourcery.com>
3895
3896 * mangle.c (mangle_conv_op_name_for_type): Correct sprintf format
3897 string again.
3898
3899 2003-06-17 Robert Abeles <rabeles@archaelogic.com>
3900
3901 * optimize.c (dump_function): Form complete flag name by
3902 prefixing 'fdump-' to string returned by dump_flag_name().
3903
3904 2003-06-17 Mark Mitchell <mark@codesourcery.com>
3905
3906 * mangle.c (mangle_conv_op_name_for_type): Correct sprintf format
3907 string.
3908
3909 2003-06-17 Jason Merrill <jason@redhat.com>
3910
3911 PR c++/10929
3912 * decl.c (grokfndecl): Don't mark a function inline for
3913 -finline-functions if it isn't defined.
3914
3915 2003-06-17 Mark Mitchell <mark@codesourcery.com>
3916
3917 PR c++/10712
3918 * class.c (handle_using_decl): Robustify.
3919
3920 PR c++/11105
3921 * cp-tree.h (DECL_CONV_FN_TYPE): New method.
3922 * mangle.c (struct globals): Remove internal_mangling_p.
3923 (write_unqualified_name): Use DECL_CONV_FN_TYPE.
3924 (write_template_parm): Don't write out the level number.
3925 (conv_type_names): New variable.
3926 (hash_type): New function.
3927 (compare_type): Likewise.
3928 (mangle_conv_op_name_for_type): Don't try to mangle conversion
3929 operator names.
3930 * search.c (lookup_conversion_operator): New function.
3931 (lookup_fnfields_1): Use it.
3932
3933 2003-06-17 Andreas Jaeger <aj@suse.de>
3934
3935 * except.c: Remove duplicate declaration of push_eh_cleanup.
3936
3937 * call.c: Remove extra declaration of inhibit_warnings.
3938
3939 2003-06-16 Nathanael Nerode <neroden@gcc.gnu.org>
3940
3941 2003-06-16 Jens-Michael Hoffmann <jensmh@gmx.de>
3942 * mangle.c: Convert to ISO C.
3943
3944 2003-06-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3945
3946 * cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR
3947 macro.
3948
3949 2003-06-16 Nathanael Nerode <neroden@gcc.gnu.org>
3950
3951 * tree.c: Convert to ISO C.
3952
3953 2003-06-16 Kazu Hirata <kazu@cs.umass.edu>
3954
3955 * cp-tree.h: Follow spelling conventions.
3956 * mangle.c: Likewise.
3957 * method.c: Likewise.
3958 * parser.c: Likewise.
3959
3960 2003-06-14 Nathan Sidwell <nathan@codesourcery.com>
3961
3962 * decl.c (start_function): Adjust init_function_start call.
3963 * method.c (use_thunk): Likewise.
3964 * semantics.c (genrtl_start_function): Likewise.
3965
3966 2003-06-14 Neil Booth <neil@daikokuya.co.uk>
3967
3968 * Make-lang.in: Remove c-options.o.
3969
3970 2003-06-13 Nathanael Nerode <neroden@gcc.gnu.org>
3971
3972 * lex.c: Convert to ISO C.
3973
3974 2003-05-19 Jens-Michael Hoffmann <jensmh@gmx.de>
3975 * init.c: removes use of PARAMS macro. Use ISO style function
3976 declarations. (Not copyright-significant change.)
3977
3978 * rtti.c: Remove PARAMS.
3979
3980 * typeck2.c: Convert to ISO C.
3981
3982 2003-06-12 Mark Mitchell <mark@codesourcery.com>
3983
3984 PR c++/10635
3985 * typeck.c (build_c_cast): Check that the destination type is
3986 complete.
3987
3988 2003-06-11 Mark Mitchell <mark@codesourcery.com>
3989
3990 PR c++/10432
3991 * cp-tree.h (finish_declarator): Remove.
3992 * decl.c (cp_finish_decl): Make sure to pop_nested_class even for
3993 erroneous declarations.
3994 * semantics.c (finish_declarator): Remove.
3995
3996 2003-06-11 Roger Sayle <roger@eyesopen.com>
3997
3998 * decl2.c (generate_ctor_or_dtor_function): Avoid expanding a
3999 global static constructor/destructor if it will be empty, i.e.
4000 either doesn't call any ctors/dtors or only calls pure or const
4001 ctors/dtors.
4002
4003 2003-06-11 Mark Mitchell <mark@codesourcery.com>
4004
4005 * mangle.c (tm_p.h): Include it.
4006 * Make-lang.in (cp/mangle.o): Depend on $(TM_P_H).
4007
4008 PR c++/11131
4009 * tree.c (cp_cannot_inline_fn): Check for "inline" before
4010 instantiation.
4011
4012 2003-06-10 Jason Merrill <jason@redhat.com>
4013
4014 PR c++/10968
4015 * pt.c (mark_decl_instantiated): Clear DECL_COMDAT.
4016
4017 2003-06-10 Andrew Pinski <pinskia@physics.uc.edu>
4018
4019 * decl.c (start_cleanup_fn): Move static 'counter' out, mark with GTY.
4020 (start_cleanup_cnt): New.
4021
4022 2003-06-10 Mark Mitchell <mark@codesourcery.com>
4023
4024 PR c++/11131
4025 * cp-tree.h (template_for_substitution): Declare.
4026 * decl2.c (mark_used): Use it when figuring out whether or not a
4027 function is inline.
4028 * pt.c (template_for_substitution): Give it external linkage.
4029 * tree.c (cp_cannot_inline_tree_fn): Instantiate as early as
4030 possible.
4031
4032 2003-06-09 Zack Weinberg <zack@codesourcery.com>
4033
4034 PR 8861
4035 * mangle.c (write_real_cst): New function. Implement
4036 ABI-compliant mangling of floating-point literals when
4037 -fabi-version>=2; provide backward compatibility with 3.3 when
4038 -fabi-version=1 (with warning). Clarify commentary.
4039 (write_template_arg_literal): Use write_real_cst.
4040
4041 2003-06-07 Andreas Jaeger <aj@suse.de>
4042
4043 * cp/decl.c (xref_tag): Remove undefined macro NONNESTED_CLASSES.
4044
4045 2003-06-07 Neil Booth <neil@daikokuya.co.uk>
4046
4047 * cp-lang.c (LANG_HOOKS_DECODE_OPTON): Drop.
4048 (LANG_HOOKS_HANDLE_OPTION): Override.
4049 * cp-tree.h (cxx_init_options): Update.
4050 * lex.c (cxx_init_options): Update.
4051
4052 2003-06-05 Jan Hubicka <jh@suse.cz>
4053
4054 * Make-lang.in: Add support for stageprofile and stagefeedback
4055
4056 2003-06-04 J"orn Rennecke <joern.rennecke@superh.com>
4057
4058 * decl.c (grokdeclarator): Error_mark_node in, error_mark_node out.
4059
4060 2003-06-04 Andreas Jaeger <aj@suse.de>
4061
4062 * g++spec.c (lang_specific_driver): Remove ALT_LIBM usage.
4063
4064 2003-06-03 Jason Merrill <jason@redhat.com>
4065
4066 * cp/cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors.
4067
4068 * cp/decl.c (reshape_init): Handle vectors.
4069
4070 * testsuite/g++.dg/init/array10.C: New.
4071
4072 2003-06-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4073
4074 PR c++/10940
4075 * pt.c (check_explicit_specialization): Check for 'static'
4076 earlier.
4077
4078 2003-05-31 Diego Novillo <dnovillo@redhat.com>
4079
4080 * class.c (dump_array): Call CONSTRUCTOR_ELTS to access
4081 the operand of a CONSTRUCTOR node.
4082
4083 2003-05-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
4084
4085 * decl.c (cp_binding_level::this_entity): Rename from this_class.
4086 (cxx_scope_descriptor): New function.
4087 (cxx_scope_debug): Likewise.
4088 (push_binding_level): Use it.
4089 (pop_binding_level): Likewise.
4090 (suspend_binding_level): Likewise.
4091 (resume_binding_level): Likewise.
4092 (pushlevel_class): Adjust use of this_class.
4093 (pushtag): Likewise.
4094 (lookup_name_real): Likewise.
4095 (global_scope_name): New variable.
4096 (initialize_predefined_identifiers): Initialize it.
4097 (push_namespace): Use it.
4098 (make_cxx_scope): New function.
4099 (pushlevel): Use it.
4100 (pushlevel_class): Likewise.
4101 (push_binding_level): Simplify. Loose the last two arguments.
4102 (make_binding_level): Remove.
4103 (initial_push__namespace_scope): New function.
4104 (push_namespace): Use it. Simplify.
4105 (cxx_init_decl_processing): Likewise.
4106 (declare_namespace_level): Remove.
4107
4108 2003-05-31 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4109
4110 PR c++/10956
4111 * pt.c (instantiate_decl): Don't use full template arguments if
4112 we are dealing with specializations.
4113
4114 2003-05-29 Gabriel Dos Reis <gdr@integrable-solutions.net>
4115
4116 * decl.c (ENABLE_SCOPE_CHECKING): Rename from DEBUG_BINDING_LEVELS.
4117 (binding_depth): Unconditionally define.
4118 (is_class_level): Likewise.
4119 (indent): Likewise. Take an indenting parameter.
4120 (push_binding_level): Remove conditional definittion.
4121 (pop_binding_level): Likewise.
4122 (suspend_binding_level): Likewise.
4123 (resume_binding_level): Likewise.
4124 (pushlevel): Likewise.
4125 (pushlevel_class): Likewise.
4126 (poplevel_class): Likewise.
4127 (pop_everything): Likewise.
4128
4129 2003-05-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
4130
4131 * name-lookup.h (global_scope_p): New macro.
4132 * decl.c (pop_binding_level): Use it. Don't refer directly to
4133 global_binding_level.
4134 (suspend_binding_level): Likewise.
4135 (global_bindings_p): Likewise.
4136 (print_other_binding_stack): Likewise.
4137 (print_binding_stack): Likewise.
4138 (maybe_push_to_top_level): Likewise.
4139 (pushdecl_namespace_level): Likewise.
4140 (cxx_init_decl_processing): Likewise.
4141 (start_decl): Likewise.
4142 (cp_finish_decl): Likewise.
4143 (start_function): Likewise.
4144 (global_binding_level): Remove.
4145
4146 2003-05-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4147
4148 * parser.c (cp_parser_explicit_instantiation): Restore old
4149 access before template instantiation.
4150
4151 2003-05-23 Geoffrey Keating <geoffk@apple.com>
4152
4153 * lang-specs.h: Use -o to specify preprocessor's output file.
4154 Make -no-integrated-cpp work when building PCH files.
4155
4156 2003-05-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4157
4158 PR c++/10682
4159 * pt.c (instantiate_class_template): Use DECL_ARTIFICIAL to
4160 check for implicitly created typedef to an enum.
4161
4162 2003-05-21 Jason Merrill <jason@redhat.com>
4163
4164 * init.c (build_vec_delete): Copy the address into a temporary
4165 variable before calling build_vec_delete_1.
4166 * decl2.c (delete_sanity): Don't call stabilize_reference.
4167
4168 2003-05-21 Nathan Sidwell <nathan@codesourcery.com>
4169
4170 * pt.c (register_specialization): Update the decl's location,
4171 if necessary.
4172 (check_explicit_specialization): Likewise.
4173
4174 2003-05-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4175
4176 * error.c (dump_expr): Use HOST_WIDE_INT_PRINT_DOUBLE_HEX.
4177
4178 2003-05-21 Danny Smith <dannysmith@users.sourceforge.net>
4179
4180 PR c++/9738
4181 * decl.c (duplicate_decls): Re-invoke make_decl_rtl
4182 if the old decl had instantiated DECL_RTL.
4183 (Base on Richard Henderson 2003-05-13 patch to c-decl.c).
4184
4185 2003-05-19 Matt Austern <austern@apple.com>
4186
4187 * lang-options.h: Document -Wno-invalid-offsetof
4188 * typeck.c (build_class_member_access_expr): Don't complain about
4189 (Foo *)p->x for non-POD Foo if warn_invalid_offset is zero.
4190
4191 2003-05-18 Andrew Pinski <pinskia@physics.uc.edu>
4192
4193 * name-lookup.c (free_binding_entry): fix where the GTY markers are.
4194 (binding_entry_make): Make entry->chain NULL after getting an entry.
4195 fix the spelling of chain in a comment.
4196 (binding_table_free): speed up by having temporary variable.
4197 (binding_table_new): set table->chain to be NULL after allocating
4198 a table.
4199 (cxx_binding_make): use gcc_alloc instead of ggc_alloc_cleared and set
4200 binding->previous to NULL after getting an binding for speed.
4201
4202 2003-05-18 Gabriel Dos Reis <gdr@integrable-solutions.net>
4203
4204 * cp-tree.h (struct lang_type_class): Replace data member tags
4205 with hash-table nested_udts.
4206 (CLASSTYPE_NESTED_UTDS): Rename from CLASSTYPE_TAGS.
4207 * class.c (unreverse_member_declarations): Don't touch
4208 CLASSTYPE_TAGS.
4209 (pushclass): Use cxx_remember_type_decls.
4210 * decl.c (struct cp_binding_level): Replace data member tags with
4211 hash-table type_decls.
4212 (pop_binding_level): Handle level->type_decls.
4213 (kept_level_p): Adjust.
4214 (poplevel): Remove unused local variable.
4215 (bt_print_entry): New function.
4216 (print_binding_level): Use it.
4217 (push_namespace): Build current_binding_level->type_decls.
4218 (maybe_process_template_type_declaration): Adjust.
4219 (pushtag): Likewise.
4220 (clear_anon_tags): Use binding_table_remove_anonymous_types.
4221 (gettags): Remove.
4222 (cxx_remember_type_decls): Rename from storetags. Adjust.
4223 (lookup_tag): Use binding_table_find_anon_type. Tidy.
4224 (lookup_tag_reverse): Use binding_table_reverse_maybe_remap.
4225 (cxx_init_decl_processing): Build global_binding_level->type_decls.
4226 (store_parm_decls): Remove pointless code.
4227 * name-lookup.c (free_binding_entry): New variable.
4228 (ENTRY_INDEX): New macro.
4229 (struct binding_table_s): New datatype.
4230 (binding_entry_make): New function.
4231 (binding_entry_free): Likewise.
4232 (binding_table_construct): Likewise.
4233 (binding_table_free): Likewise.
4234 (binding_table_new): Likewise.
4235 (binding_table_expand): Likewise.
4236 (binding_table_insert): Likewise.
4237 (binding_table_find): Likewise.
4238 (binding_table_find_anon_type): Likewise.
4239 (binding_table_reverse_maybe_remap): Likewise.
4240 (binding_table_remove_anonymous_types): Likewise.
4241 (binding_table_foreach): Likewise.
4242 * name-lookup.h (binding_table): New type.
4243 (binding_entry): Likewise.
4244 (bt_foreach_proc): Likewise.
4245 (struct binding_entry_s): New datatype.
4246 (SCOPE_DEFAULT_HT_SIZE): New macro.
4247 (CLASS_SCOPE_HT_SIZE): Likewise.
4248 (NAMESPACE_ORDINARY_HT_SIZE): Likewise.
4249 (NAMESPACE_STD_HT_SIZE): Likewise.
4250 (GLOBAL_SCOPE_HT_SIZE): Likewise.
4251 (binding_table_new): Declare.
4252 (binding_table_free): Likewise.
4253 (binding_table_insert): Likewise.
4254 (binding_table_find_anon_type): Likewise.
4255 (binding_table_reverse_maybe_remap): Likewise.
4256 (binding_table_remove_anonymous_types): Likewise.
4257 (binding_table_foreach): Likewise.
4258 (binding_table_find): Likewise.
4259 (cxx_remember_type_decls): Likewise.
4260 * pt.c (bt_instantiate_type_proc): New function.
4261 (do_type_instantiation): Use it.
4262 * search.c (lookup_field_r): Use binding_table_find.
4263
4264 2003-05-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4265
4266 * semantics.c (perform_deferred_access_checks): Don't discard
4267 checked access.
4268
4269 2003-05-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4270
4271 * error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
4272 libiberty VA_ macros, always use stdarg.
4273 * rtti.c (create_pseudo_type_info): Likewise.
4274 * tree.c (build_min_nt, build_min): Likewise.
4275
4276 2003-05-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4277
4278 * ptree.c (cxx_print_type, cxx_print_xnode): Use string
4279 concatentation on HOST_WIDE_INT_PRINT_* format specifier to
4280 collapse multiple function calls into one.
4281 * tree.c (debug_binfo): Likewise.
4282
4283 2003-05-15 Jason Merrill <jason@redhat.com>
4284
4285 PR c++/5388
4286 * call.c (conditional_conversion): Don't consider implicit
4287 conversions if T2 is a base of T1.
4288 * cp-tree.h (DERIVED_FROM_P, UNIQUELY_DERIVED_FROM_P): Make boolean.
4289 (ACCESSIBLY_UNIQUELY_DERIVED_P, PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
4290
4291 * parser.c (cp_parser_primary_expression): Convert a static data
4292 member from reference.
4293
4294 2003-05-15 Mark Mitchell <mark@codesourcery.com>
4295
4296 * call.c (build_op_delete_call): Avoid creating unnecessary types.
4297 * class.c (instantiate_type): Remove tests for tf_no_attributes.
4298 * cp-tree.h (tsubst_flags_t): Remove tf_no_attributes.
4299 (COMPARE_NO_ATTRIBUTES): Remove.
4300 * typeck.c (comptypes): Do not check COMPARE_NO_ATTRIBUTES.
4301
4302 PR c++/8385
4303 * semantics.c (finish_typeof): Refine type-dependency check.
4304
4305 2003-05-13 Jason Merrill <jason@redhat.com>
4306
4307 * typeck.c (build_modify_expr): Don't always stabilize the lhs and
4308 rhs. Do stabilize the lhs of a MODIFY_EXPR used on the lhs.
4309
4310 2003-05-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4311
4312 * method.c (synthesize_method): Call push/pop_deferring_access_checks.
4313
4314 2003-05-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4315
4316 PR c++/10230, c++/10481
4317 * semantics.c (finish_non_static_data_member): Handle when the
4318 non-static member is not from a base of the current class type.
4319
4320 2003-05-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4321
4322 PR c++/10552
4323 * pt.c (tsubst_copy): Handle TEMPLATE_DECL that is a member class
4324 template and has dependent context.
4325
4326 2003-05-10 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4327
4328 * pt.c (instantiate_decl): Call push/pop_deferring_access_checks.
4329
4330 2003-05-10 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4331
4332 PR c++/9252
4333 * cp-tree.h (saved_scope): Remove check_access field.
4334 (tsubst_flags_t): Remove tf_parsing.
4335 * decl.c (maybe_push_to_top_level): Don't initialize
4336 scope_chain->check_access.
4337 (make_typename_type, make_unbound_class_template): Don't use
4338 tf_parsing.
4339 (register_dtor_fn): Use push/pop_deferring_access_checks
4340 instead of scope_chain->check_access.
4341 * method.c (use_thunk): Likewise.
4342 * parser.c (cp_parser_explicit_instantiation
4343 (cp_parser_constructor_declarator_p): Don't call
4344 push/pop_deferring_access_checks here.
4345 (cp_parser_template_argument, cp_parser_class_name): Don't use
4346 tf_parsing.
4347 (yyparse): Check flag_access_control.
4348 * pt.c (instantiate_class_template): Call
4349 push/pop_deferring_access_checks.
4350 * semantics.c (push_deferring_access_checks): Propagate
4351 dk_no_check.
4352 (perform_or_defer_access_check): Make sure basetype_path is
4353 a type before comparison.
4354 * call.c (build_op_delete_call, build_over_call): Use
4355 perform_or_defer_access_check.
4356 * class.c (alter_access): Likewise.
4357 * init.c (build_offset_ref): Likewise.
4358 * lex.c (do_identifier): Likewise.
4359 * method.c (hack_identifier): Likewise.
4360 * search.c (lookup_member): Likewise.
4361 * semantics.c (finish_non_static_data_member): Likewise.
4362 (simplify_aggr_init_exprs_r): Use push/pop_deferring_access_checks
4363 instead of flag_access_control.
4364
4365 2003-05-10 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4366
4367 PR c++/9554
4368 * parser.c (cp_parser_class_name): Remove check_access parameter.
4369 All caller adjusted. Update declaration.
4370 (cp_parser_lookup_name): Likewise.
4371 * semantics.c (push_deferring_access_checks): Change parameter type
4372 to enum deferring_kind. All caller adjusted.
4373 (resume_deferring_access_checks): Adjust to use new enum.
4374 (stop_deferring_access_checks): Likewise.
4375 (perform_or_defer_access_check): Likewise.
4376 * cp-tree.h (deferring_kind): New enum.
4377 (deferred_access): Adjust field type.
4378 (push_deferring_access_checks): Update declaration.
4379
4380 2003-05-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4381
4382 PR c++/10555, c++/10576
4383 * pt.c (lookup_template_class): Handle class template with
4384 multiple levels of parameters when one of the levels contain
4385 errors.
4386
4387 2003-05-08 Jason Merrill <jason@redhat.com>
4388
4389 * init.c (build_new_1): Don't reuse a TARGET_EXPR in an
4390 expression. Undo some of the recent reorg.
4391
4392 2003-05-07 Richard Henderson <rth@redhat.com>
4393
4394 PR c++/10570
4395 * cfns.gperf: Comment out POSIX thread cancellation points,
4396 plus abort and raise.
4397 * cfns.h: Regenerate.
4398
4399 2003-05-07 Jason Merrill <jason@redhat.com>
4400
4401 * call.c (build_conditional_expr): Don't assume that the folded
4402 expression has result_type.
4403
4404 2003-05-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4405
4406 * typeck.c (build_unary_op): Deal with const qualifier in
4407 invalid pointer-to-member earlier.
4408
4409 2003-05-05 Jason Merrill <jason@redhat.com>
4410
4411 PR c++/9537
4412 * call.c (conditional_conversion): Build an RVALUE_CONV if
4413 we're just changing the cv-quals.
4414 (build_conditional_expr): Don't call convert to change
4415 cv-quals.
4416
4417 2003-05-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4418
4419 PR c++/10496
4420 * typeck.c (build_unary_op): Don't output const qualifier when
4421 output invalid pointer-to-member diagnostics.
4422
4423 2003-05-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4424
4425 * decl.c: Fix typos.
4426
4427 2003-05-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4428
4429 PR c++/4494
4430 * decl.c (start_function): Use same_type_p to check return type
4431 of main.
4432
4433 2003-05-03 Zack Weinberg <zack@codesourcery.com>
4434
4435 PR c/10604
4436 * cp/typeck.c (build_x_compound_expr): No need to check
4437 extra_warnings as well as warn_unused_value.
4438
4439 2003-05-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4440
4441 PR c++/9364, c++/10553, c++/10586
4442 * decl.c (make_typename_type): Don't crash on illegal code.
4443
4444 2003-05-03 Nathan Sidwell <nathan@codesourcery.com>
4445
4446 * class.c (finish_struct): Use location_t and input_location
4447 directly.
4448 * decl.c (make_label_decl): Likewise.
4449 (use_label): Likewise.
4450 * decl2.c (warn_if_unknown_interface): Likewise.
4451 (start_static_initialization_or_destruction): Likewise.
4452 (generate_ctor_or_dtor_function): Likewise.
4453 (finish_file): Likewise.
4454 * error.c (print_instantiation_full_context): Likewise.
4455 * init.c (create_temporary_var): Likewise.
4456 * method.c (synthesize_method): Likewise.
4457 * parser.c (cp_token): Likewise.
4458 (cp_lexer_set_source_position_from_token): Likewise.
4459 (cp_lexer_get_preprocessor_token): Likewise.
4460 (cp_parser_statement): Likewise.
4461 * pt.c (tsubst_friend_function): Likewise.
4462 (instantiate_class_template): Likewise.
4463 (tsubst_decl): Likewise.
4464 (tsubst): Likewise.
4465 (instantiate_decl): Likewise.
4466 * semantics.c (begin_class_definition): Likewise.
4467 (expand_body): Likewise.
4468
4469 2003-05-01 Nathan Sidwell <nathan@codesourcery.com>
4470
4471 * class.c (finish_struct): Rename lineno to input_line.
4472 * decl.c (push_binding_level, pop_binding_level,
4473 suspend_binding_level, resume_binding_level, make_label_decl,
4474 use_label, start_function): Likewise.
4475 * decl2.c (warn_if_unknown_interface,
4476 start_static_initialization_or_destruction,
4477 generate_ctor_or_dtor_function, finish_file): Likewise.
4478 * error.c (cp_line_of, print_instantiation_full_context,
4479 print_instantiation_context): Likewise.
4480 * except.c (check_handlers_1, check_handlers): Likewise.
4481 * init.c (create_temporary_var): Likewise.
4482 * method.c (use_thunk, synthesize_method): Likewise.
4483 * parser.c (cp_lexer_set_source_position_from_token,
4484 cp_lexer_get_preprocessor_token): Likewise.
4485 * pt.c (push_tinst_level, pop_tinst_level,
4486 tsubst_friend_function, instantiate_class_template, tsubst_decl,
4487 tsubst, tsubst_expr, instantiate_decl): Likewise.
4488 * semantics.c (genrtl_try_block, finish_label_stmt,
4489 begin_class_definition, expand_body,
4490 genrtl_finish_function): Likewise.
4491 * tree.c (build_min_nt, build_min): Likewise.
4492
4493 2003-05-01 Mark Mitchell <mark@codesourcery.com>
4494
4495 * decl2.c (comdat_linkage): Don't externalize explicit
4496 instantiations.
4497
4498 2003-05-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4499
4500 PR c++/10554
4501 * decl2.c (do_class_using_decl): Check if operand 0 of SCOPE_REF
4502 is not NULL.
4503
4504 2003-05-01 Steven Bosscher <steven@gcc.gnu.org>
4505
4506 * cp-tree.h (struct lang_id2): Remove. Move fields from here...
4507 (struct lang_identifier): ... to here.
4508 (LANG_ID_FIELD): Remove.
4509 (SET_LANG_ID): Remove.
4510 (IDENTIFIER_LABEL_VALUE): Adjust for new lang_identifier.
4511 (SET_IDENTIFIER_LABEL_VALUE): Likewise.
4512 (IDENTIFIER_IMPLICIT_DECL): Likewise.
4513 (SET_IDENTIFIERL_IMPLICIT_DECL): Likewise.
4514 (IDENTIFIER_ERROR_LOCUS): Likewise.
4515 (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
4516
4517 2003-05-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4518
4519 PR c++/8772
4520 * pt.c (convert_template_argument): Correct diagnostic.
4521
4522 2003-04-30 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4523
4524 PR c++/9432, c++/9528
4525 * decl2.c (validate_nonmember_using_decl): Handle SCOPE_REF.
4526
4527 2003-04-30 Garbiel Dos Reis <gcc@integrable-solutions.net>
4528
4529 * decl.c (check_previous_goto_1): Adjust prototype.
4530 (check_previous_goto): Adjust use.
4531 (check_switch_goto): Likewise.
4532 (use_label): Adjust.
4533 (check_previous_goto_1): Don't use pedwarn_with_file_and_line.
4534 (struct named_label_use_list): Use location_t datatype.
4535
4536 2003-04-29 Mark Mitchell <mark@codesourcery.com>
4537
4538 PR c++/10551
4539 * pt.c (mark_decl_instantiated): Defer all explicit instantiations
4540 that have not yet been written out.
4541
4542 2003-04-29 Mark Mitchell <mark@codesourcery.com>
4543
4544 PR c++/10549
4545 * class.c (layout_class_type): Mark overlong bitfields as having
4546 the maximum size permitted by their type, after layout.
4547
4548 PR c++/10527
4549 * error.c (dump_expr): Correctly handling of NEW_EXPR.4
4550
4551 2003-04-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4552
4553 * call.c (build_operator_new_call): Fix typo.
4554 * lang-options.h: Likewise.
4555
4556 2003-04-29 Mark Mitchell <mark@codesourcery.com>
4557
4558 PR c++/10515
4559 * cp-tree.h (lookup_field_1): Declare it.
4560 * search.c (lookup_field_1): Make it public.
4561 * decl.c (reshape_init): Handle designated initializers.
4562
4563 * decl.c (maybe_commonize_var): Further tweak support for systems
4564 without weak symbols.
4565
4566 2003-04-27 Mark Mitchell <mark@codesourcery.com>
4567
4568 * decl.c (maybe_commonize_var): Fix thinko in last patch.
4569
4570 2003-04-27 Mark Mitchell <mark@codesourcery.com>
4571
4572 PR c++/10506
4573 * method.c (use_thunk): Decrement immediate_size_expand.
4574
4575 PR c++/10503
4576 * cp-tree.h (DECL_VAR_MARKED_P): New macro.
4577 (DECL_MAYBE_TEMPLATE): Remove.
4578 * class.c (fixed_type_or_null): Avoid infinite recursion.
4579
4580 * decl.c (maybe_commonize_var): Make the code match the comments.
4581 * pt.c (instantiate_decl): Move call to import_export_decl.
4582
4583 2003-04-26 Mark Mitchell <mark@codesourcery.com>
4584
4585 * decl2.c (finish_file): Fix merge botch.
4586
4587 2003-04-25 Mark Mitchell <mark@codesourcery.com>
4588
4589 * decl2.c (finish_file): Don't call import_export_decl for
4590 functions that are not defined.
4591 (handle_class_head): Robustify.
4592 * pt.c (instantiate_decl): Do not call cp_finish_decl for
4593 variables that are not defined.
4594
4595 2003-04-24 Sylvain Pion <Sylvain.Pion@mpi-sb.mpg.de>
4596
4597 * call.c (print_z_candidates): Fix off by one error.
4598
4599 2003-04-24 Nathan Sidwell <nathan@codesourcery.com>
4600
4601 PR c++/10337
4602 * call.c (joust): Don't warn about conversion ops that are exact
4603 or cv-conversions. Rearrange to avoid multiple type comparisons.
4604
4605 2003-04-23 Mark Mitchell <mark@codesourcery.com>
4606
4607 PR c++/10471
4608 * call.c (build_cxx_call): Robustify.
4609
4610 2003-04-23 Neil Booth <neil@daikokuya.co.uk>
4611
4612 * Make-lang.in (lex.o): Remove mbchar.h.
4613 * lex.c (MULTIBYTE_CHARS): Lose.
4614 * parser.c (cp_lexer_get_preprocessor_token): CPP_OTHER handled
4615 in c-lex.c.
4616
4617 2003-04-23 Mark Mitchell <mark@codesourcery.com>
4618
4619 PR c++/9847
4620 * cp-tree.h (duplicate_tag_error): Remove.
4621 * class.c (duplicate_tag_error): Remove.
4622 * semantics.c (begin_class_definition): Return immediately for a
4623 duplicate class definition.
4624
4625 PR c++/10451
4626 * decl.c (grokdeclarator): Correct logic for "mutable" errors.
4627
4628 2003-04-22 Mark Mitchell <mark@codesourcery.com>
4629
4630 PR c++/10446
4631 * search.c (lookup_fnfields_1): Handle empty slots in the method
4632 vector.
4633
4634 PR c++/10428
4635 * decl.c (check_elaborated_type_specifier): New function, split
4636 out from ...
4637 (xref_tag): ... here. Use the new function in more places.
4638
4639 * rtti.c (throw_bad_typeid): Use build_cxx_call.
4640
4641 2003-04-21 Mark Mitchell <mark@codesourcery.com>
4642
4643 * call.c (build_over_call): Use build_cxx_call.
4644 (build_cxx_call): New method, split out of build_over_call.
4645 * cp-tree.h (language_function): Add can_throw.
4646 (build_cxx_call): Declare it.
4647 * decl.c (finish_function): If a function does not contain any
4648 calls to functions that can throw an exception, indicate that
4649 fact.
4650 * decl2.c (mark_used): Do not defer the instantiation of
4651 functions, if the current function does not throw.
4652 * optimize.c (maybe_clone_body): Copy TREE_NOTHROW to the clones.
4653 * pt.c (instantiate_decl): Make sure import_export_decl is called
4654 before emitting things.
4655 * rtti.c (throw_bad_cast): Use build_cxx_call.
4656 (build_dynamic_cast_1): Likewise.
4657 * typeck.c (build_function_call): Likewise.
4658
4659 2003-04-21 Nathan Sidwell <nathan@codesourcery.com>
4660
4661 PR c++/9881
4662 * typeck.c (build_unary_op): Fold all COMPONENT_REF addr
4663 expressions. Reverts my 2002-08-08 patch.
4664
4665 * typeck.c (comp_ptr_ttypes_real): Swap final && operands for
4666 cheaper early exit.
4667
4668 2003-04-20 Nathan Sidwell <nathan@codesourcery.com>
4669
4670 * cp/decl2.c (start_static_storage_duration_function): Take count
4671 arg, don't check if it wraps round.
4672 (generate_ctor_or_dtor_function): Add locus arg, use it.
4673 (generate_ctor_and_dtor_functions_for_priority): Data arg is a
4674 locus.
4675 (finish_file): Set line numbers to past EOF for synthesized
4676 functions.
4677
4678 2003-04-20 Nathan Sidwell <nathan@codesourcery.com>
4679
4680 PR c++/10405
4681 * search.c (lookup_field_1): Final scan goes backwards for
4682 types, forwards for non-types.
4683
4684 2003-04-17 Roger Sayle <roger@eyesopen.com>
4685
4686 PR c/10375
4687 * decl.c (duplicate_decls): Preserve "const", "noreturn" and
4688 "nothrow" function attributes.
4689
4690 2003-04-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4691
4692 PR c++/10347
4693 * pt.c (type_dependent_expression_p): Handle array new.
4694
4695 2003-04-15 Mark Mitchell <mark@codesourcery.com>
4696
4697 PR c++/10381
4698 * parser.c (cp_parser_primary_expression): Reorganize logic for
4699 dealing with name lookup failures.
4700
4701 2003-04-15 Jason Merrill <jason@redhat.com>
4702
4703 * decl2.c (mark_used): Don't instantiate anything if
4704 skip_evaluation.
4705
4706 2003-04-14 Ziemowit Laski <zlaski@apple.com>
4707
4708 * tree.c (build_cplus_array_type_1): Do not call
4709 uses_template_parms() on a NULL index_type.
4710
4711 2003-04-13 Roger Sayle <roger@eyesopen.com>
4712
4713 * decl.c (duplicate_decls): Preserve pure and malloc attributes.
4714
4715 2003-04-12 Mark Mitchell <mark@codesourcery.com>
4716
4717 PR c++/10300
4718 * init.c (build_new_1): Reorganize.
4719
4720 2003-04-12 Zack Weinberg <zack@codesourcery.com>
4721
4722 * class.c (initialize_array)
4723 * decl.c (reshape_init)
4724 * decl2.c (build_expr_from_tree)
4725 * init.c (build_zero_init)
4726 * pt.c (tsubst_copy, tsubst_copy_and_build)
4727 * rtti.c (tinfo_base_init, generic_initializer, ptr_initializer)
4728 (ptm_initializer, class_initializer, get_pseudo_ti_init)
4729 * semantics.c (finish_compound_literal)
4730 * typeck.c (build_ptrmemfunc1)
4731 * typeck2.c (store_init_value, process_init_constructor)
4732 (build_functional_cast): Use build_constructor.
4733
4734 2003-04-12 Zack Weinberg <zack@codesourcery.com>
4735
4736 * call.c (print_z_candidates): Use gcc_gettext_width, not
4737 strlen, to determine how much padding to use.
4738
4739 2003-04-10 Zack Weinberg <zack@codesourcery.com>
4740
4741 * decl.c: Update all calls to shadow_warning.
4742
4743 2003-04-10 Mark Mitchell <mark@codesourcery.com>
4744
4745 * class.c (layout_class_type): Correct handling for overlong
4746 bit-fields whose width is the same as an integer type.
4747
4748 2003-04-06 Zack Weinberg <zack@codesourcery.com>
4749
4750 * cp-tree.def: Make fourth element for all 'c' and 'x' nodes zero.
4751 * cp-lang.c (cp_tree_size): New function.
4752 (LANG_HOOKS_TREE_SIZE): Override.
4753
4754 * cp-tree.h (SOURCE_LOCUS, SRCLOC_FILE, SRCLOC_LINE, struct
4755 tree_srcloc, TS_CP_COMMON, TS_CP_SRCLOC): Kill.
4756 (union lang_tree_node): Remove common and srcloc members.
4757 (build_srcloc_here): Don't prototype.
4758 * decl.c (cp_tree_node_structure): Kill SRCLOC case.
4759 * pt.c (pending_templates): Correct comment.
4760 * tree.c (build_srcloc, build_srcloc_here): Kill.
4761
4762 2003-04-06 Zack Weinberg <zack@codesourcery.com>
4763
4764 * call.c: Include intl.h.
4765 (print_z_candidate): Always use inform; get rid of errfn
4766 argument. Reorganize so that all the strings get picked up
4767 by xgettext. Note obligation of caller to pass first argument
4768 through gettext.
4769 (print_z_candidates): Update to match. Indent second and
4770 successive candidates by strlen() of translated message.
4771 (joust): Restructure ambiguous-conversion pedwarn so that
4772 translators see a complete sentence. Update calls to
4773 print_z_candidate.
4774
4775 * Make-lang.in (cp/call.o): Update dependencies.
4776
4777 2003-04-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4778
4779 * decl.c (set_current_binding_level): Delete, revert last change.
4780 (current_binding_level): Modify to allow it as as lvalue.
4781
4782 2003-04-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4783
4784 * name-lookup.c (find_binding): Pass appropriate pointer type to
4785 POP_TIMEVAR_AND_RETURN.
4786
4787 2003-04-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4788
4789 * Make-lang.in (cp-warn): Add $(STRICT_WARN).
4790 * cp-tree.h: Don't insist on having GNUC.
4791
4792 2003-04-03 Jason Merrill <jason@redhat.com>
4793
4794 * cvt.c (ocp_convert): Only abort if we try to convert an object
4795 of TREE_ADDRESSABLE type.
4796
4797 * class.c (build_vtable): Set DECL_ALIGN here.
4798 (get_vtable_decl): Not here.
4799 (layout_vtable_decl): Or here.
4800 (create_vtable_ptr): Or here.
4801 (layout_class_type): Or here.
4802 (check_bitfield_decl): Don't mess with field alignment.
4803
4804 2003-04-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4805
4806 * operators.def (DEF_SIMPLE_OPERATOR, DEF_ASSN_OPERATOR,
4807 DEF_ASSN_OPERATOR): Delete spurious semi-colon.
4808 * rtti.c (dfs_class_hint_mark): Likewise.
4809
4810 * decl.c (push_local_name, push_class_level_binding,
4811 maybe_inject_for_scope_var): Don't use POP_TIMEVAR_AND_RETURN in
4812 functions returning void.
4813 * decl2.c (add_using_namespace): Likewise.
4814
4815 * decl.c (print_binding_level, print_other_binding_stack,
4816 print_binding_stack): Cast argument of %p specifier to void*.
4817 * ptree.c (cxx_print_decl): Likewise.
4818
4819 * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
4820 VAR_FUNCTION_OR_PARM_DECL_CHECK,
4821 VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
4822 BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK, LANG_TYPE_CLASS_CHECK,
4823 LANG_TYPE_PTRMEM_CHECK, LANG_DECL_U2_CHECK): Add __extension__.
4824
4825 * decl.c (set_current_binding_level): New macro. Use throughout
4826 when setting the current binding level.
4827
4828 * cp-tree.h (cp_lvalue_kind, base_access): Delete trailing comma
4829 in enum.
4830 * method.c (mangling_flags): Likewise.
4831
4832 * cp-tree.h (lang_type_header): Add __extension__ and use
4833 CHAR_BITFIELD for members.
4834
4835 2003-04-02 Geoffrey Keating <geoffk@apple.com>
4836
4837 PR other/9274
4838 * mangle.c: Include gt-cp-mangle.h.
4839 (subst_identifiers): Mark with GTY.
4840 * config-lang.in (gtfiles): Add cp/mangle.c.
4841 * Make-lang.in: (gt-cp-mangle.h): New rule.
4842 (cp/mangle.o): Depends on gt-cp-mangle.h.
4843
4844 2003-04-01 Andrew Pinski <pinskia@physics.uc.edu>
4845
4846 * config-lang.in (gtfiles): Add \$(srcdir)/cp/name-lookup.c
4847 after \$(srcdir)/cp/name-lookup.h.
4848 * name-lookup.c: (cxx_binding_make): Use ggc_alloc_clearedinstead
4849 of ggc_alloc. Include gt-cp-name-lookup.h at the end of the file.
4850 * Make-lang.in: (gt-cp-name-lookup.h): Is generated by gengtype.
4851 (cp/name-lookup.o): Depends on gt-cp-name-lookup.h.
4852
4853 2003-03-31 Jason Merrill <jason@redhat.com>
4854
4855 PR java/10145
4856 * class.c (check_field_decl): Don't set DECL_ALIGN.
4857
4858 2003-03-30 Mark Mitchell <mark@codesourcery.com>
4859
4860 PR c++/7647
4861 * decl.c (grokdeclarator): Tidy, slightly.
4862 * search.c (lookup_field_1): Add want_type parameter.
4863 (lookup_field_r): Adjust call to lookup_field_1.
4864
4865 2003-03-30 Gabriel Dos Reis <gdr@integrable-solutions.net>
4866
4867 * Make-lang.in (cp/name-lookup.o): Add more dependencies.
4868
4869 2003-03-30 Gabriel Dos Reis <gdr@integrable-solutions.net>
4870
4871 * cp-tree.h (binding_for_name: Move to name-lookup.h Adjust
4872 prototype.
4873 (cxx_scope_find_binding_for_name): Likewise.
4874 * decl.c (find_binding: Move to name-lookup.c.
4875 (binding_for_name): Likewise.
4876 (cxx_scope_find_binding_for_name): Likewise.
4877 (BINDING_LEVEL): Remove.
4878 (push_binding): Tidy.
4879 (push_class_binding): Likewise.
4880 (pop_binding): Likewise.
4881 (poplevel): Likewise.
4882 (poplevel_class): Likewise.
4883 (set_identifier_type_value_with_scope): Likewise.
4884 (push_overloaded_decl): Likewise.
4885 (lookup_tag): Likewise.
4886 (unqualified_namespace_lookup): Likewise.
4887 (lookup_name_current_level): Likewise.
4888 (maybe_inject_for_scope_var): Likewise.
4889 (namespace_binding): Move to name-lookup.c.
4890 (set_namespace_binding): Likewise.
4891 * decl2.c (lookup_using_namespace): Tidy.
4892 (qualified_lookup_using_namespace): Likewise.
4893 (do_toplevel_using_decl): Likewise.
4894 * name-lookup.c: Include "timevar.h"
4895 * name-lookup.h (cxx_scope): Declare.
4896 (struct cxx_binding): Lose member "has_level". Adjust "scope"
4897 member declaration.
4898 (BINDING_SCOPE): Adjust definition.
4899 (BINDING_HAS_LEVEL_P): Remove.
4900
4901 2003-03-30 Gabriel Dos Reis <gdr@integrable-solutions.net>
4902
4903 * name-lookup.c: New file.
4904 * name-lookup.h: Likewise..
4905 * decl.c (push_binding): Adjust use cxx_binding_make.
4906 (free_bindings): Move to name-lookup.c
4907 (pop_binding): Use cxx_binding_free.
4908 (binding_for_name): Tidy.
4909 * cp-tree.h: Include "name-lookup.h"
4910 (cxx_binding_make): Move to name-lookup.h
4911 (cxx_binding_clear): Likewise.
4912 (struct cxx_binding): Likewise.
4913 (LOCAL_BINDING_P): Likewise.
4914 (INHERITED_VALUE_BINDING_P): Likewise.
4915 (BINDING_SCOPE): Likewise.
4916 (BINDING_HAS_LEVEL_P): Likewise.
4917 (BINDING_VALUE): Likewise.
4918 (BINDING_TYPE): Likewise.
4919 * config-lang.in (gtfiles): Add cp/name-lookup.h
4920 * Make-lang.in (cp/name-lookup.o): New rule.
4921 (CXX_OBJS): Add cp/name-lookup.o
4922 (CXX_TREE_H): Add cp/name-lookup.h
4923
4924 2003-03-28 Jason Merrill <jason@redhat.com>
4925
4926 PR c++/10245
4927 * cvt.c (force_rvalue): New fn.
4928 * call.c (build_conditional_expr): Use it.
4929 * cp-tree.h: Declare it.
4930
4931 2003-03-28 Mike Stump <mrs@apple.com>
4932
4933 * error.c (dump_expr): Add 0x to printed hex numbers to make
4934 output match source code better.
4935
4936 2003-03-28 Mark Mitchell <mark@codesourcery.com>
4937
4938 PR c++/10218
4939 * decl.c (grokfndecl): Return NULL_TREE for bogus out-of-class
4940 definitions.
4941
4942 * decl2.c (generate_ctor_or_dtor_function): Tolerate a
4943 non-existant ssdf_decls array.
4944 (finish_file): Call generator_ctor_or_dtor_function when there are
4945 static constructors or destructors and no other static
4946 initializations.
4947
4948 2003-03-28 Nathan Sidwell <nathan@codesourcery.com>
4949
4950 PR c++/10047
4951 * decl2.c (finish_file): Don't warn about explicitly instantiated
4952 inline decls.
4953
4954 2003-03-27 Nathan Sidwell <nathan@codesourcery.com>
4955
4956 PR c++/10224
4957 * pt.c (lookup_template_class): Only check instantiated args if
4958 they do not contain template parameters.
4959
4960 2003-03-27 Nathan Sidwell <nathan@codesourcery.com>
4961
4962 PR c++/10158
4963 * parser.c (cp_parser_function_definition): Set
4964 DECL_INITIALIZED_IN_CLASS for members.
4965 * pt.c (instantiate_decl): Only reduce the template args for
4966 friends that are not defined in class.
4967
4968 2003-03-25 Jason Merrill <jason@redhat.com>
4969
4970 * call.c (print_z_candidate): Change name of first arg to msgid.
4971 (joust): Add comment for translators.
4972
4973 2003-03-24 Nathan Sidwell <nathan@codesourcery.com>
4974
4975 PR c++/9898, PR c++/383, DR 322
4976 * pt.c (maybe_adjust_types_for_deduction) <DEDUCE_CONV>: Look
4977 through reference types on both PARM and ARG.
4978
4979 2003-03-24 Nathan Sidwell <nathan@codesourcery.com>
4980
4981 PR c++/10119
4982 * error.c (dump_expr) <BASELINK>: Use dump_expr.
4983 * pt.c (maybe_fold_nontype_args): New function.
4984 (tsubst_copy) <SCOPE_REF>: Subst any template_id args.
4985 <TEMPLATE_ID_EXPR>: Break out folding code, call it.
4986 (tsubst_copy_and_build) <TEMPLATE_ID_EXPR>: Call
4987 maybe_fold_nontype_args.
4988
4989 2003-03-24 Nathan Sidwell <nathan@codesourcery.com>
4990
4991 PR c++/10026
4992 * decl2.c (arg_assoc_type) <ERROR_MARK>: Don't die.
4993
4994 2003-03-23 Mark Mitchell <mark@codesourcery.com>
4995
4996 PR c++/7086
4997 * typeck.c (cxx_mark_addressable): Adjust call to
4998 gen_mem_addressof or put_var_into_stack.
4999
5000 2003-03-22 Nathan Sidwell <nathan@codesourcery.com>
5001
5002 PR c++/9978, c++/9708
5003 * cp-tree.h (instantiate_template): Add tsubst_flags parameter.
5004 * call.c (add_template_candidate_real): Adjust
5005 instantiate_template call.
5006 * class.c (resolve_address_of_overloaded_function): Likewise.
5007 * decl.c (build_enumerator): Set TREE_CONSTANT.
5008 * pt.c (check_instantiated_args): New.
5009 (push_inline_template_parms_recursive): Set TREE_CONSTANT,
5010 TREE_READONLY.
5011 (build_template_parm_index): Copy TREE_CONSTANT, TREE_READONLY.
5012 (reduce_template_parm_level): Likewise.
5013 (process_template_parm): Likewise.
5014 (check_explicit_specialization): Adjust instantiate_template call.
5015 (convert_template_argument): Don't check non-type argument here.
5016 (lookup_template_class): Check them here.
5017 (tsubst_friend_function): Adjust instantiate_template call.
5018 (instantiate_template): Add tsubst_flags parameter, use it. Check
5019 instantiated args.
5020
5021 2003-03-21 Zack Weinberg <zack@codesourcery.com>
5022
5023 * decl.c: Update calls to shadow_warning.
5024
5025 2003-03-21 Nathan Sidwell <nathan@codesourcery.com>
5026
5027 PR c++/9898
5028 * error.c (dump_decl) [CONST_DECL]: Print '<enumerator>'.
5029 (dump_expr) [CONSTRUCTOR]: Print default ctor as a function call.
5030
5031 2003-03-20 Mark Mitchell <mark@codesourcery.com>
5032
5033 * cp/decl2.c (arg_assoc_class): Correct check for namespace-scope
5034 friends.
5035 * cp/pt.c (instantiate_class_template): Fix formatting.
5036
5037 2003-03-14 Matt Austern <austern@apple.com>
5038
5039 * cp-tree.h (unemitted_tinfo_decls): Declaration of a new varray.
5040 (unemitted_tinfo_decl_p): Remove.
5041 (emit_tinfo_decl): Change declaration to remove unused parameter.
5042 * decl2.c (finish_file): Change tinfo emission to loop through
5043 unemitted_tinfo_decls array instead of looping through all decls.
5044 * rtti.c (unemitted_tinfo_decl_p): Declare as static, remove
5045 unused second parameter.
5046 (init_rtti_processing): initialize unemitted_tinfo_decls varray.
5047 (get_tinfo_decls): push new tinfo decl on unemitted_tinfo_decls.
5048 (emit_tinfo_decl): remove unused second parameter, add assertion
5049 that decl hasn't already been emitted.
5050
5051 2003-03-19 Nathanael Nerode <neroden@gcc.gnu.org>
5052
5053 * dump.c (cp_dump_tree), cp-tree.h (cp_dump_tree): Change return
5054 type from 'int' to 'bool'. Replace 0 and 1 with true and false in
5055 return statements.
5056
5057 2003-03-19 Jason Merrill <jason@redhat.com>
5058
5059 PR c++/8316, c++/9315, c++/10136
5060 * call.c (print_z_candidate): Split out from...
5061 (print_z_candidiates): ...here.
5062 (joust): Use it.
5063
5064 2003-03-17 Roger Sayle <roger@eyesopen.com>
5065
5066 PR c++/10031
5067 * decl.c (duplicate_decls): Use the new type when prototyping
5068 anticipated decls, even when the types match. This defines the
5069 exception list for the built-in function.
5070
5071 2003-03-17 Jason Merrill <jason@redhat.com>
5072
5073 PR c++/10091
5074 * typeck.c (build_class_member_access_expr): Compare
5075 TYPE_MAIN_VARIANTs.
5076
5077 2003-03-17 Mark Mitchell <mark@codesourcery.com>
5078
5079 PR c++/9639
5080 * parser.c (cp_parser_declarator_id): Clear parser->scope.
5081
5082 2003-03-16 Jason Merrill <jason@redhat.com>
5083
5084 PR c++/9993
5085 * decl.c (finish_function): Only allow the NRVO to use variables
5086 declared at function scope.
5087
5088 2003-03-17 Andreas Jaeger <aj@suse.de>
5089
5090 * Make-lang.in (cp/TAGS): Remove.
5091
5092 2003-03-16 Nathan Sidwell <nathan@codesourcery.com>
5093
5094 PR c++/9629
5095 * cp-tree.h (struct language_function): Add in_base_initializer.
5096 (in_base_initializer): define it.
5097 (expand_member_init): Remove INIT param.
5098 * init.c (expand_member_init): Remove INIT param, return the member.
5099 (emit_mem_initializers): Set in_base_initializer.
5100 * class.c (build_base_path): Check in_base_initializer.
5101 * parser.c (cp_parser_mem_initializer): Set in_base_initializer.
5102 * pt.c (tsubst_initializer_list): Likewise.
5103
5104 2003-03-16 Gabriel Dos Reis <gdr@integrable-solutions.net>
5105
5106 * decl.c (binding_for_name): Fix initialization thinko.
5107
5108 2003-03-15 Gabriel Dos Reis <gdr@integrable-solutions.net>
5109
5110 Compile-time improvement: 2/n.
5111 * cp-tree.h (struct cxx_binding): New datatype;
5112 (struct lang_identifier): Use it.
5113 (LOCAL_BINDING_P): Adjust definition.
5114 (INHERITED_VALUE_BINDING_P): Likewise.
5115 (BINDING_SCOPE): Likewise.
5116 (BINDING_HAS_LEVEL_P): Likewise.
5117 (BINDING_VALUE): Likewise.
5118 (BINDING_TYPE): Likewise.
5119 (IDENTIFIER_VALUE): Likewise.
5120 (struct tree_binding): Remove.
5121 (TS_CP_BINDING): Likewise.
5122 ((union lang_tree_node): Remove field "binding".
5123 (cxx_binding_clear): New macro.
5124 (binding_for_name): Adjust return type.
5125 (qualified_lookup_using_namespace): Adjust prototype.
5126 (lookup_using_namespace): Adjust prototype.
5127 (cxx_scope_find_binding_for_name): Declare.
5128 * cp-tree.def: Remove CPLUS_BINDING definition.
5129 * decl.c (push_binding): Adjust local variable type.
5130 (add_binding): Likewise.
5131 (push_class_binding): Likewise.
5132 (pop_binding): Likewise.
5133 (poplevel): Likewise.
5134 (poplevel_class): Likewise.
5135 (free_bindings): Adjust type.
5136 (find_binding): Adjust return type, add a third parameter. Remove
5137 non-useful assertion now that we use static typing.
5138 (cxx_scope_find_binding_for_name): New function.
5139 (binding_for_name): Use it. Adjust local variable type. Simplify.
5140 (namespace_binding): Simplify.
5141 (set_namespace_binding): Likewise.
5142 (set_identifier_type_value_with_scope): Adjust local variable type.
5143 (lookup_tag): Don't type-abuse of local variable 'old'.
5144 (lookup_namespace_name): Likewise. Allocate binding on stack.
5145 (select_decl): Adjust prototype.
5146 (unqualified_namespace_lookup): Allocate binding on stack.
5147 Don't type-abuse of local variable 'val'.
5148 (lookup_name_real): Likewise.
5149 (maybe_inject_for_scope_var): Adjust local variable type.
5150 (cp_tree_node_structure): Remove CPLUS_BINDING case label.
5151 (namespace_binding): Adjust logic, simplify.
5152 (BINDING_LEVEL): Adjust definition.
5153 (push_class_level_binding): Adjust local variable type.
5154 (struct cxx_saved_binding): Adjust field 'binding' type.
5155 * decl2.c (ambiguous_decl): Adjust prototype.
5156 (lookup_using_namespace): Adjust local variable type.
5157 (qualified_lookup_using_namespace): Catch type error and correct
5158 ensueing logic error.
5159 (do_nonmember_using_decl): Adjust local variable type. Allocate
5160 temporary cxx_binding on stack.
5161 (do_toplevel_using_decl): Adjust local variable type.
5162 * ptree.c (cxx_print_cxx_binding): New function.
5163 (cxx_print_identifier): Use it.
5164 (cxx_print_xnode): Delete CPLUS_BINDING case label.
5165
5166 2003-03-15 Roger Sayle <roger@eyesopen.com>
5167
5168 * tree.c (count_functions): Fix whitespace.
5169
5170 2003-03-15 Neil Booth <neil@daikokuya.co.uk>
5171
5172 * Make-lang.in: Update.
5173
5174 2003-03-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5175
5176 PR c++/6440
5177 * pt.c (maybe_process_partial_specialization): Handle
5178 member class template when enclosing class template is
5179 explicit specialized.
5180 (most_general_template): Stop looking when DECL is already
5181 specialized.
5182
5183 2003-03-13 Jason Merrill <jason@redhat.com>
5184
5185 PR c++/9420
5186 * search.c (lookup_conversions): Call complete_type here.
5187 * call.c (implicit_conversion): Not here.
5188
5189 2003-03-13 Mark Mitchell <mark@codesourcery.com>
5190
5191 * decl2.c (do_nonmember_using_decl): Correct handling of
5192 simultaneous type/non-type bindings.
5193
5194 * call.c (initialize_reference): Remove bogus assertion.
5195 * decl.c (build_ptrmemfunc_type): Revert change of 2003-03-09.
5196
5197 2003-03-12 Andrew Lewycky <andrew@mxc.ca>
5198
5199 PR c++/7050
5200 * expr.c (cxx_expand_expr): Return const0_rtx for throw
5201 expressions.
5202
5203 2003-03-11 Mark Mitchell <mark@codesourcery.com>
5204
5205 PR c++/9474
5206 * decl2.c (do_nonmember_using_decl): Do not call duplicate decls
5207 to merge old and new declarations.
5208
5209 2003-03-12 Alexandre Oliva <aoliva@redhat.com>
5210
5211 * g++.1: Remove.
5212 * Make-lang.in (c++.generated-manpages): Build cp/g++.1.
5213 (cp/g++.1): Build it from scratch in the build tree.
5214 (c++.install-man): Depend on it. Install it from the build tree.
5215 (c++.mostlyclean): Clean it.
5216
5217 2003-03-11 Mark Mitchell <mark@codesourcery.com>
5218
5219 PR c++/9474
5220 * decl2.c (do_nonmember_using_decl): Do not call duplicate decls
5221 to merge old and new declarations.
5222
5223 PR c++/9924
5224 * decl2.c (do_nonmember_using_decl): Ignore anticipated builtins.
5225
5226 2003-03-11 Jason Merrill <jason@redhat.com>
5227
5228 PR c++/9820
5229 * search.c (lookup_member): Fix handling of functions in a class
5230 being defined.
5231
5232 2003-03-11 Mark Mitchell <mark@codesourcery.com>
5233
5234 PR c++/8700
5235 * call.c (convert_class_to_reference): Adjust usage of
5236 splice_viable.
5237 (any_viable): Remove.
5238 (splice_viable): Combine with any_viable.
5239 (print_z_candidates): Avoid printing duplicates.
5240 (build_user_type_conversion_1): Adjust usage of splice_viable.
5241 (build_new_function_call): Likewise.
5242 (build_operator_new_call): Likewise.
5243 (build_object_call): Likewise.
5244 (build_conditional_expr): Likewise.
5245 (build_new_op): Likewise.
5246 (build_new_method_call): Likewise.
5247 (joust): Remove spurious comment.
5248 * cp-tree.h (DECL_FRIENDLIST): Correct documentation.
5249 * decl2.c (arg_assoc_class): Simplify.
5250 * friend.c (add_friend): Likewise.
5251
5252 2003-03-11 Jason Merrill <jason@redhat.com>
5253
5254 PR c++/8660
5255 * decl2.c (check_classfn): A member template only matches a
5256 member template.
5257
5258 2003-03-11 Neil Booth <neil@daikokuya.co.uk>
5259
5260 * Make-lang.in (CXX_C_OBJS): Update.
5261 * lang-specs.h: Don't define __GNUG__ here.
5262
5263 2003-03-10 Mark Mitchell <mark@codesourcery.com>
5264
5265 * call.c (perform_overload_resolution): New function.
5266 (build_new_function_call): Use it.
5267 (build_operator_new_call): Likewise.
5268 (add_candidates): Add explicit_targs and template_only parameters.
5269 (build_new_op): Adjust accordingly.
5270 * cp-tree.h (build_operator_new_call): New function.
5271 (build_function_call_real): Remove.
5272 (build_function_call_maybe): Likewise.
5273 * init.c (build_new_1): Use build_operator_new_call.
5274 * typeck.c (build_function_call_real): Rename to ...
5275 (build_function_call): ... this.
5276
5277 2003-03-10 Devang Patel <dpatel@apple.com>
5278
5279 PR c++/9394
5280 * g++spec.c (lang_specific_driver): Use DEFAULT_WORD_SWTCH_TAKES_ARG.
5281
5282 2003-03-10 Jason Merrill <jason@redhat.com>
5283
5284 PR c++/9798
5285 * decl.c (push_using_directive): Push before recursing.
5286
5287 PR c++/9868, c++/9524
5288 * call.c (resolve_scoped_fn_name): Handle the case of a function
5289 pointer member.
5290
5291 * decl2.c (build_offset_ref_call_from_tree): Only mess with 'this'
5292 argument in the pointer-to-member case.
5293
5294 2003-03-09 Mark Mitchell <mark@codesourcery.com>
5295
5296 PR c++/9373
5297 * cp-lang.c (cxx_get_alias_set): Use alias set zero for
5298 pointers to member functions.
5299
5300 PR c++/8534
5301 * decl.c (build_ptrmemfunc_type): Do not allow default arguments
5302 in pointer-to-member-function types.
5303
5304 2003-03-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
5305
5306 * expr.c (cplus_expand_constant): Use C90 prototype style.
5307 (cxx_expand_expr): Likewise.
5308
5309 2003-03-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5310
5311 PR c++/9970
5312 * decl.c (duplicate_decls): Only copy DECL_THUNKS for virtual
5313 functions.
5314
5315 2003-03-08 Geoffrey Keating <geoffk@apple.com>
5316
5317 * lang-specs.h (c++-header): Change .pch to .gch.
5318
5319 2003-03-08 Neil Booth <neil@daikokuya.co.uk>
5320
5321 * cp-tree.h (cxx_init): Update prototype.
5322 * lex.c (cxx_init): Similarly.
5323
5324 2003-03-08 Mark Mitchell <mark@codesourcery.com>
5325
5326 PR c++/9823
5327 * cp-tree.h (begin_mem_initializers): Remove.
5328 * parser.c (cp_parser_mem_initializer_list): Inline it here.
5329 Do not call finish_mem_initializers if not in a constructor.
5330 (cp_parser_class_head): Fix typo in error message.
5331 * semantics.c (begin_mem_initializers): Remove.
5332 * testsuite/g++.dg/parser/constructor1.C: New test.
5333
5334 PR c++/9809
5335 * call.c (add_function_candidate): Skip builtin fuctions that have
5336 not yet been declared.
5337
5338 PR c++/9982
5339 * init.c (build_new_1): Correct logic for determining whether or
5340 not to use an array cookie.
5341
5342 PR c++/9524
5343 * parser.c (cp_parser_postfix_expression): Call
5344 finish_non_static_data_member, even when processing_template_decl.
5345
5346 PR c++/9912
5347 * cp-tree.h (is_ancestor): New function.
5348 (handle_class_head): Change prototype.
5349 * decl2.c (is_namespace_ancestor): Rename to ...
5350 (namespace_anecestor): ... this.
5351 (set_decl_namespace): Adjust accordingly.
5352 (handle_class_head): Remove unnecessary parameters.
5353 * parser.c (cp_parser_class_head): Check that
5354 nested-name-specifiers are used appropriately.
5355
5356 2003-03-07 Mark Mitchell <mark@codesourcery.com>
5357
5358 * call.c (reference_binding): Remove REF_IS_VAR parameter.
5359 (implicit_conversion): Adjust call to reference_binding.
5360 (make_temporary_var_for_ref_to_type): Add TYPE parameter.
5361 (initialize_reference): Adjust handling for references bound to
5362 rvalues.
5363 * cp-tree.h (make_temporary_var_for_ref_to_temp): Change
5364 prototype.
5365 (real_non_cast_lvalue_p): New method.
5366 * cvt.c (build_up_reference): Adjust use of
5367 make_temporary_var_for_ref_to_temp.
5368 * tree.c (real_non_cast_lvalue_p): New method.
5369
5370 2003-03-07 Gabriel Dos Reis <gdr@integrable-solutions.net>
5371
5372 * except.c (init_exception_processing): Use C90 prototype style.
5373 (cp_protect_cleanup_actions): Likewise.
5374 (prepare_eh_type): Likewise.
5375 (build_eh_type_type): Likewise.
5376 (build_exc_ptr): Likewise.
5377 (do_begin_catch): Likewise.
5378 (dtor_nothrow): Likewise.
5379 (do_end_catch): Likewise.
5380 (push_eh_cleanup): Likewise.
5381 (decl_is_java_type): Likewise.
5382 (choose_personality_routine): Likewise.
5383 (initialize_handler_parm): Likewise.
5384 (expand_start_catch_block): Likewise.
5385 (expand_end_catch_block): Likewise.
5386 (begin_eh_spec_block): Likewise.
5387 (finish_eh_spec_block): Likewise.
5388 (do_allocate_exception): Likewise.
5389 (do_free_exception): Likewise.
5390 (wrap_cleanups_r): Likewise.
5391 (stabilize_throw_expr): Likewise.
5392 (build_throw): Likewise.
5393 (complete_ptr_ref_or_void_ptr_p): Likewise.
5394 (is_admissible_throw_operand): Likewise.
5395 (nothrow_libfn_p): Likewise.
5396 (can_convert_eh): Likewise.
5397 (check_handlers_1): Likewise.
5398 (check_handlers): Likewise.
5399
5400 2003-03-06 Mark Mitchell <mark@codesourcery.com>
5401
5402 * call.c (merge_conversion_sequences): New function.
5403 (build_conv): Set ICS_USER_FLAG for USER_CONVs.
5404 (convert_class_to_reference): Correct handling of second
5405 standard conversion sequence in a user-defined conversion
5406 sequence.
5407 (build_user_type_conversion_1): Use merge_conversion_sequences.
5408 * cp-tree.def: Add comments for CONV nodes.
5409 * rtti.c (get_tinfo_decl): Use build_address/build_nop.
5410
5411 2003-03-07 Gabriel Dos Reis <gdr@integrable-solutions.net>
5412
5413 * error.c (init_error): Use C90 prototype style.
5414 (dump_scope): Likewise.
5415 (dump_qualifiers): Likewise.
5416 (dump_template_argument): Likewise.
5417 (dump_template_argument_list): Likewise.
5418 (dump_template_parameter): Likewise.
5419 (dump_template_bindings): Likewise.
5420 (dump_type): Likewise.
5421 (dump_typename): Likewise.
5422 (class_key_or_enum): Likewise.
5423 (dump_aggr_type): Likewise.
5424 (dump_type_prefix): Likewise.
5425 (dump_type_suffix): Likewise.
5426 (dump_global_iord): Likewise.
5427 (dump_simple_decl): Likewise.
5428 (dump_decl): Likewise.
5429 (dump_template_decl): Likewise.
5430 (dump_function_decl): Likewise.
5431 (dump_parameters): Likewise.
5432 (dump_exception_spec): Likewise.
5433 (dump_function_name): Likewise.
5434 (dump_template_parms): Likewise.
5435 (dump_char): Likewise.
5436 (dump_expr_list): Likewise.
5437 (dump_expr): Likewise.
5438 (dump_binary_op): Likewise.
5439 (dump_unary_op): Likewise.
5440 (type_as_string): Likewise.
5441 (expr_as_string): Likewise.
5442 (decl_as_string): Likewise.
5443 (context_as_string): Likewise.
5444 (lang_decl_name): Likewise.
5445 (cp_file_of): Likewise.
5446 (cp_line_of): Likewise.
5447 (decl_to_string): Likewise.
5448 (expr_to_string): Likewise.
5449 (fndecl_to_string): Likewise.
5450 (code_to_string): Likewise.
5451 (language_to_string): Likewise.
5452 (parm_to_string): Likewise.
5453 (op_to_string): Likewise.
5454 (type_to_string): Likewise.
5455 (assop_to_string): Likewise.
5456 (args_to_string): Likewise.
5457 (cv_to_string): Likewise.
5458 (cxx_print_error_function): Likewise.
5459 (cp_diagnostic_starter): Likewise.
5460 (cp_diagnostic_finalizer): Likewise.
5461 (cp_print_error_function): Likewise.
5462 (function_category): Likewise.
5463 (print_instantiation_full_context): Likewise.
5464 (print_instantiation_partial_context): Likewise.
5465 (maybe_print_instantiation_context): Likewise.
5466 (print_instantiation_context): Likewise.
5467 (cp_printer): Likewise.
5468 (print_integer): Likewise.
5469 (print_non_consecutive_character): Likewise.
5470 (locate_error): Likewise.
5471
5472 2003-03-06 Mark Mitchell <mark@codesourcery.com>
5473
5474 PR c++/9965
5475 * call.c (reference_binding): Add ref_is_var parameter.
5476 (implicit_conversion): Adjust call to reference_binding.
5477 (initialize_reference): Likewise.
5478
5479 PR c++/9400
5480 * decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL
5481 PARM_DECLs.
5482
5483 PR c++/9791
5484 * class.c (get_basefndecls): Use lookup_fnfields_1.
5485
5486 2003-03-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5487
5488 PR c++/9188
5489 * parser.c (cp_parser_type_parameter): Remove redundant `expect'
5490 in error message.
5491 (cp_parser_single_declaration): Likewise.
5492
5493 2003-03-05 Jason Merrill <jason@redhat.com>
5494
5495 PR c++/9440
5496 * call.c (build_conditional_expr): Use convert rather than an
5497 explicit NOP_EXPR.
5498
5499 2003-03-02 Matt Austern <austern@apple.com>
5500
5501 * decl.c (cp_binding_level): Add static_decls varray member.
5502 (add_decl_to_level): Add static/inline namespace scope
5503 declarations to static_decls array.
5504 (wrapup_global_for_namespace): Pass static_decls only, instead of
5505 all decls, to wrapup_global_declarations/check_global_declarations.
5506 (push_namespace): Initialize static_decls for ordinary namespaces.
5507 (cxx_init_decl_processing): Initialize static_decls for global
5508 namespace.
5509
5510 2003-03-05 Mark Mitchell <mark@codesourcery.com>
5511
5512 * class.c (end_of_class): Correct thinko.
5513
5514 2003-03-04 Nathanael Nerode <neroden@gcc.gnu.org>
5515
5516 * config-lang.in: Replace ${libstdcxx_version} by its value.
5517
5518 2003-03-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
5519
5520 * cp-tree.h (cxx_saved_binding): Declare.
5521 (struct saved_scope): Adjust type of field 'old_binding'.
5522 * decl.c (cxx_saved_binding_make): New macro.
5523 (struct cxx_saved_binding): Define.
5524 (store_bindings): Adjust prototype. Use cxx_saved_binding to save
5525 C++ bindings.
5526 (maybe_push_to_top_level): Adjust local variable type.
5527 (pop_from_top_level): Likewise.
5528
5529 2003-03-04 Tom Tromey <tromey@redhat.com>
5530
5531 * Make-lang.in (c++.tags): New target.
5532
5533 2003-03-04 Neil Booth <neil@daikokuya.co.uk>
5534
5535 * Make-lang.in: Update.
5536
5537 2003-03-03 Jason Merrill <jason@redhat.com>
5538
5539 * decl.c (finish_enum): Do set the type in a template. Simplify.
5540 * pt.c (tsubst_enum, tsubst_copy): Revert last patch.
5541
5542 2003-03-03 Mark Mitchell <mark@codesourcery.com>
5543
5544 PR c++/9878
5545 * call.c (convert_class_to_reference): Correct conversion
5546 sequences.
5547 (reference_binding): Add ref_bound_directly_to_rvalue_p parameter.
5548 (implicit_conversion): Adjust call to reference_binding.
5549 (add_candidate): Change type of candidates parameter.
5550 (add_function_candidate): Likewise.
5551 (add_conv_candidate): Likewise.
5552 (build_builtin_candidate): Likewise.
5553 (add_builtin_candidate): Likewise.
5554 (add_builtin_candidates): Likewise.
5555 (add_template_candidate_real): Likewise.
5556 (add_template_candidate): Likewise.
5557 (add_template_conv_candidate): Likewise.
5558 (build_user_type_conversion_1): Adjust accordingly.
5559 (build_object_call): Likewise.
5560 (build_conditional_expr): Likewise.
5561 (add_candidates): Likewise.
5562 (build_new_op): Likewise.
5563 (convert_like_real): Use USER_CONV_CAND. Use build_nop.
5564 (build_new_method_call): Adjust calls to add_function_candidate.
5565 (make_temporary_var_for_ref_to_temp): New function.
5566 (initialize_reference): Add decl parameter.
5567 * class.c (build_rtti_vtbl_entries): Use build_address and
5568 build_nop.
5569 * cp-tree.h (initialize_reference): Change prototype.
5570 (make_temporary_var_for_ref_to_temp): New function.
5571 (build_type_conversion): Change prototype.
5572 (build_address): New function.
5573 (build_nop): Likewise.
5574 * cvt.c (cp_convert_to_pointer): Adjust call to
5575 build_type_conversion. Avoid indicating redundant NOP_EXPRs.
5576 Use build_nop.
5577 (convert_to_pointer_force): Use build_nop.
5578 (build_up_reference): Use make_temporary_var_for_ref_to_temp.
5579 (convert_to_reference): Adjust call to build_type_conversion.
5580 (ocp_convert): Likewise.
5581 (build_type_conversion): Remove for_sure parameter.
5582 * decl.c (grok_reference_init): Use initialize_reference.
5583 * typeck.c (build_address): New function.
5584 (build_nop): Likewise.
5585 (build_unary_op): Use them.
5586 (build_ptrmemfunc): Tidy slightly.
5587 (convert_for_initialization): Adjust call to
5588 initialize_reference.
5589 * typeck2.c (store_init_value): Remove #if 0'd code.
5590
5591 2003-03-03 Jason Merrill <jason@redhat.com>
5592
5593 * decl.c (start_function): Clear DECL_NUM_STMTS.
5594
5595 * class.c (get_vtable_decl): Use vtbl_type_node.
5596 (build_primary_vtable): Check for it.
5597
5598 2003-03-02 Aldy Hernandez <aldyh@redhat.com>
5599
5600 * decl.c (check_initializer): Check for vector_opaque_p.
5601
5602 2003-03-02 Ashif Harji <asharji@uwaterloo.ca>
5603
5604 * lang-specs.h (default_compilers): Add -no-integrated-cpp flag to
5605 invoke an external cpp during compilation.
5606
5607 2003-03-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
5608
5609 * decl.c (duplicate_decls): Convert use of warning_with_decl() to
5610 that of warning().
5611 (start_decl): Likewise.
5612 (start_function): Likewise.
5613
5614 2003-03-01 Neil Booth <neil@daikokuya.co.uk>
5615
5616 * Make-lang.in (CXX_C_OBJS): Update.
5617
5618 2003-02-28 Mark Mitchell <mark@codesourcery.com>
5619
5620 PR c++/9892
5621 * pt.c (instantiate_decl): Clear DECL_RTL for a VAR_DECL when
5622 instantiating it.
5623
5624 2003-02-28 Aldy Hernandez <aldyh@redhat.com>
5625
5626 * parser.c (cp_parser_init_declarator): Revert opaque
5627 vector_opaque_p change.
5628 Do not include target.h.
5629
5630 2003-02-28 Mark Mitchell <mark@codesourcery.com>
5631
5632 PR c++/9879
5633 * cp-tree.h (build_zero_init): Add parameter.
5634 * decl.c (cp_finish_decl): Adjust call.
5635 * init.c (build_zero_init): Add nelts parameter. Adjust recursive
5636 calls.
5637 (build_default_init): Add nelts parameter. Adjust calls to
5638 build_zero_init.
5639 (build_new_1): Adjust call to build_default_init.
5640 * typeck2.c (process_init_constructor): Adjust call to build_zero_init.
5641
5642 2003-02-26 Devang Patel <dpatel@apple.com>
5643
5644 * decl.c (finish_enum): Merge two 'for' loops. Copy value node if
5645 required. Postpone enum setting for template decls.
5646 (build_enumerator): Delay copying value node until finish_enum
5647 (). Remove #if 0'ed code.
5648 * pt.c (tsubst_enum): Set TREE_TYPE and copy value node.
5649 (tsubst_copy): Add check for enum type.
5650
5651 2003-02-25 Mark Mitchell <mark@codesourcery.com>
5652
5653 PR c++/9683
5654 * decl2.c (prune_vars_needing_no_initialization): Do not throw
5655 away initializations for DECL_EXTERNAL VAR_DECLs.
5656 (finish_file): Adjust accordingly.
5657 * pt.c (instantiate_decl): Do not defer VAR_DECLs.
5658
5659 2003-02-24 Gabriel Dos Reis <gdr@integrable-solutions.net>
5660
5661 * decl.c (add_binding): Time TV_NAME_LOOKUP.
5662 (push_class_binding): Likewise.
5663 (set_namespace_binding): Likewise.
5664
5665 2003-02-24 Mark Mitchell <mark@codesourcery.com>
5666
5667 PR c++/9836
5668 * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): Do not skip from
5669 specializations back to the main template.
5670 * parser.c (cp_parser_diagnose_invalid_type_name):Adjust use.
5671 * pt.c (resolve_typename_type): Likewise.
5672
5673 2003-02-24 Jeffrey D. Oldham <oldham@codesourcery.com>
5674
5675 PR c++/9778
5676 * pt.c (tsubst_copy_and_build): For a templated function inside a
5677 scope, process template arguments.
5678
5679 2003-02-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5680
5681 PR c++/9602
5682 * typeck2.c (abstract_virtuals_error): Don't check when
5683 TYPE is still template parameter dependent.
5684
5685 2003-02-23 Mark Mitchell <mark@codesourcery.com>
5686
5687 PR c++/5333
5688 * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): New macro.
5689 * parser.c (cp_parser_diagnose_invalid_type_name): Use it.
5690 * pt.c (instantiate_class_template): Don't try to instantiate
5691 dependent types.
5692 (resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE.
5693
5694 2003-02-21 Mark Mitchell <mark@codesourcery.com>
5695
5696 PR c++/9749
5697 * decl.c (grokdeclarator): Do not allow parameters with variably
5698 modified types.
5699
5700 2003-02-21 Nathan Sidwell <nathan@codesourcery.com>
5701
5702 * search.c (grow_bfs_bases): Remove. Fold into ...
5703 (bfs_walk): ... here, fix fencepost error. Fix merge lossage
5704 in previous patch.
5705
5706 2003-02-20 Mark Mitchell <mark@codesourcery.com>
5707
5708 PR c++/9729
5709 * mangle.c (mangle_conv_op_name_for_type): Issue an error message
5710 when the G++ 3.2 ABI prevents correct compilation.
5711
5712 2003-02-20 Nathan Sidwell <nathan@codesourcery.com>
5713
5714 Change base class access representation. Share virtual base
5715 binfos.
5716 * cp/call.c (build_special_member_call): Remove binfo_for_vbase
5717 call.
5718 * cp/class.c (build_base_path): Likewise.
5719 (build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
5720 (build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
5721 (make_new_vtable): Adjust.
5722 (force_canonical_binfo_r): Delete.
5723 (force_canonical_binfo): Delete.
5724 (mark_primary_virtual_base): Delete.
5725 (dfs_unshared_virtual_bases): Delete.
5726 (mark_primary_bases): Adjust.
5727 (maybe_warn_about_overly_private_class): Adjust.
5728 (dfs_base_derived_from): Delete.
5729 (base_derived_from): Follow the inheritance chain.
5730 (struct find_final_overrider_data): Add vpath member.
5731 (dfs_find_final_overrider): Adjust.
5732 (dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
5733 (find_final_overrider): Adjust.
5734 (update_vtable_entry_for_fn): Adjust.
5735 (modify_all_vtables): Adjust.
5736 (walk_subobject_offsets): Adjust.
5737 (layout_nonempty_base_or_field): Adjust.
5738 (layout_empty_base): Remove last parameter. Adjust.
5739 (build_base_field): Adjust.
5740 (build_base_fields): Adjust.
5741 (propagate_binfo_offsets): Remove last parameter. Adjust.
5742 (dfs_set_offset_for_unshared_vbases): Delete.
5743 (layout_virtual_bases): Adjust.
5744 (finish_struct_1): Adjust.
5745 (init_class_processing): Don't init access nodes.
5746 (dfs_get_primary_binfo): Delete.
5747 (get_primary_binfo): Adjust.
5748 (dump_class_hierarchy_r): Remove most derived arg, add IGO
5749 parameter. Adjust.
5750 (dump_class_hierarchy): Adjust.
5751 (finish_vtbls): Adjust.
5752 (get_original_base): Delete.
5753 (build_vtt_inits): Adjust.
5754 (dfs_build_secondary_vptr_vtt_inits): Adjust.
5755 (dfs_ctor_vtable_bases_queue_p): Adjust.
5756 (build_ctor_vtbl_group): Adjust.
5757 (dfs_accumulate_vtbl_inits): Adjust.
5758 (build_vtbl_initializer): Adjust.
5759 (build_vbase_offset_vtbl_entries): Adjust.
5760 (add_vcall_offset_vtbl_entries_1): Adjust.
5761 * cp/cp-tree.h (CPTI_ACCESS_*): Remove.
5762 (access_*_node): Remove.
5763 (CANONICAL_BINFO): Delete.
5764 (BINFO_UNSHARED_MARKED): Remove.
5765 (BINFO_MARKED): Set LANG_FLAG_0 directly.
5766 (SET_BINFO_MARKED, CLEAR_BINFO_MARKED): Delete.
5767 (BINFO_VTABLE_PATH_MARKED): Set LANG_FLAG_3 directly.
5768 (SET_BINFO_VTABLE_PATH_MARKED, CLEAR_BINFO_VTABLE_PATH_MARKED):
5769 Delete.
5770 (BINFO_NEW_VTABLE_MARKED): Set LANG_FLAG_4 directly.
5771 (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
5772 (SET_BINFO_PUSHDECLS_MARKED, CLEAR_BINFO_PUSHDECLS_MARKED):
5773 Delete.
5774 (BINFO_DEPENDENT_BASE_P): New.
5775 (dfs_walk, dfs_walk_real): Queue function takes derived binfo and
5776 index.
5777 (markedp, unmarkedp): Adjust.
5778 (dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
5779 dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
5780 find_vbase_instance, binfo_for_vbase): Delete.
5781 (copied_binfo, original_binfo): Declare.
5782 (finish_base_specifier): Add virtual_p arg.
5783 (unshare_base_binfos): Delete.
5784 (copy_base_binfos): Declare.
5785 (reverse_path): Delete.
5786 * cp/decl.c (xref_basetypes): Access and virtuality passed
5787 differently. Don't copy direct base binfos here. Call
5788 copy_base_binfos.
5789 * cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
5790 (initialize_vtbl_ptrs): Adjust.
5791 (expand_member_init): Adjust.
5792 * cp/parser.c (cp_parser_base_specifier): Adjust.
5793 * cp/pt.c (instantiate_class_template): Adjust.
5794 (get_template_base_recursive): Adjust.
5795 * cp/rtti.c (get_pseudo_ti_init): Adjust.
5796 (get_pseudo_ti_desc): Adjust.
5797 * cp/tree.c (unshare_base_binfos): Rename to ...
5798 (copy_base_binfos): ... here, reimplement.
5799 (make_binfo): Set BINFO_DEPENDENT_BASE_P.
5800 (reverse_path): Remove.
5801 * cp/typeck.c (get_delta_difference): Adjust error messages.
5802 * cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
5803 * cp/search.c (lookup_base_r): Adjust.
5804 (dynamic_cast_base_recurse): Adjust.
5805 (canonical_binfo): Remove.
5806 (dfs_canonical_queue): Remove.
5807 (dfs_assert_unmarked_p): Remove.
5808 (assert_canonical_unmarked): Remove.
5809 (shared_marked_p, shared_unmarked_p): Remove.
5810 (BINFO_ACCESS, SET_BINFO_ACCESS): Use TREE_PUBLIC & TREE_PRIVATE.
5811 (dfs_access_in_type): Adjust.
5812 (access_in_type): Adjust.
5813 (dfs_accessible_queue_p): Adjust.
5814 (dfs_accessible_p): Adjust.
5815 (is_subobject_of_p_1, is_subobject_of_p): Remove.
5816 (struct lookup_field_info): Remove from_dep_base_p field.
5817 (lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
5818 (lookup_field_r): Remove dependent base code.
5819 (lookup_member): Likewise.
5820 (dfs_walk, dfs_walk_real): Add access arg to queue fn.
5821 (dfs_unmarked_real_bases_queue_p): Remove.
5822 (dfs_marked_real_bases_queue_p): Remove.
5823 (dfs_skip_vbases): Remove.
5824 (dfs_get_pure_virtuals): Adjust.
5825 (markedp, unmarkedp): Adjust.
5826 (marked_vtable_pathp, unmarked_vtable_pathp): Remove.
5827 (marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
5828 (dfs_unmark): Adjust.
5829 (dfs_get_vbase_types):Remove.
5830 (dfs_build_inheritance_graph_order): Remove.
5831 (get_vbase_types): Remove
5832 (dfs_find_vbase_instance): Remove.
5833 (find_vbase_instance): Remove.
5834 (dfs_debug_unmarkedp): Adjust.
5835 (dependent_base_p): Remove.
5836 (dfs_push_type_decls): Adjust.
5837 (dfs_push_decls): Adjust.
5838 (dfs_no_overlap_yet): Adjust.
5839 (copied_binfo): New function.
5840 (original_binfo): New function.
5841 (binfo_for_vbase): Remove.
5842
5843 2003-02-18 Zack Weinberg <zack@codesourcery.com>
5844
5845 * cp/search.c (grow_bfs_bases): New subroutine of bfs_walk.
5846 (bfs_walk): Rewritten using circular queue of BINFO_BASETYPES
5847 vectors, for speed.
5848
5849 2003-02-18 Mark Mitchell <mark@codesourcery.com>
5850
5851 PR c++/9704
5852 * class.c (layout_class_type): In the 3.2 ABI, take into account
5853 trailing bit fields when computing CLASSTYPE_SIZE_UNIT.
5854
5855 2003-02-18 Matt Austern <austern@apple.com>
5856
5857 * cp/cp-lang.c: Change lang hooks so that final_write_globals does
5858 nothing for C++.
5859 * cp/decl.c (wrapup_globals_for_namespace): Remove special
5860 handling of global namespace.
5861
5862 2003-02-18 Geoffrey Keating <geoffk@apple.com>
5863
5864 * cp-tree.h (rid_to_yy): Delete.
5865 (C_RID_YYCODE): Delete.
5866 (finish_file): Delete redundant declaration.
5867
5868 2003-02-18 Jason Merrill <jason@redhat.com>
5869
5870 PR c++/9623
5871 * decl.c (reshape_init): Don't mess with initializer labels.
5872
5873 PR c++/9485
5874 * parser.c (cp_parser_postfix_expression): Set idk properly for
5875 object->scope::member.
5876
5877 2003-02-18 Ben Elliston <bje@redhat.com>
5878
5879 PR other/7350
5880 * decl.c (duplicate_decls): Fix typo in comment.
5881
5882 2003-02-17 Michael Elizabeth Chastain <mec@shout.net>
5883
5884 PR debug/9717
5885 * class.c (build_base_field): Mark fields for base classes with
5886 DECL_IGNORED_P.
5887
5888 2003-02-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5889
5890 PR c++/9457
5891 * pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute
5892 CONSTRUCTOR_ELTS only once.
5893
5894 2003-02-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5895
5896 PR c++/9459
5897 * error.c (dump_type_prefix): Handle TYPEOF_TYPE.
5898 (dump_type_suffix): Likewise.
5899
5900 2003-02-14 Nathan Sidwell <nathan@codesourcery.com>
5901
5902 * search.c: ANSIfy function declarations and definitions.
5903 * cp-tree.h (lookup_field, lookup_member): Last parameter is a bool.
5904 * call.c (build_method_call, resolve_scoped_fn_name,
5905 build_java_interface_fn_ref): Adjust lookup_field, lookup_member
5906 calls.
5907 * class.c (handle_using_decl): Likewise.
5908 * decl.c (make_typename_type, make_unmound_class_template,
5909 start_decl, compute_array_index_type): Likewise.
5910 * decl2.c (build_expr_from_tree, build_call_from_tree): Likewise.
5911 * init.c (expand_member_init, build_member_call): Likewise.
5912 * pt.c (tsubst_copy, tsubst_copy_and_build, do_decl_instantiation,
5913 resolve_typename_type): Likewise.
5914 * typeck.c (lookup_destructor, finish_class_member_access_exprm
5915 build_prememfunc_access_expr): Likewise.
5916
5917 2003-02-13 Gabriel Dos Reis <gdr@integrable-solutions.net>
5918
5919 * decl2.c: Include "timevar.h".
5920 (namespace_ancestor): Time name lookup.
5921 (add_using_namespace): Likewise.
5922 (lookup_using_namespace): Likewise.
5923 (qualified_lookup_using_namespace): Likewise.
5924 (decl_namespace): Likewise.
5925 (lookup_arg_dependent): Likewise.
5926 * lex.c (do_identifier): Likewise.
5927 (do_scoped_id): Likewise.
5928 * pt.c (lookup_template_class): Likewise.
5929
5930 2003-02-14 Andrew Pinski <pinskia@physics.uc.edu>
5931
5932 * decl.c: (define_label): Fix warning for return 0 instead of NULL.
5933
5934 2003-02-13 Gabriel Dos Reis <gdr@integrable-solutions.net>
5935
5936 * decl.c: Include "timevar.h".
5937 (poplevel): Time name lookup.
5938 (find_binding): Likewise.
5939 (push_namespace): Likewise.
5940 (pop_nested_namespace): Likewise.
5941 (store_bindings): Likewise.
5942 (maybe_push_to_top_level): Likewise.
5943 (pop_from_top_level): Likewise.
5944 (push_local_name): Likewise.
5945 (pushtag): Likewise.
5946 (pushdecl): Likewise.
5947 (pushdecl_with_scope): Likewise.
5948 (pushdecl_namespace_level): Likewise.
5949 (pushdecl_top_level): Likewise.
5950 (pushdecl_class_level): Likewise.
5951 (push_class_level_binding): Likewise.
5952 (push_using_decl): Likewise.
5953 (push_using_directive): Likewise.
5954 (push_overloaded_decl): Likewise.
5955 (lookup_label): Likewise.
5956 (define_label): Likewise.
5957 (lookup_tag): Likewise.
5958 (lookup_tag_reverse): Likewise.
5959 (lookup_namespace_name): Likewise.
5960 (select_decl): Likewise.
5961 (unqualified_namespace_lookup): Likewise.
5962 (lookup_name_real): Likewise.
5963 (lookup_name_current_level): Likewise.
5964 (lookup_type_current_level): Likewise.
5965 (maybe_inject_for_scope_var): Likewise.
5966 (xref_tag): Likewise.
5967
5968 * Make-lang.in (cp/decl.o): Add dependency on timevar.h
5969
5970 2003-02-12 Phil Edwards <pme@gcc.gnu.org>
5971
5972 * decl.c (build_enumerator): Remove unneeded test.
5973
5974 2003-02-09 Dan Nicolaescu <dann@ics.uci.edu>
5975
5976 * cp-tree.h (struct lang_type_header): Make all fields unsigned
5977 char.
5978
5979 2003-02-03 Mark Mitchell <mark@codesourcery.com>
5980
5981 PR c++/7129
5982 * call.c (z_candidate): Add args.
5983 (convert_class_to_reference): Set it.
5984 (implicit_conversion): Tidy.
5985 (add_candidate): Add args parameter.
5986 (add_function_candidate): Adjust call to add_candidate.
5987 (add_conv_candidate): Likewise.
5988 (build_builtin_candidate): Likewise.
5989 (build_user_type_conversion_1): Eliminate wasteful tree_cons
5990 usage.
5991 (build_new_function_call): Likewise.
5992 (build_object_call): Likewise.
5993 (add_candidates): New function.
5994 (build_new_op): Use it.
5995 (covert_like_real): Adjust call to build_over_call.
5996 (build_over_call): Remove args parameter.
5997 * operators.def: Add <?= and >?=.
5998
5999 2003-02-01 Richard Sandiford <rsandifo@redhat.com>
6000
6001 * typeck.c (build_indirect_ref): Don't check flag_volatile.
6002
6003 2003-01-31 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6004
6005 PR c++/8849
6006 * pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL.
6007
6008 2003-01-31 Nathan Sidwell <nathan@codesourcery.com>
6009
6010 * cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX,
6011 BINFO_PRIMARY_BASE_OF): Use BINFO_ELTS.
6012 (BINFO_LANG_ELTS): New #define.
6013 * tree.c (make_binfo): Use BINFO_LANG_ELTS.
6014
6015 2003-01-30 Geoffrey Keating <geoffk@apple.com>
6016
6017 * cp/Make-lang.in: Remove -Wno-error from cp/decl.o.
6018
6019 2003-01-30 Mark Mitchell <mark@codesourcery.com>
6020
6021 * class.c (check_field_decls): Only check C_TYPE_FIELDS_READONLY
6022 for class types.
6023 * cp-tree.h (C_TYPE_FIELDS_READONLY): Use a lang-specific bit
6024 rather than TYPE_LANG_FLAG_0.
6025 (TYPE_BUILT_IN): Remove.
6026 (TYPE_DEPENDENT_P): New macro.
6027 (TYPE_DEPENDENT_P_VALID): Likewise.
6028 (lang_type_class): Add fields_readonly.
6029 * decl.c (record_builtin_type): Don't set TYPE_BUILT_IN.
6030 * pt.c (dependent_type_p_r): New function, split out from ...
6031 (dependent_type_p): ... here. Memoize results.
6032 * search.c (dependent_base_p): Use dependent_type_p, not
6033 uses_template_parms.
6034 * typeck.c (build_modify_expr): Only check C_TYPE_FIELDS_READONLY
6035 for class types.
6036
6037 2003-01-29 Mark Mitchell <mark@codesourcery.com>
6038
6039 * call.c (build_field_call): Use build_new_op, not build_opfncall.
6040 (prep_operand): New function.
6041 (build_new_op): Use it. Remove dead code.
6042 * class.c (pushclass): Change "modify" parameter type from int to
6043 bool.
6044 (currently_open_class): Use same_type_p, not pointer equality.
6045 (push_nested_class): Adjust calls to pushclass, remove modify
6046 parameter.
6047 * cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro.
6048 (pushclass): Change prototype.
6049 (push_nested_class): Likewise.
6050 (grokoptypename): Remove.
6051 (build_opfncall): Remove.
6052 (value_dependent_expression_p): Declare.
6053 (resolve_typename_type): Likewise.
6054 (resolve_typename_type_in_current_instantiation): Likewise.
6055 (enter_scope_of): Remove.
6056 (tsubst): Remove.
6057 (tsubst_expr): Likewise.
6058 (tsubst_copy): Likewise.
6059 (tsubst_copy_and_build): Likewise.
6060 * decl.c (warn_about_implicit_typename_lookup): Remove.
6061 (finish_case_label): Return error_mark_node for erroneous labels.
6062 (start_decl): Adjust calls to push_nested_class.
6063 (grokfndecl): Call push_scope/pop_scope around call to
6064 duplicate_decls.
6065 (grokdeclarator): Do not call tsubst.
6066 (start_function): Adjust calls to push_nested_class.
6067 * decl2.c (grok_array_decl): Use build_new_op, not build_opfncall.
6068 (check_classfn): Use push_scope/pop_scope around type comparisions.
6069 (grokoptypename): Remove.
6070 (push_sscope): Adjust call to push_nested_class.
6071 * error.c (dump_type): Show cv-qualification of typename types.
6072 * init.c (build_member_call): Use build_new_op, not
6073 build_opfncall.
6074 * method.c (build_opfncall): Remove.
6075 * parser.c (cp_parser): Add allow_non_constant_expression_p and
6076 non_constant_expression_p.
6077 (cp_parser_constant_expression): Adjust prototype.
6078 (cp_parser_resolve_typename_type): Remove.
6079 (cp_parser_non_constant_expression): New function.
6080 (cp_parser_non_constant_id_expression): Likewise.
6081 (cp_parser_new): Set allow_non_constant_expression_p and
6082 non_constant_expression_p.
6083 (cp_parser_primary_expression): Reject `this' and `va_arg' in
6084 constant-expressions. Note that dependent names aren't really
6085 constant.
6086 (cp_parser_postfix_expression): Reject conversions to non-integral
6087 types in constant-expressions. Neither are increments or
6088 decrements.
6089 (cp_parser_unary_expression): Reject increments and decrements in
6090 constant-expressions.
6091 (cp_parser_direct_new_declarator): Adjust call to
6092 cp_parser_constant_expression.
6093 (cp_parser_cast_expression): Reject conversions to non-integral
6094 types in constant-expressions.
6095 (cp_parser_assignment_expression): Rejects assignments in
6096 constant-expressions.
6097 (cp_parser_expression): Reject commas in constant-expressions.
6098 (cp_parser_labeled_statement): Adjust call to
6099 cp_parser_constant_expression.
6100 (cp_parser_direct_declarator): Simplify array bounds, even in
6101 templates, when they are non-dependent. Use
6102 resolve_typename_type, not cp_parser_resolve_typename_type.
6103 (cp_parser_class_head): Use resolve_typename_type, not
6104 cp_parser_resolve_typename_type.
6105 (cp_parser_member_declaration): Adjust call to
6106 cp_parser_constant_expression.
6107 (cp_parser_constant_initializer): Likewise.
6108 (cp_parser_constructor_declarator): Use resolve_typename_type, not
6109 cp_parser_resolve_typename_type.
6110 (cp_parser_late_parsing_default_args): Adjust call to
6111 push_nested_class.
6112 * pt.c (tsubst): Give it internal linkage.
6113 (tsubst_expr): Likewise.
6114 (tsubst_copy): Likewise.
6115 (tsubst_copy_and_build): Likewise.
6116 (push_access_scope_real): Likewise.
6117 (tsubst_friend_class): Likewise.
6118 (instantiate_class_template): Adjust call to pushclass.
6119 (value_dependent_expression_p): Give it external linkage.
6120 Robustify.
6121 (resolve_typename_type): New function.
6122 * semantics.c (finish_call_expr): Use build_new_op, not
6123 build_opfncall.
6124 (begin_constructor_declarator): Remove.
6125 (begin_class_definition): Adjust call to pushclass.
6126 (enter_scope_of): Remove.
6127 * typeck.c (comptypes): Resolve typename types as appropriate.
6128 (build_x_indirect_ref): Use build_new_op, not build_opfncall.
6129 (build_x_compound_expr): Likewise.
6130 (build_modify_expr): Likewise.
6131 (build_x_modify_expr): Likewise.
6132 * typeck2.c (build_x_arrow): Likewise.
6133
6134 2003-01-29 Fariborz Jahanian <fjahanian@apple.com>
6135
6136 * pt.c (last_pending_template) Declare GTY().
6137
6138 2003-01-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6139
6140 PR c++/8591
6141 * parser.c (cp_parser_elaborated_type_specifier): Convert
6142 TEMPLATE_DECL to TYPE_DECL only when processing template friends.
6143 (cp_parser_maybe_treat_template_as_class): Remove redundant tests.
6144
6145 2003-01-28 Nathan Sidwell <nathan@codesourcery.com>
6146
6147 PR c++/9437
6148 * pt.c (unify): Don't unify '*T' with 'U C::*'.
6149
6150 PR c++/3902
6151 * parser.c (cp_parser_decl_specifier_seq): Cannot have constructor
6152 inside a declarator.
6153
6154 2003-01-27 Nathan Sidwell <nathan@codesourcery.com>
6155
6156 * class.c (update_vtable_entry_for_fn): Add index parameter.
6157 Generate vcall thunk for covariant overriding from a virtual
6158 primary base.
6159 (dfs_modify_vtables): Adjust.
6160
6161 2003-01-25 Nathan Sidwell <nathan@codesourcery.com>
6162
6163 PR c++/9403
6164 * parser.c (cp_parser_class_or_namespace_name): Reject duplicate
6165 template keyword.
6166 (cp_parser_base_specifier): Look for and consume a
6167 TEMPLATE keyword. Replace switch with array index.
6168
6169 PR c++/795
6170 * semantics.c (finish_non_static_data_member): Remember the
6171 field's type even in a template.
6172
6173 PR c++/9415
6174 * pt.c (tsubst_copy_and_build, CALL_EXPR): BASELINK exprs are
6175 already scoped.
6176
6177 PR c++/8545
6178 * parser.c (cp_parser_cast_expression): Be more tentative.
6179
6180 2003-01-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6181
6182 * cp-tree.h (flagged_type_tree_s): Remove.
6183 (check_for_new_type): Likewise.
6184 * typeck2.c (check_for_new_type): Likewise.
6185
6186 2003-01-23 Nathanael Nerode <neroden@gcc.gnu.org>
6187
6188 * dump.c: ANSIfy function declarations and definitions.
6189
6190 * cp-tree.h, decl.h: Get rid of PARAMS. Again.
6191
6192 2003-01-22 Mark Mitchell <mark@codesourcery.com>
6193
6194 PR c++/9354
6195 * init.c (build_new): Set the type of the new-expression, even
6196 when processing_templte_decl.
6197
6198 PR c++/9216
6199 * parser.c (cp_parser_primary_expression): Improve error message
6200 for templates used in an expression context.
6201
6202 PR c++/8696
6203 * parser.c (cp_parser_decl_specifier_seq): Commit to tentative
6204 parse when encountering "typedef".
6205
6206 2003-01-22 Nathanael Nerode <neroden@gcc.gnu.org>
6207
6208 * class.c, parser.c: ANSIfy function definitions and declarations.
6209
6210 2003-01-22 Mark Mitchell <mark@codesourcery.com>
6211
6212 PR c++/9328
6213 * error.c (dump_decl): For an OVERLOAD, just print the name of the
6214 function; it doesn't make sense to try to print its type.
6215 * semantics.c (finish_typeof): Issue errors about invalid uses.
6216
6217 PR c++/9298
6218 * parser.c (cp_parser_consume_semicolon_at_end_of_statement): New
6219 function.
6220 (cp_parser_expression_statement): Use it.
6221 (cp_parser_explicit_instantiation): Likewise.
6222 * pt.c (do_decl_instantiation): Improve error handling logic.
6223
6224 2003-01-22 Mark Mitchell <mark@codesourcery.com>
6225
6226 PR c++/9384
6227 * parser.c (cp_parser_using_declaration): Issue error messages
6228 about name resolution failures here.
6229
6230 PR c++/9388
6231 * class.c (currently_open_derived_class): Use dependent_type_p.
6232 * cp-tree.h (dependent_type_p): New function.
6233 (dependent_template_arg_p): Likewise.
6234 (dependent_template_p): Likewise.
6235 (type_dependent_expression_p): Likewise.
6236 * parser.c (cp_parser_dependent_type_p): Remove.
6237 (cp_parser_value_dependent_type_p): Likewise.
6238 (cp_parser_type_dependent_expression_p): Likewise.
6239 (cp_parser_dependent_template_arg_p): Likewise.
6240 (cp_parser_dependent_template_id_p): Likewise.
6241 (cp_parser_dependent_template_p): Likewise.
6242 (cp_parser_diagnose_invalid_type_name): Replace
6243 cp_parser_dependent_type_p with dependent_type_p, etc.
6244 (cp_parser_primary_expresion): Likewise.
6245 (cp_parser_nested_name_specifier_opt): Likewise.
6246 (cp_parser_postfix_expression): Likewise.
6247 (cp_parser_unary_expression): Likewise.
6248 (cp_parser_template_name): Likewise.
6249 (cp_parser_class_name): Likewise.
6250 (cp_parser_lookup_name): Likewise.
6251 * pt.c (dependent_type_p): New function.
6252 (value_dependent_expression_p): Likewise.
6253 (type_dependent_expression_p): Likewise.
6254 (dependent_template_arg_p): Likewise.
6255 (dependent_template_id_p): Likewise.
6256 (dependent_template_p): Likewise.
6257
6258 PR c++/9285
6259 PR c++/9294
6260 * parser.c (cp_parser_simple_declaration): Return quickly when
6261 encountering errors.
6262
6263 2003-01-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6264
6265 Make-lang.in (cp/decl.o-warn): Add -Wno-error.
6266
6267 2003-01-17 Jason Merrill <jason@redhat.com>
6268
6269 PR c++/9167, c++/9358
6270 * decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE.
6271
6272 2003-01-17 Jason Merrill <jason@redhat.com>
6273
6274 PR c++/9342
6275 * call.c (build_conditional_expr): Always do lvalue-rvalue
6276 conversion.
6277
6278 2003-01-17 Mark Mitchell <mark@codesourcery.com>
6279
6280 PR c++/9294
6281 * cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
6282 * cp-tree.h (BASELINK_BINFO): Adjust.
6283 (BASELINK_FUNCTIONS): Likewise.
6284 (BASELINK_ACCESS_BINFO): Likewise.
6285 (tree_baselink): New structure.
6286 (cp_tree_node_structure_enum): Add TS_CP_BASELINK.
6287 (lang_tree_node): Add baselink.
6288 * decl.c (cp_tree_node_structure): Add BASELINK case.
6289 * search.c (build_baselink): Adjust.
6290 * tree.c (cp_walk_subtrees): Add BASELINK case. Remove BASELINK_P
6291 test from TREE_LIST case.
6292
6293 PR c++/9272
6294 * parser.c (cp_parser_constructor_declarator_p): Do not assume
6295 that a constructor cannot be declared outside of its own class.
6296
6297 * parser.c (cp_parser_resolve_typename_type): If the scope cannot
6298 be resolved, neither can the qualified name.
6299
6300 * rtti.c (get_pseudo_ti_desc): Fix thinko.
6301
6302 2003-01-16 Jason Merrill <jason@redhat.com>
6303
6304 PR c++/8564
6305 * init.c (build_vec_init): Re-add maxindex parm.
6306 (perform_member_init, build_aggr_init): Pass it.
6307 (build_new_1): Pass it. Use an incomplete array type for full_type.
6308 * typeck.c (build_modify_expr): Pass it.
6309 * cp-tree.h: Adjust.
6310
6311 2003-01-16 Jeffrey D. Oldham <oldham@codesourcery.com>
6312
6313 * cp-tree.h (tsubst_copy_and_build): New declaration.
6314 * pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment.
6315 (tsubst_expr): Use 'tsubst_copy_and_build'. Update initial comment.
6316 (tsubst_copy_and_build): New function.
6317
6318 2003-01-16 Mark Mitchell <mark@codesourcery.com>
6319
6320 * cp-tree.h (lang_type_class): Remove is_partial_instantiation.
6321 (PARTIAL_INSTANTIATION_P): Remove.
6322 (IMPLICIT_TYPENAME_P): Likewise.
6323 (IMPLICIT_TYPENAME_TYPE_DECL_P): Likewise.
6324 (build_typename_type): Remove declaration.
6325 (parmlist_is_exprlist): Likewise.
6326 * decl.c (build_typename_type): Make it static, remove third
6327 parameter.
6328 (push_class_binding): Don't do implicit typename stuff.
6329 (make_typename_type): Likewise.
6330 (lookup_name_real): Likewise.
6331 (grokdeclarator): Don't try to convert declarations into
6332 initializations. Don't do implicit typename stuff.
6333 (parmlist_is_exprlist): Remove.
6334 (xref_basetypes): Simplify.
6335 * decl2.c (grokfield): Don't try to convert declarations into
6336 initializations.
6337 (build_anon_union_vars): Do this while processing templates, too.
6338 (finish_anon_union): Likewise.
6339 * error.c (dump_type): Remove implicit typename handling.
6340 * parser.c (cp_parser_diagnose_invalid_type_name): New method.
6341 (cp_parser_primary_expression): Correct handling of names not
6342 found by unqualified name lookup in templates.
6343 (cp_parser_nested_name_specifier_opt): Avoid checking dependency
6344 of types when possible.
6345 (cp_parser_simple_declaration): Complain intelligently about some
6346 invalid declarations.
6347 (cp_parser_member_declaration): Likewise.
6348 (cp_parser_constructor_declarator_p): Don't check when we're in a
6349 function scope.
6350 * pt.c (instantiate_class_template): Remove
6351 PARTIAL_INSTANTIATION_P gunk.
6352 * search.c (lookup_field_r): Don't build implicit typenames.
6353 (marked_pushdecls_p): Don't enter dependent base types.
6354 (unmarked_pushdecls_p): Likewise.
6355 * semantics.c (begin_class_definition): Remove implicit typename
6356 stuff.
6357
6358 2003-01-16 Nathan Sidwell <nathan@codesourcery.com>
6359
6360 PR c++/9212
6361 * parser.c (cp_parser_direct_declarator): If accepting either
6362 abstract or named, the name must be an unqualified-id.
6363
6364 2003-01-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6365
6366 * class.c (layout_virtual_bases): Avoid signed/unsigned warning.
6367
6368 2003-01-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6369
6370 * decl2.c (check_classfn): Fix uninitialized warning.
6371 (build_anon_union_vars): Likewise.
6372 * pt.c (tsubst_copy): Likewise.
6373
6374 2003-01-14 Jeffrey D. Oldham <oldham@codesourcery.com>
6375
6376 Further conform g++'s __vmi_class_type_info to the C++ ABI
6377 specification.
6378 * rtti.c (dfs_class_hint_mark): Do not set hints not specified by
6379 the specification.
6380 (class_hint_flags): Likewise.
6381
6382 2003-01-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6383
6384 * config-lang.in: Add semantics.c to gtfiles.
6385 * cp-tree.h (flagged_type_tree_s): Remove lookups field.
6386 (saved_scope): Likewise.
6387 (type_lookups): Remove.
6388 (deferred_access): New structure.
6389 (type_access_control): Remove.
6390 (save_type_access_control): Likewise.
6391 (reset_type_access_control): Likewise.
6392 (decl_type_access_control): Likewise.
6393 (push_deferring_access_checks): Declare.
6394 (resume_deferring_access_checks): Likewise.
6395 (stop_deferring_access_checks): Likewise.
6396 (pop_deferring_access_checks): Likewise.
6397 (get_deferred_access_checks): Likewise.
6398 (pop_to_parent_deferring_access_checks): Likewise.
6399 (perform_deferred_access_checks): Likewise.
6400 (perform_or_defer_access_check): Likewise.
6401 * decl.c (make_typename_type): Use perform_or_defer_access_check.
6402 (make_unbound_class_template): Likewise.
6403 (grokdeclarator): Don't call decl_type_access_control.
6404 * parser.c (cp_parser_context): Remove deferred_access_checks
6405 and deferring_access_checks_p fields.
6406 (cp_parser_context_new): Adjust.
6407 (cp_parser): Remove access_checks_lists.
6408 (cp_parser_defer_access_check): Remove.
6409 (cp_parser_start_deferring_access_checks): Remove.
6410 (cp_parser_stop_deferring_access_checks): Remove.
6411 (cp_parser_perform_deferred_access_checks): Remove.
6412 (cp_parser_nested_name_specifier_opt): Use new deferred access
6413 functions.
6414 (cp_parser_simple_declaration): Likewise.
6415 (cp_parser_template_id): Likewise.
6416 (cp_parser_function_definition): Likewise.
6417 (cp_parser_class_specifier): Likewise.
6418 (cp_parser_lookup_name): Likewise.
6419 (cp_parser_single_declaration): Likewise.
6420 (cp_parser_pre_parsed_nested_name_specifier): Likewise.
6421 (cp_parser_parse_tentatively): Likewise.
6422 (cp_parser_parse_definitely): Likewise.
6423 (yyparse): Likewise.
6424 (cp_parser_init_declarator): Remove access_checks parameter.
6425 Use new deferred access functions.
6426 (cp_parser_function_definition_from_specifiers_and_declarator):
6427 Likewise.
6428 (cp_parser_class_head): Remove deferring_access_checks_p and
6429 saved_access_checks parameters. Use new deferred access functions.
6430 (cp_parser_member_specification_opt): Don't call
6431 reset_type_access_control.
6432 * search.c (type_access_control): Remove.
6433 * semantics.c: Include "gt-cp-semantics.h".
6434 (deferred_type_access_control): Remove.
6435 (deferred_access_stack): New variable.
6436 (deferred_access_free_list): Likewise.
6437 (push_deferring_access_checks): New function.
6438 (resume_deferring_access_checks): Likewise.
6439 (stop_deferring_access_checks): Likewise.
6440 (pop_deferring_access_checks): Likewise.
6441 (get_deferred_access_checks): Likewise.
6442 (pop_to_parent_deferring_access_checks): Likewise.
6443 (perform_deferred_access_checks): New function, adapted from
6444 cp_parser_perform_deferred_access_checks.
6445 (perform_or_defer_access_check): New function, adapted from
6446 cp_parser_defer_access_check.
6447 (current_type_lookups): Remove.
6448 (deferred_type_access_control): Likewise.
6449 (decl_type_access_control): Likewise.
6450 (save_type_access_control): Likewise.
6451 (reset_type_access_control): Likewise.
6452 (begin_function_definition): Adjust.
6453 (begin_class_definiton): Likewise.
6454
6455 2003-01-13 Jason Merrill <jason@redhat.com>
6456
6457 PR c++/8748
6458 * class.c (build_base_path): Take the address before calling save_expr.
6459
6460 * call.c (build_user_type_conversion_1): Do set ICS_BAD_FLAG if
6461 all the ambiguous conversions are bad.
6462
6463 * class.c (maybe_warn_about_overly_private_class): Don't stop
6464 searching when we find a nonprivate method.
6465
6466 * typeck.c (build_class_member_access_expr): Use unary_complex_lvalue.
6467
6468 2003-01-12 Mark Mitchell <mark@codesourcery.com>
6469
6470 * cp-tree.h (get_arglist_len_in_bytes): Remove.
6471
6472 PR c++/9264
6473 * parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
6474 typeame types more robustly.
6475
6476 2003-01-11 Phil Edwards <pme@gcc.gnu.org>
6477
6478 * parser.c: Fix comment typos.
6479
6480 2003-01-10 Mark Mitchell <mark@codesourcery.com>
6481
6482 PR c++/9099
6483 * parser.c (cp_parser_scope_through_which_access_occurs): Handle
6484 an object_type which is not a class type.
6485
6486 2003-01-10 Geoffrey Keating <geoffk@apple.com>
6487
6488 * parser.c (cp_parser_late_parsing_for_member): Don't cast to void.
6489 (cp_parser_late_parsing_default_args): Likewise.
6490
6491 2003-01-10 Nathanael Nerode <neroden@gcc.gnu.org>
6492
6493 * cfns.gperf: ANSIfy function declarations.
6494 * cfns.h: Regenerate.
6495 * cp-tree.h: ANSIfy function declarations.
6496
6497 2003-01-10 Mark Mitchell <mark@codesourcery.com>
6498
6499 * cp-tree.h (reparse_absdcl_as_expr): Remove.
6500 (reparse_absdcl_as_casts): Likewise.
6501 (reparse_decl_as_expr): Likewise.
6502 (finish_decl_parsing): Likewise.
6503 * decl2.c (reparse_absdcl_as_expr): Remove.
6504 (reparse_absdcl_as_casts): Likewise.
6505 (repase_decl_as_expr): Likewise.
6506 (finish_decl_parsing): Likewise.
6507
6508 PR c++/9128
6509 PR c++/9153
6510 PR c++/9171
6511 * parser.c (cp_parser_pre_parsed_nested_name_specifier): New
6512 function.
6513 (cp_parser_nested_name_specifier_opt): Correct the
6514 check_dependency_p false.
6515 (cp_parser_postfix_expression): Fix formatting.
6516 (cp_parser_decl_specifier_seq): Avoid looking for constructor
6517 declarators when possible.
6518 (cp_parser_template_id): Avoid performing name-lookup when
6519 possible.
6520 (cp_parser_class_head): Do not count specializations when counting
6521 levels of templates.
6522 (cp_parser_constructor_declarator_p): Return immediately if
6523 there's no chance that the tokens form a constructor declarator.
6524 * rtti.c (throw_bad_typeid): Add comment. Do not return an
6525 expression with reference type.
6526 (get_tinfo_decl_dynamic): Do not return an expression with
6527 reference type.
6528 (build_typeid): Add comment. Do not return an expression with
6529 reference type.
6530 * typeck.c (build_class_member_access_expr): Improve handling of
6531 conditionals and comma-expressions as objects.
6532
6533 2003-01-09 Nathanael Nerode <neroden@gcc.gnu.org>
6534
6535 * cfns.gperf: ANSIfy function declarations.
6536 * cfns.h: Regenerate.
6537 * cp-tree.h: ANSIfy function declarations.
6538 * parser.c: ANSIfy function declarations & definitions.
6539
6540 * decl.c (bad_specifiers): Fix parameter order error I introduced.
6541
6542 2003-01-09 Geoffrey Keating <geoffk@apple.com>
6543
6544 Merge from pch-branch:
6545
6546 2003-01-09 Geoffrey Keating <geoffk@apple.com>
6547
6548 Merge to tag pch-merge-20030102:
6549
6550 * semantics.c (finish_translation_unit): Don't call finish_file.
6551 * parser.c: Don't include ggc.h.
6552 (cp_lexer_new_main): Rename from cp_lexer_new, only create main lexer,
6553 read first token here. Don't allow PCH files after the first
6554 token is read.
6555 (cp_lexer_new_from_tokens): Duplicate functionality from cp_lexer_new.
6556 (cp_lexer_get_preprocessor_token): Allow LEXER to be NULL.
6557 (cp_parser_new): Call cp_lexer_new_main before allocating GCed memory.
6558 (cp_parser_late_parsing_for_member): Don't duplicate call to
6559 cp_lexer_set_source_position_from_token.
6560 (cp_parser_late_parsing_default_args): Likewise.
6561 (yyparse): Call finish_file after clearing the_parser.
6562
6563 2002-12-11 Geoffrey Keating <geoffk@apple.com>
6564
6565 * Make-lang.in: Remove $(GGC_H) from all dependencies.
6566 (CXX_TREE_H): Add $(GGC_H).
6567 * class.c: Don't include ggc.h.
6568 (field_decl_cmp): Make parameters be 'const void *' to match qsort.
6569 (method_name_cmp): Likewise.
6570 (resort_data): New variable.
6571 (resort_field_decl_cmp): New.
6572 (resort_method_name_cmp): New.
6573 (resort_sorted_fields): New.
6574 (resort_type_method_vec): New.
6575 (finish_struct_methods): Delete cast.
6576 (finish_struct_1): Delete cast.
6577 * cp-tree.h: Include ggc.h.
6578 (struct lang_type_class): Add reorder attribute to field `methods'.
6579 (union lang_decl_u3): Add reorder attribute to field `sorted_fields'.
6580 (resort_sorted_fields): New prototype.
6581 (resort_type_method_vec): New prototype.
6582 * call.c: Don't include ggc.h.
6583 * decl.c: Likewise.
6584 * decl2.c: Likewise.
6585 * init.c: Likewise.
6586 * lex.c: Likewise.
6587 * method.c: Likewise.
6588 * optimize.c: Likewise.
6589 * parse.y: Likewise.
6590 * pt.c: Likewise.
6591 * repo.c: Likewise.
6592 * search.c: Likewise.
6593 * semantics.c: Likewise.
6594 * spew.c: Likewise.
6595 * tree.c: Likewise.
6596
6597 * lang-specs.h: Remove comment.
6598
6599 2002-12-03 Geoffrey Keating <geoffk@apple.com>
6600
6601 * cp-tree.h (struct operator_name_info_t): Mark for GTY machinery.
6602 (operator_name_info): Mark to be saved for PCH, specify size.
6603 (assignment_operator_name_info): Likewise.
6604
6605 2002-11-19 Geoffrey Keating <geoffk@apple.com>
6606
6607 * decl.c (anon_cnt): Mark to be saved for PCH.
6608
6609 2002-10-25 Geoffrey Keating <geoffk@apple.com>
6610
6611 * lex.c (init_reswords): Delete now-untrue comment.
6612 Allocate ridpointers using GGC.
6613
6614 2002-10-04 Geoffrey Keating <geoffk@apple.com>
6615
6616 * cp-tree.h (union lang_decl_u2): Add tags to all fields.
6617
6618 * g++spec.c (lang_specific_driver): Don't include standard
6619 libraries in `added'.
6620
6621 2002-08-27 Geoffrey Keating <geoffk@redhat.com>
6622
6623 * decl2.c (finish_file): Call c_common_write_pch.
6624 * Make-lang.in (CXX_C_OBJS): Add c-pch.o.
6625
6626 2002-08-17 Geoffrey Keating <geoffk@redhat.com>
6627
6628 * g++spec.c (lang_specific_driver): Treat .h files as C++ header
6629 files when using g++.
6630 * lang-specs.h: Handle compiling C++ header files.
6631
6632 2003-01-09 Jakub Jelinek <jakub@redhat.com>
6633
6634 * decl.c (start_decl): Only check DECL_THREAD_LOCAL for VAR_DECLs.
6635
6636 2003-01-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6637
6638 * pt.c (push_access_scope_real): Call push_to_top_level for
6639 function in namespace scope.
6640 (pop_access_scope): Call pop_from_top_level for function in
6641 namespace scope.
6642
6643 2003-01-09 Jakub Jelinek <jakub@redhat.com>
6644
6645 * decl.c (start_decl): Don't set DECL_COMMON for __thread variables.
6646
6647 2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
6648
6649 * Make-lang.in (c++.install-common, c++.install-man,
6650 c++.uninstall): Prepend $(DESTDIR) to destination paths in
6651 all (un)installation commands.
6652 (c++.install-common): Rewrite $(LN) commands to support
6653 DESTDIR with "ln" as well as with "ln -s".
6654
6655 2003-01-08 Jason Merrill <jason@redhat.com>
6656
6657 * parser.c (cp_parser_primary_expression): See through explicitly
6658 scoped ALIAS_DECLs, too.
6659
6660 2003-01-08 Nathanael Nerode <neroden@gcc.gnu.org>
6661
6662 * decl.c: Remove some #if 0 code.
6663
6664 * decl.c: ANSIfy function declarations.
6665
6666 2003-01-07 Mark Mitchell <mark@codesourcery.com>
6667
6668 * parser.c (cp_parser_asm_definition): Correct handling of omitted
6669 operands.
6670
6671 2003-01-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6672
6673 PR c++/9030
6674 * decl.c (make_typename_type): Check access only when tf_error.
6675 (make_unbound_class_template): Likewise.
6676 * pt.c (saved_access_scope): New variable.
6677 (push_access_scope_real): New function.
6678 (push_access_scope): Likewise.
6679 (pop_access_scope): Likewise.
6680 (tsubst_default_argument): Use them.
6681 (instantiate_template): Likewise.
6682 (regenerate_decl_from_template): Likewise.
6683 (instantiate_decl): Likewise.
6684 (get_mostly_instantiated_function_type): Likewise.
6685
6686 2003-01-07 Nathanael Nerode <neroden@gcc.gnu.org>
6687
6688 * tree.c: Delete bogus #if 0 code.
6689
6690 2003-01-07 Andreas Schwab <schwab@suse.de>
6691
6692 * class.c (layout_class_type): Don't use
6693 PCC_BITFIELD_TYPE_MATTERS if not defined.
6694
6695 2003-01-06 Mark Mitchell <mark@codesourcery.com>
6696
6697 PR c++/9165
6698 * decl2.c (build_cleanup): Mark the object as used.
6699
6700 * pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
6701 (hash_local_specialization): New function.
6702 (register_local_specialization): Revert 2003-01-05 change.
6703 (instantiate_decl): Use hash_local_specialization when creating
6704 the local_specializations table.
6705
6706 * decl2.c (mark_used): Do not synthesize thunks.
6707
6708 * class.c (layout_class_type): Correct handling of unnamed
6709 bitfields wider than their types.
6710
6711 PR c++/9189
6712 * parser.c (cp_parser): Remove default_arg_types. Update
6713 documentation for unparsed_functions_queues.
6714 (cp_parser_late_parsing_default_args): Take a FUNCTION_DECL as the
6715 parameter.
6716 (cp_parser_new): Don't set parser->default_arg_types.
6717 (cp_parser_function_definition): Adjust usage of
6718 unparsed_funtions_queues.
6719 (cp_parser_class_specifier): Don't mess with
6720 parser->default_arg_types. Handle default argument processing in
6721 a separate phase from function body processing.
6722 (cp_parser_template_declaration_after_export): Adjust usage of
6723 unparsed_functions_queues.
6724 (cp_parser_late_parsing_for_member): Do not handle default
6725 arguments.
6726
6727 2003-01-06 Nathan Sidwell <nathan@codesourcery.com>
6728
6729 PR c++/9109
6730 * parser.c (cp_parser_declarator_kind): New enum.
6731 (cp_parser_declarator): Adjust.
6732 (cp_parser_direct_declarator): Adjust. Allow for either named or
6733 abstract declarator. Prefer abstract, if possible. Allow
6734 parenthesized function name.
6735 (cp_parser_condition): Adjust cp_parser_declarator call.
6736 (cp_parser_explicit_instantiation): Likewise.
6737 (cp_parser_init_declarator): Likewise.
6738 (cp_parser_type_id): Likewise.
6739 (cp_parser_function_definition): Likewise.
6740 (cp_parser_member_declaration): Likewise.
6741 (cp_parser_parameter_declaration): Use cp_parser_declarator to do
6742 the tentative parsing.
6743 (cp_parser_exception_declaration): Likewise.
6744
6745 2003-01-05 Mark Mitchell <mark@codesourcery.com>
6746
6747 * parser.c (cp_parser_template_parameter): Adjust call to
6748 cp_parser_parameter_declaration.
6749 (cp_parser_parameter_declaration_list): Likewise.
6750 (cp_parser_parameter_declaration): Replace
6751 greater_than_is_operator_p with template_parm_p parameter. Do not
6752 cache tokens for template default arguments.
6753
6754 * pt.c (retrieve_local_specialization): Use htab_find, not
6755 htab_find_with_hash.
6756 (register_local_specialization): Use htab_find_slot, not
6757 htab_find_slot_with_hash.
6758 (instantiate_decl): Pass a hash function to htab_create.
6759
6760 2003-01-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6761
6762 * parser.c (cp_parser_binary_expression,
6763 cp_parser_multiplicative_expression,
6764 cp_parser_additive_expression, cp_parser_shift_expression,
6765 cp_parser_relational_expression, cp_parser_equality_expression,
6766 cp_parser_and_expression, cp_parser_exclusive_or_expression,
6767 cp_parser_inclusive_or_expression,
6768 cp_parser_logical_and_expression, cp_parser_logical_or_expression,
6769 cp_parser_binary_expression): Const-ify.
6770
6771 2003-01-04 Mark Mitchell <mark@codesourcery.com>
6772
6773 * method.c (use_thunk): Disable access control while building the
6774 body of the thunk.
6775
6776 2003-01-03 Nathanael Nerode <neroden@gcc.gnu.org>
6777
6778 * cvt.c, decl.c, decl2.c: This is the C++ front end, not the C
6779 front end.
6780
6781 2003-01-03 Matt Austern <austern@apple.com>
6782
6783 * cp-tree.h (struct lang_type_class): add field for key method
6784 (cp_global_trees): rename dynamic_classes to keyed_classes
6785 (key_method): add definition
6786 * class.c (finish_struct_1): compute class's key method, and add
6787 the class to keyed_classes list if there is no key method.
6788 * decl.c (finish_function): add class to keyed_classes list if we
6789 see a definition of the class's key method.
6790 * pt.c (instantiate_class_template): add template specialization
6791 of a dynamic class to keyed_classes list.
6792 * decl2.c (key_method): remove
6793 (finish_file): iterate only through keyed_classes list when
6794 deciding whether to emit vtables, remove class from its list after
6795 we do the emission.
6796
6797 2003-01-02 Jason Merrill <jason@redhat.com>
6798
6799 * call.c (build_conditional_expr): Stabilize lvalues properly.
6800 * cvt.c (ocp_convert): Don't build NOP_EXPRs of class type.
6801 * tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues.
6802 Don't allow CALL_EXPR or VA_ARG_EXPR, either.
6803
6804 * call.c (convert_like_real): Call decl_constant_value for an
6805 IDENTITY_CONV even if there are no more conversions.
6806
6807 * cvt.c (build_up_reference): Don't push unnamed temps.
6808
6809 * decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL.
6810
6811 * dump.c (cp_dump_tree): Don't try to dump class-specific fields
6812 for a backend struct.
6813
6814 * except.c (wrap_cleanups_r, build_throw): Make
6815 MUST_NOT_THROW_EXPRs void.
6816 * init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR.
6817
6818 * init.c (build_vec_delete_1): Pre-evaluate the base address.
6819
6820 * init.c (get_temp_regvar): Simplify logic.
6821
6822 * tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if
6823 our replacement is a decl.
6824
6825 * decl.c (cp_make_fname_decl): Push the decls inside the
6826 outermost scope.
6827
6828 2003-01-03 Nathan Sidwell <nathan@codesourcery.com>
6829
6830 PR c++/45, c++/3784
6831 * tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be
6832 the same too.
6833
6834 2003-01-03 Graham Stott <graham.stott@btinternet.com>
6835
6836 * parser.c (struct cp_parser): Add access_checks_lists field
6837 (cp_parser_simple_declaration): Use.
6838 (cp_parser_init_declarator): Likewise.
6839
6840 2003-01-02 Mark Mitchell <mark@codesourcery.com>
6841
6842 * parser.c (cp_parser_declaration): Accept the __extension__
6843 keyword before the declaration.
6844
6845 PR c++/2843
6846 * parser.c (cp_parser_parameter_declaration): Allow attributes to
6847 appear after the declarator.
6848
6849 * call.c (build_new_method_call): Fix typo in message format
6850 string.
6851
6852 2003-01-02 Mark Mitchell <mark@codesourcery.com>
6853
6854 * parser.c (cp_lexer_next_token_is): Declare it inline.
6855 (cp_lexer_set_source_position_from_token): Likewise.
6856 (cp_lexer_debugging_p): Likewise.
6857 (cp_parser_parsing_tentatively): Likewise.
6858 (cp_parser_nested_name_specifier_opt): Reduce the number of calls
6859 to the cp_lexer_peek_token.
6860
6861 * parser.c (cp_parser_sizeof_operand): Do not evaluate the
6862 expression.
6863
6864 2003-01-02 Steven Bosscher <s.bosscher@student.tudelft.nl>
6865
6866 * cp/except.c, cp/expr.c, cp/friend.c, cp/g++spec.c,
6867 cp/lang-options.h, cp/lang-specs.h, cp/lex.h, cp/ptree.c,
6868 cp/repo.c: Fix copyright years.
6869
6870 2003-01-01 Neil Booth <neil@daikokuya.co.uk>
6871
6872 * lex.c: Remove superfluous include of cpplib.h.
6873 (CONSTRAINT): Define without conditions.
6874 (init_cp_pragma): Use c_register_pragma.
6875
6876 2002-12-31 Neil Booth <neil@daikokuya.co.uk>
6877
6878 * .cvsignore: Remove.
6879
6880 2002-12-31 Steven Bosscher <s.bosscher@student.tudelft.nl>
6881
6882 * call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
6883 except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
6884 lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
6885 pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
6886 typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
6887 copyright header.
6888 * lex.h: parse.y is dead, so don't mention it. Also replace the
6889 copyright header with the default GNU copyright header.
6890
6891 2002-12-31 Mark Mitchell <mark@codesourcery.com>
6892
6893 * cp-tree.h (LOOKUP_TEMPLATES_EXPECTED): Remove.
6894 (lookup_name_namespace_only): Likewise.
6895 (begin_only_namespace_names): Likewise.
6896 (end_only_namespace_names): Likewise.
6897 * decl.c (only_namespace_names): Remove.
6898 (qualify_lookup): Do not check LOOKUP_TEMPLATES_EXPECTED.
6899 (lookup_name_real): Do not check only_namespace_names.
6900 (lookup_name_namespace_only): Remove.
6901 (begin_only_namespace_names): Likewise.
6902 (end_only_namespace_names): Likewise.
6903 * parser.c (cp_parser_nested_name_specifier_opt): Handle erroneous
6904 nested-name-specifiers more gracefully.
6905 (cp_parser_class_or_namespace_name): Avoid looking up namespace
6906 names when they cannot possibly appear.
6907 (cp_parser_template_name): Adjust call to cp_parser_lookup_name.
6908 (cp_parser_elaborated_type_specifier): Likewise.
6909 (cp_parser_namespace_name): Only look for namespace names.
6910 (cp_parser_lookup_name): Add is_namespace parameter.
6911 (cp_parser_lookup_name_simple): Adjust call to
6912 cp_parser_lookup_name.
6913
6914 * parser.c (cp_parser_dependent_type_p): Fix thinko.
6915
6916 2002-12-31 Neil Booth <neil@daikokuya.co.uk>
6917
6918 * .cvsignore: Update.
6919
6920 2002-12-31 Nathan Sidwell <nathan@codesourcery.com>
6921
6922 * class.c (modify_vtable_entry): Remove unused variable.
6923 (get_vcall_index): Always expect a non-thunk.
6924 (update_vtable_entry_for_fn): Combine covariant adjustments, when
6925 overriding a thunk. Pass get_vcall_index a non-thunk.
6926
6927 * decl2.c (finish_file): Mark undefined inlines as extern.
6928
6929 2002-12-31 Mark Mitchell <mark@codesourcery.com>
6930
6931 * cp-tree.def (RETURN_INIT): Remove.
6932 * cp-tree.h (DECL_IN_MEMORY_P): Remove.
6933 (scope_kind): Add sk_block, sk_try, sk_catch, sk_for.
6934 (note_level_for_for): Remove.
6935 (note_level_for_try): Likewise.
6936 (note_level_for_catch): Likewise.
6937 (finish_named_return_value): Likewise.
6938 (do_pushlevel): Change prototype.
6939 (pending_lang_change): Remove.
6940 * decl.c (begin_scope): Handle sk_block, sk_try, sk_catch,
6941 sk_for.
6942 (note_level_for_for): Remove.
6943 (note_level_for_try): Likewise.
6944 (note_level_for_catch): Likewise.
6945 (maybe_inject_for_scope_var): Remove use of DECL_IN_MEMORY_P.
6946 * parser.c (cp_parser_context_free_list): Make it "deletable".
6947 (cp_parser_template_argument): Remove misleading comment.
6948 * pt.c (tsubst_expr): Remove RETURN_INIT code.
6949 * semantics.c (genrtl_named_return_value): Remove.
6950 (do_pushlevel): Take a scope kind as an argument.
6951 (begin_if_stmt): Adjust.
6952 (begin_while_stmt): Likewise.
6953 (begin_for_stmt): Likewise.
6954 (finish_for_init_stmt): Likewise.
6955 (begin_switch_stmt): Likewise.
6956 (begin_handler): Likewise.
6957 (begin_compound_stmt): Likewise.
6958 (finish_named_return_value): Remove.
6959 (cp_expand_stmt): Remove RETURN_INIT case.
6960 * tree.c (cp_statement_code_p): Remove RETURN_INIT case.
6961
6962 2002-12-31 Mark Mitchell <mark@codesourcery.com>
6963
6964 PR c++/9112
6965 * parser.c (cp_parser_direct_declarator): Handle erroneous
6966 parenthesized declarators correctly.
6967
6968 2002-12-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
6969
6970 * cp-tree.h (pending_lang_change): Declare.
6971
6972 2002-12-30 Mark Mitchell <mark@codesourcery.com>
6973
6974 * parser.c (cp_parser_context_free_list): New variable.
6975 (cp_parser_context_new): Use it.
6976 (cp_parser_error): Check return code from
6977 cp_parser_simulate_error.
6978 (cp_parser_simulate_error): Return a value.
6979 (cp_parser_id_expression): Optimize common case.
6980 (cp_parser_class_name): Likewise.
6981 (cp_parser_class_specifier): Adjust call to
6982 cp_parser_late_parsing_default_args.
6983 (cp_parser_lookup_name): Optimize common case.
6984 (cp_parser_late_parsing_for_member): Adjust call to
6985 cp_parser_late_parsing_default_args.
6986 (cp_parser_late_parsing_default_args): Add scope parameter.
6987 (cp_parser_require): Avoid creating the error message unless it's
6988 needed.
6989 (cp_parser_parse_definitely): Place free'd contexts on the free
6990 list.
6991
6992 * parser.c (cp_parser_declaration_seq_opt): Handle pending_lang_change.
6993
6994 2002-12-30 David Edelsohn <edelsohn@gnu.org>
6995
6996 * parser.c (cp_parser_parameter_declaration_clause): Treat system
6997 header as extern "C" if NO_IMPLICIT_EXTERN_C undefined.
6998
6999 2002-12-30 Nathanael Nerode <neroden@gcc.gnu.org>
7000
7001 * config-lang.in, Make-lang.in, operators.def, cp-tree.def:
7002 GCC, not GNU CC.
7003
7004 2002-12-30 Mark Mitchell <mark@codesourcery.com>
7005
7006 * parse.y: Remove.
7007 * spew.c: Likewise.
7008 * Make-lang.in (gt-cp-spew.h): Remove.
7009 * cp-tree.h (do_pending_lang_change): Remove.
7010 (do_identifier): Change prototype.
7011 (finish_id_expr): Remove.
7012 * decl.c (lookup_name_real): Remove yylex variable.
7013 * decl2.c (build_expr_from_tree): Adjust call to do_identifier.
7014 * lex.c (init_cpp_parse): Remove.
7015 (reduce_cmp): Likewise.
7016 (token_cmp): Likewise.
7017 (yychar): Likewise.
7018 (lastiddecl): Likewise.
7019 (token_count): Likewise.
7020 (reduce_count): Likewise.
7021 (yyhook): Likewise.
7022 (print_parse_statistics): Likewise.
7023 (do_pending_lang_change): Likewise.
7024 (do_identifier): Remove parsing parameter.
7025 * lex.h (lastiddecl): Remove.
7026 (looking_for_typename): Remove.
7027 (looking_for_template): Likewise.
7028 (pending_lang_change): Likewise.
7029 (yylex): Likewise.
7030 * semantics.c (finish_id_expr): Remove.
7031
7032 * decl.c (grokdeclarator): Diagnost "extern thread" and "static
7033 thread" correctly.
7034
7035 2002-12-30 Nathanael Nerode <neroden@gcc.gnu.org>
7036
7037 * decl.c, decl2.c, decl.h: GCC, not GNU CC. This is the C++ front
7038 end, not the C front end.
7039
7040 2002-12-30 Nathan Sidwell <nathan@codesourcery.com>
7041
7042 * cp-tree.h (THUNK_TARGET): New macro.
7043 (THUNK_VIRTUAL_OFFSET): For result thunks it is always a binfo.
7044 (finish_thunk): Remove offset parms.
7045 * class.c (find_final_overrider): Look through thunks.
7046 (get_vcall_index): Use THUNK_TARGET.
7047 (update_vtable_entry_for_fn): Look through thunks. Set covariant
7048 fixed offset here. Adjust finish_thunk call.
7049 (build_vtbl_initializer): Adjust finish_thunk calls.
7050 * mangle.c (mangle_call_offset): Remove superfluous if.
7051 (mangle_thunk): Adjust.
7052 * method.c (make_thunk): Adjust.
7053 (finish_thunk): Adjust.
7054 (thunk_adjust): Remove assert.
7055 (use_thunk): Use THUNK_TARGET
7056 * dump1.c (cp_dump_tree): Adjust thunk dumping.
7057
7058 PR c++/9054
7059 * class.c (layout_class_type): Set TYPE_CONTEXT of type for base.
7060 * dump.c (cp_dump_tree, RECORD_TYPE): Deal with type for base types.
7061
7062 2002-12-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
7063
7064 Remove traditional C constructs 4/n.
7065 * decl2.c (grok_method_quals, warn_if_unknown_interface,
7066 grok_x_components, cp_build_parm_decl, build_artificial_parm,
7067 maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
7068 delete_sanity, check_member_template, check_java_method,
7069 check_classfn, finish_static_data_member_decl, grokfield,
7070 grokbitfield, grokoptypename, grok_function_init,
7071 cplus_decl_attributes, constructor_name, defer_fn,
7072 build_anon_union_vars, finish_anon_union, coerce_new_type,
7073 coerce_delete_type, comdat_linkage, maybe_make_one_only,
7074 key_method, import_export_vtable, import_export_class,
7075 output_vtable_inherit, import_export_decl, import_export_tinfo,
7076 build_cleanup, get_guard, get_guard_bits, get_guard_cond,
7077 set_guard, start_objects, finish_objects,
7078 start_static_storage_duration_function,
7079 finish_static_storage_duration_function, get_priority_info,
7080 start_static_initialization_or_destruction,
7081 finish_static_initialization_or_destruction,
7082 do_static_initialization, do_static_destruction,
7083 prune_vars_needing_no_initialization, write_out_vars,
7084 reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
7085 add_using_namespace, merge_functions, ambiguous_decl,
7086 lookup_using_namespace, lookup_using_namespace,
7087 qualified_lookup_using_namespace, set_decl_namespace,
7088 decl_namespace, current_decl_namespace, push_decl_namespace,
7089 pop_decl_namespace, push_scope, pop_scope, add_function,
7090 arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
7091 lookup_arg_dependent, do_namespace_alias,
7092 validate_nonmember_using_decl, do_nonmember_using_decl,
7093 do_toplevel_using_decl, do_local_using_decl,
7094 do_class_using_decl, do_using_directive, check_default_args,
7095 mark_used, handle_class_head): Use C90 prototypings. Use booleans.
7096 * parser.c (cp_parser_class_head): Use booleanss.
7097 * decl.c (walk_globals, walk_vtables): Likewise.
7098 * cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
7099 walk_globals): Change return type from 'int' to 'bool'.
7100 * rtti.c (init_rtti_processing, build_headof, throw_bad_cast
7101 throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
7102 build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
7103 get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
7104 qualifier_flags, tinfo_base_init, generic_initializer,
7105 ptr_initializer, dfs_class_hint_mark, ptm_initializer,
7106 dfs_class_hint_unmark, class_hint_flags, class_initializer,
7107 typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
7108 get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
7109 unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
7110 * repo.c (repo_compile_flags, repo_template_declared,
7111 repo_template_defined, repo_class_defined, repo_get_id,
7112 repo_template_used, repo_vtable_used, repo_inline_used,
7113 repo_tinfo_used, repo_template_instantiated, extract_string,
7114 open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
7115 finish_repo): Likewise.
7116 * ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
7117 cxx_print_xnode): Likewise..
7118 * cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
7119 cxx_warn_unused_global_decl, cp_expr_size): Likewise.
7120 * cxxfilt.c (demangle_it, print_demangler_list, usage,
7121 standard_symbol_characters, hp_symbol_characters, main, fatal):
7122 Likewise.
7123 (strip_underscore): Change type from 'int' to 'bool'.
7124 (main): Use boolean constants.
7125
7126 2002-12-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
7127
7128 Remove traditional C constructs 3/n.
7129 * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
7130 build_up_reference, warn_ref_binding, convert_to_reference,
7131 convert_from_reference, convert_lvalue, cp_convert, ocp_convert,
7132 convert_to_void, convert, convert_force, build_type_conversion,
7133 build_expr_type_conversion, type_promotes_to,
7134 perform_qualification_conversions): Use C90 prototyping style.
7135 * decl2.c (grok_array_decl): Use boolean constant.
7136 (delete_sanity): Likewise.
7137 * typeck.c (build_unary_op): Likewise.
7138 * semantics.c (finish_switch_cond): Likewise.
7139 * parser.c (cp_parser_direct_new_declarator): Likewise.
7140 * init.c (build_new): Likewise.
7141
7142 2002-12-27 Mark Mitchell <mark@codesourcery.com>
7143
7144 * Make-lang.in (po-generated): Remove parse.c.
7145 (CXX_OBJS): Remove parse.o and spew.o. Add parser.o.
7146 ($(srcdir)/cp/parse.h): Remove target.
7147 ($(srcdir)/cp/parse.c): Likewise.
7148 (gt-cp-parse.h): Likewise.
7149 (gt-cp-parser.h): New target.
7150 (c++.distclean): Do not remove parse.output.
7151 (c++.maintainer-clean): Do not remove parse.c or parse.h.
7152 (cp/spew.o): Remove target.
7153 (cp/lex.o): Adjust dependencies.
7154 (cp/pt.o): Likewise.
7155 (cp/parse.o): Likewise.
7156 (cp/TAGS): Do not mention parse.c.
7157 (cp/parser.o): New target.
7158 * NEWS: Mention the new parser.
7159 * call.c (build_scoped_method_call): Simplify.
7160 (build_method_call): Likewise.
7161 (build_new_function_call): Adjust calls to add_function_candidate
7162 and add_template_candidate.
7163 (build_new_op): Improve handling of erroroneous operands.
7164 (convert_default_arg): Remove circular argument processing.
7165 (name_as_c_string): New function.
7166 (build_new_method_call): Use it.
7167 (perform_implicit_conversion): Use error_operand_p.
7168 * class.c (finish_struct_anon): Use constructor_name_p.
7169 (check_field_decls): Likewise.
7170 (pop_nested_class): Use OVL_NEXT, not OVL_CHAIN.
7171 (resolve_address_of_overloaded_function): Likewise.
7172 (instantiate_type): Tweak pointer-to-member handling.
7173 (get_primary_binfo): Remove incorrect assertion.
7174 * config-lang.in (gtfiles): Add parser.c, remove parse.c.
7175 * cp-tree.h (DEFARG_TOKENS): New macro.
7176 (default_arg): New structure.
7177 (cp_tree_node_structure_enum): Add TS_CP_DEFAULT_ARG.
7178 (lang_tree_node): Add default_arg.
7179 (cp_tree_index): Add CPTI_TYPE_INFO_REF_TYPE.
7180 (type_info_ref_type): New macro.
7181 (saved_scope): Make processing_explicit_instantiation a boolean.
7182 (check_access): New field.
7183 (unparsed_text): Remove.
7184 (language_function): Remove unparsed_inlines.
7185 (error_operand_p): New macro.
7186 (lang_decl): Adjust pending_inline_info.
7187 (DEFARG_POINTER): Remove.
7188 (tag_types): Add typenames.
7189 (lookup_ualified_name): Declare.
7190 (lookup_name_real): Likewise.
7191 (shadow_tag): Adjust prototype.
7192 (get_scope_of_declarator): Declare it.
7193 (process_next_inline): Remove it.
7194 (check_for_missing_semicolon): Likewise.
7195 (maybe_get_template_decl_from_type_decl): Declare it.
7196 (finish_label_stmt): Adjust prototype.
7197 (finish_non_static_data_meber): Declare it.
7198 (finish_pseudo_destructor_call_expr): Rename to ...
7199 (finish_pseudo_destructor_expr): ... this.
7200 (finish_compound_literal): Declare it.
7201 (begin_inline_definitions): Remove it.
7202 (init_spew): Remove.
7203 (peekyylex): Likewise.
7204 (arbitrate_lookup): Likewise.
7205 (frob_opname): Likewise.
7206 (maybe_snarf_defarg): Likewise.
7207 (add_defarg_fn): Likewise.
7208 (do_pending_defargs): Likewise.
7209 (done_pending_defargs): Likewise.
7210 (unprocessed_defarg_fn): Likewise.
7211 (replace_defarg): Likewise.
7212 (end_input): Likewise.
7213 (get_overloaded_fn): Likewise.
7214 * cvt.c (convert_to_reference): Improve error handling.
7215 * decl.c (lookup_name_real): Do not declare it static.
7216 (maybe_push_to_top_level): Set check_access.
7217 (identifier_type_value): Adjust call to lookup_name_real.
7218 (lookup_qualified_name): New method.
7219 (lookup_name_real): Remove special-case parsing code.
7220 (lookup_name-nonclass): Adjust call to lookup_name_real.
7221 (lookup_name_namespace_only): Likewise.
7222 (lookup_name): Likewise.
7223 (check_tag_decl): Return the type declared.
7224 (shadow_tag): Likewise.
7225 (register_dtor_fn): Tweak check_access.
7226 (grokfndecl): Use constructor_name_p.
7227 (get_scope_of_declarator): New function.
7228 (grokdeclarator): Obscure tweaks for slightly different declarator
7229 representations.
7230 (start_method): Return error_mark_node to indicate failure.
7231 (cp_tree_node_structure_enum): Use TS_CP_DEFAULT_ARG for DEFAULT_ARGs.
7232 * decl2.c (constructor_name_full): Simplify.
7233 (constructor_name): Use it.
7234 (build_expr_from_tree): Adjust for changes to do new parser.
7235 (push_scope): Improve robustness.
7236 (validate_nonmember_using_decl): Process declarations, not names.
7237 (do_class_using_decl): Likewise.
7238 (handle_class_head): Do not mess with CLASSTYPE_DECLARED_CLASS
7239 here.
7240 * error.c (dump_expr): Handle IDENTIFIER_NODEs and BASELINKs.
7241 * expr.c (cxx_expand_expr): Handle BASELINKs.
7242 * init.c (member_init_ok_or_else): Issue more errors.
7243 (build_offset_ref): Tweak handling of FUNCTION_DECLs.
7244 * lex.c: Do not include parse.h.
7245 (yypring): Do not declare.
7246 (yylval): Likewise.
7247 (make_reference_declarator): Remove error-generating code.
7248 (rid_to_yy): Remove.
7249 (cxx_init): Do not call init_spew.
7250 (yypring): Remove.
7251 (check_for_missing_semicolon): Remove.
7252 * lex.h (got_scope): Remove.
7253 (got_object): Remove.
7254 * method.c (hack_identifier): Use finish_non_static_data_member.
7255 (implicitly_declare_fn): Adjust use of constructor_name.
7256 * parser.c: New file.
7257 * pt.c (parse.h): Do not include it.
7258 (maybe_get_template_decl_from_template): Do not declare it.
7259 (finish_member_template_decl): Tweak.
7260 (begin_explicit_instantiation): Adjust for
7261 processing_explicit_instantiation being boolean.
7262 (end_explicit_instantiation): Likewise.
7263 (maybe_process_partial_specialization): Tighten specialization
7264 test.
7265 (retrieve_local_specialization): Adjust ue of hash table.
7266 (eq_local_specializations): New function.
7267 (register_local_specialization): Likewise.
7268 (push_template_decl_real): Remove unnecessary test.
7269 (maybe_get_template_decl_from_type_decl): Don't make it static.
7270 (for_each_template_parm_r): Handle TYPEOF_TYPE.
7271 (tsubst_copy): Use retrieive_local_specialization to handle
7272 PARM_DECL. Adjust handling of CONST_DECLs. Handle BASELINKs.
7273 Handle COMPONENT_REFs with pseudo-destructor-expressions.
7274 Simplify handling of CALL_EXPR and METHOD_CALL_EXPR.
7275 (tsubst_expr): Pass decls, not names, to do_local_using_decl.
7276 (unify): Tweak handling of CONST_DECLs.
7277 (regenerate_decl_from_template): Use push_nested_class.
7278 (template_for_substitution): New funciton.
7279 (instantiate_decl): Use it. Register parameters as local
7280 specializations.
7281 * rtti.c (init_rtti_processing): Set type_info_ref_type.
7282 (build_typeid): Use it.
7283 (get_typeid): Likeise.
7284 * search.c (accessible_p): Use check_access, not
7285 flag_access_control.
7286 (adjust_result_of_qualified_name_lookup): Pay attention to the
7287 context_class.
7288 * semantics.c (finish_asm_stmt): Adjust error handling.
7289 (finish_label_stmt): Return the statement.
7290 (finish_non_static_data_member): New function.
7291 (finish_class_expr): Handle BASELINKs.
7292 (finish_call_expr): Handle PSEUDO_DTOR_EXPR.
7293 (finish_object_call_expr): Simplify handling during templates.
7294 (finish_pseudo_destructor_call_expr): Rename to ...
7295 (finish_pseudo_dtor_expr): ... this.
7296 (finish_compound_literal): New function.
7297 (begin_inline_definitions): Remove.
7298 (finish_sizeof): Remove special template handling.
7299 * spew.c: Do not include parse.h.
7300 * tree.c (get_overloaded_fn): Remove.
7301 * typeck.c (build_class_member_access_expr): Handle
7302 PSEUDO_DTOR_EXPR. Adjust handling of static member functions.
7303 (lookup_destructor): New function.
7304 (finish_class_member_access_expr): Use it.
7305 (convert_arguments): Simplify.
7306 (build_unary_op): Handle BASELINKs.
7307
7308 2002-12-26 Nathan Sidwell <nathan@codesourcery.com>
7309
7310 PR c++/4803
7311 * decl2.c (mark_used): Defer inline functions.
7312 (finish_file): Merge deferred_fns loops. Check all used
7313 inline functions have a definition.
7314 * method.c (make_thunk): Thunks are not inline.
7315
7316 PR c++/5116, c++/764
7317 * call.c (build_new_op): Make sure template class operands are
7318 instantiated.
7319
7320 2002-12-24 Nathan Sidwell <nathan@codesourcery.com>
7321
7322 PR C++/7964
7323 * cp-tree.h (resolve_scoped_fn_name): Prototype.
7324 * call.c (resolve_scoped_fn_name): New function. Deal with
7325 more template expansion. Broken out of ...
7326 * parse.y (parse_finish_call_expr): ... here. Call it.
7327 * decl2.c (build_expr_from_tree, CALL_EXPR): Use
7328 resolve_scoped_fn_name and build_call_from_tree.
7329
7330 PR c++/9053
7331 * decl.c (duplicate_decls): Templates may be disambiguated by
7332 return type.
7333
7334 PR c++/8702
7335 * decl2.c (check_classfn): Use lookup_fnfield_1. List all
7336 conversion operators on failure.
7337
7338 2002-12-23 Gabriel Dos Reis <gdr@integrable-solutions.net>
7339
7340 Remove traditional C constructs 2/n.
7341 * call.c (tourney, build_field_call, equal_functions, joust,
7342 compare_ics, build_over_call, build_java_interface_fn_ref,
7343 convert_like_real, op_error, build_object_call, resolve_args,
7344 build_vfield_ref, check_dtor_name, build_scoped_method_call,
7345 build_addr_func, build_call, build_method_call, null_ptr_cst_p,
7346 sufficient_parms_p, build_conv, non_reference, strip_top_quals,
7347 standard_conversion, reference_related_p,
7348 reference_compatible_p, convert_class_to_reference,
7349 direct_reference_binding, reference_binding,
7350 ,implicit_conversion, is_complete, promoted_arithmetic_type_p,
7351 add_template_conv_candidate, any_viable, any_strictly_viable,
7352 build_this, splice_viable, print_z_candidates,
7353 build_user_type_conversion, build_new_function_call,
7354 conditional_conversion, build_conditional_expr, build_new_op,
7355 build_op_delete_call, enforce_access, call_builtin_trap,
7356 convert_arg_to_ellipsis, build_x_va_arg, cxx_type_promotes_to,
7357 convert_default_arg, type_passed_as, convert_for_arg_passing,
7358 in_charge_arg_for_name, is_properly_derived_from,
7359 maybe_handle_implicit_object, maybe_handle_ref_bind,
7360 source_type, add_warning, can_convert, can_convert_arg,
7361 perform_implicit_conversion, can_convert_arg_bad,
7362 initialize_reference, add_conv_candidate,
7363 add_template_candidate_real, add_template_candidate): Ansify.
7364
7365 2002-12-22 Nathan Sidwell <nathan@codesourcery.com>
7366
7367 PR c++/8572
7368 * cp-tree.h (grokoptypename): Add SCOPE parameter.
7369 * decl2.c (grokoptypename): Add SCOPE parameter. tsubst the type
7370 if in a template scope.
7371 * parse.y (unoperator): Return the scope.
7372 (operator_name): Adjust grokoptypename call.
7373
7374 2002-12-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7375
7376 * cp-tree.h (make_unbound_class_template): Use tsubst_flags_t.
7377 * decl.c (make_unbound_class_template): Adjust. Check for tf_error.
7378 * pt.c (tsubst) [OFFSET_TYPE]: Check for tf_error.
7379
7380 2002-12-20 Kazu Hirata <kazu@cs.umass.edu>
7381
7382 * ChangeLog: Fix a typo.
7383 * class.c: Fix comment typos.
7384 * cp-tree.h: Likewise.
7385
7386 2002-12-18 Jason Merrill <jason@redhat.com>
7387
7388 Handle anonymous unions at the tree level.
7389 C++ ABI change: Mangle anonymous unions using the name of their
7390 first named field (by depth-first search). Should not cause
7391 binary compatibility problems, though, as the compiler previously
7392 didn't emit anything for affected unions.
7393 * cp-tree.def (ALIAS_DECL): New tree code.
7394 * decl2.c (build_anon_union_vars): Build ALIAS_DECLs. Return the
7395 first field, not the largest.
7396 (finish_anon_union): Don't mess with RTL. Do set DECL_ASSEMBLER_NAME,
7397 push the decl, and write it out at namespace scope.
7398 * decl.c (lookup_name_real): See through an ALIAS_DECL.
7399 (pushdecl): Add namespace bindings for ALIAS_DECLs.
7400 * rtti.c (unemitted_tinfo_decl_p): Don't try to look at the name
7401 of a decl which doesn't have one.
7402 * typeck.c (build_class_member_access_expr): Don't recurse if
7403 we already have the type we want.
7404
7405 2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7406
7407 PR c++/8099
7408 * friend.c (make_friend_class): Allow partial specialization
7409 when declaration is not a template friend.
7410
7411 2002-12-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7412
7413 PR c++/3663
7414 * pt.c (lookup_template_class): Copy TREE_PRIVATE and
7415 TREE_PROTECTED to created decl nodes.
7416
7417 2002-12-18 Mark Mitchell <mark@codesourcery.com>
7418
7419 * class.c (build_base_field): Do not set DECL_PACKED on the
7420 FIELD_DECL.
7421
7422 2002-12-18 Gabriel Dos Reis <gdr@integrable-solutions.net>
7423
7424 * cp-tree.h (struct tree_srcloc): Use location_t.
7425 (SOURCE_LOCUS): New.
7426 (SRCLOC_FILE, SRCLOC_LINE): Adjust.
7427
7428 2002-12-17 Jason Merrill <jason@redhat.com>
7429
7430 * decl.c (finish_function): Also complain about no return in
7431 templates.
7432 * semantics.c (finish_return_stmt): Also call check_return_expr in
7433 templates.
7434 * typeck.c (check_return_expr): In a template, just remember that we
7435 saw a return.
7436
7437 2002-12-16 Jason Merrill <jason@redhat.com>
7438
7439 * semantics.c (simplify_aggr_init_exprs_r): Don't change the type
7440 of the CALL_EXPR.
7441
7442 * semantics.c (do_pushlevel): Call pushlevel after adding the
7443 SCOPE_STMT.
7444 (do_poplevel): Call poplevel before adding the SCOPE_STMT.
7445 * parse.y (function_body): Go back to using compstmt.
7446 * decl.c (pushdecl): Skip another level to get to the parms level.
7447
7448 * call.c (build_new_method_call): Use is_dummy_object to determine
7449 whether or not to evaluate the object parameter to a static member
7450 function.
7451
7452 2002-12-14 Jason Merrill <jason@redhat.com>
7453
7454 * semantics.c (simplify_aggr_init_exprs_r): Also prepend the
7455 return slot for normal functions. Set CALL_EXPR_HAS_RETURN_SLOT_ADDR.
7456 * tree.c (build_cplus_new): If the type isn't TREE_ADDRESSABLE,
7457 don't bother with an AGGR_INIT_EXPR.
7458 (cp_copy_res_decl_for_inlining): If the type isn't TREE_ADDRESSABLE,
7459 just generate a new decl normally. Take return slot parm.
7460 * cp-tree.h: Adjust prototype.
7461
7462 2002-12-13 Gabriel Dos Reis <gdr@integrable-solutions.net>
7463
7464 PR C++/8031
7465 * cvt.c (convert_to_pointer_force): Don't try comparing against
7466 erronous type.
7467
7468 2002-12-13 Geoffrey Keating <geoffk@apple.com>
7469
7470 * cp-tree.h: Have the multiple-include guards around
7471 the entire file.
7472
7473 2002-12-10 David Edelsohn <edelsohn@gnu.org>
7474
7475 * cp/spew.c (feed_input): Change limit to last_pos and pos to cur_pos
7476 for SPEW_DEBUG.
7477 (snarf_method): Same.
7478 (snarf_defarg): Same.
7479
7480 2002-12-10 Mark Mitchell <mark@codesourcery.com>
7481
7482 PR c++/8372
7483 * pt.c (tsubst_copy): Handle destructor names more correctly.
7484
7485 2002-12-10 Matt Austern <austern@apple.com>
7486
7487 * cp-tree.h: get rid of needs_virtual_reinit bit.
7488
7489 2002-12-09 Mark Mitchell <mark@codesourcery.com>
7490
7491 * NEWS: Document removal of in-class initialization extension for
7492 static data members of non-arithmetic, non-enumeration type.
7493 * decl.c (check_static_variable_definition): Do not allow that
7494 extension.
7495 * decl2.c (grokfield): Do not call digest_init when processing
7496 templates.
7497
7498 2002-12-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
7499
7500 * error.c (dump_expr): Fix format specifier warning.
7501
7502 2002-12-04 Geoffrey Keating <geoffk@apple.com>
7503
7504 * class.c (finish_struct_1): Correct comment.
7505 * cp-tree.c (DECL_SORTED_FIELDS): Likewise.
7506
7507 2002-12-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
7508
7509 PR C++/8799
7510 * error.c (dump_expr): Don't ever try to dump a non-existent
7511 expression.
7512
7513 2002-12-03 Nathan Sidwell <nathan@codesourcery.com>
7514
7515 Implement covariant returns.
7516 * cp-tree.h (IS_AGGR_TYPE_2): Remove.
7517 (struct lang_decl_flags): Add this_thunk_p flag.
7518 Rename vcall_offset to virtual_offset.
7519 (struct lang_decl): Rename delta to fixed_offset.
7520 (DECL_THIS_THUNK_P, DECL_RESULT_THUNK_P): New #defines.
7521 (SET_DECL_THUNK_P): Add THIS_ADJUSTING arg.
7522 (THUNK_DELTA, THUNK_VCALL_OFFSET): Rename to ...
7523 (THUNK_FIXED_OFFSET, THUNK_VIRTUAL_OFFSET): ... here.
7524 (make_thunk): Add this_adjusting arg.
7525 (finish_thunk): Declare.
7526 (mangle_thunk): Add this_adjusting arg.
7527 * class.c (get_vcall_index): Use base function for lookup.
7528 (update_vtable_entry_for_fn): Generate covariant thunk.
7529 (finish_struct_1): Set DECL_VINDEX to NULL for thunks.
7530 (build_vtbl_initializer): Use base function for lookup.
7531 Finish covariant thunk here. Adjust thunk generation.
7532 * dump.c (cp_dump_tree): Simplify DECL_GLOBAL_[CD]TOR_P handling.
7533 Adjust thunk dumping.
7534 * mangle.c (mangle_call_offset): New function.
7535 (mangle_thunk): Adjust for covariant thunks.
7536 * method.c (make_thunk): Adjust. Do not set name here.
7537 (finish_thunk): New function. Set name here.
7538 (use_thunk): Generate covariant thunks too.
7539 (thunk_adjust): New function.
7540 * search.c (covariant_return_p): Remove. Fold into ...
7541 (check_final_overrider): ... here. Simplify.
7542 * semantics.c (emit_associated_thunks): Walk covariant thunk lists.
7543
7544 2002-12-03 Jason Merrill <jason@redhat.com>
7545
7546 PR c++/8674
7547 * call.c (build_over_call): Check specifically for TARGET_EXPR
7548 when eliding.
7549
7550 PR c++/8461, c++/8625
7551 * call.c (convert_for_arg_passing): Don't mess with error_mark_node.
7552 (cp_convert_parm_for_inlining): Remove.
7553 * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
7554 Remove.
7555 * cp-tree.h (ADDR_IS_INVISIREF): Remove.
7556 * except.c (stabilize_throw_expr): Remove ADDR_IS_INVISIREF code.
7557
7558 * call.c (build_user_type_conversion_1): Don't set ICS_BAD_FLAG on
7559 an ambiguous conversion.
7560
7561 2002-12-03 Mark Mitchell <mark@codesourcery.com>
7562
7563 PR c++/8688
7564 * decl.c (reshape_init): Handle erroneous initializers.
7565
7566 2002-12-02 Mark Mitchell <mark@codesourcery.com>
7567
7568 PR c++/8720
7569 * spew.c (remove_last_token): Make sure that last_chunk is set
7570 correctly.
7571
7572 PR c++/8615
7573 * error.c (dump_expr): Handle character constants with
7574 TREE_OVERFLOW set.
7575
7576 2002-12-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7577
7578 DR 180
7579 * decl.c (grokdeclarator): Require class-key for all friend class.
7580 Output the correct type and context in the error message.
7581
7582 2002-12-01 Mark Mitchell <mark@codesourcery.com>
7583
7584 PR c++/5919
7585 * pt.c (unify): Use variably_modified_type_p to test validity of
7586 template argument types.
7587
7588 PR c++/8727
7589 * cp-tree.h (lang_type_class): Add typeinfo_var.
7590 (CLASSTYPE_TYPEINFO_VAR): New macro.
7591 * rtti.c (get_tinfo_decl): Use it.
7592
7593 PR c++/8663
7594 * init.c (expand_member_init): Always get the main variant of a
7595 base class.
7596
7597 2002-12-01 Mark Mitchell <mark@codesourcery.com>
7598
7599 PR c++/8332
7600 PR c++/8493
7601 * decl.c (cxx_init_decl_processing): Use size_type_node, not
7602 c_size_type_node.
7603 * decl2.c (coerce_new_type): Likewise.
7604 * except.c (do_allocate_exception): Likewise.
7605
7606 2002-11-30 Zack Weinberg <zack@codesourcery.com>
7607
7608 * call.c, class.c, cp-lang.c, cvt.c, cxxfilt.c, decl.c, decl2.c,
7609 dump.c, error.c, except.c, expr.c, friend.c, g++spec.c, init.c,
7610 lex.c, mangle.c, method.c, optimize.c, parse.y, pt.c, ptree.c,
7611 repo.c, rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
7612 typeck2.c: Include coretypes.h and tm.h.
7613 * Make-lang.in: Update dependencies.
7614
7615 2002-11-30 Mark Mitchell <mark@codesourcery.com>
7616
7617 PR c++/8227
7618 * decl.c (layout_var_decl): Deal gracefully with erroneous types.
7619 (check_initializer): Validate the type of the initialized
7620 variable, even if the initializer is absent.
7621 * typeck.c (cp_type_quals): Deal gracefully with erroneous types.
7622
7623 PR c++/8214
7624 * typeck.c (convert_for_assignment): Do not use
7625 decl_constant_value on the operand.
7626
7627 PR c++/8511
7628 * pt.c (instantiate_decl): Handle template friends defined outside
7629 of the class correctly.
7630
7631 2002-11-29 Joe Buck <jbuck@synopsys.com>
7632
7633 * parse.y (class_head_defn): Set CLASSTYPE_DECLARED_CLASS for
7634 anonymous structs.
7635
7636 2002-11-29 Mark Mitchell <mark@codesourcery.com>
7637
7638 * class.c (walk_subobject_offsets): Recur on binfos as well as on
7639 types.
7640 (layout_nonempty_base_or_field): Pass it a binfo when processing a
7641 base class.
7642 (layout_empty_base): Likewise.
7643 (build_base_field): Likewise.
7644
7645 2002-11-27 Mark Mitchell <mark@codesourcery.com>
7646
7647 * class.c (build_base_field): Make sure we get the canonical base
7648 when descending through primary bases.
7649
7650 2002-11-26 Geoffrey Keating <geoffk@apple.com>
7651
7652 * decl.c (check_initializer): Don't error on initialisation of
7653 a scalar with a brace-enclosed expression.
7654
7655 2002-11-26 Nathan Sidwell <nathan@codesourcery.com>
7656
7657 * cp-tree.h (DECL_LANG_FLAG_4): Document more uses.
7658 (template_parms_equal): Remove prototype.
7659 * typeck.c (buuld_indirect_ref): Reformat.
7660
7661 2002-11-25 Jason Merrill <jason@redhat.com>
7662
7663 * init.c (build_vec_init): Use a FOR_STMT instead of an IF_STMT
7664 and a DO_STMT.
7665
7666 2002-11-25 Mark Mitchell <mark@codesourcery.com>
7667
7668 * tree.c (cp_build_qualified_type_real): Correct handling of
7669 array types.
7670 * class.c (walk_subobject_offsets): Fix thinko.
7671 (build_base_field): Record offsets of empty bases in primary
7672 virtual bases.
7673 (layout_class_type): Record offsets of empty bases in fields.
7674
7675 * search.c (is_subobject_of_p_1): Fix thinko.
7676 (lookup_field_queue_p): Likewise.
7677
7678 2002-11-24 Mark Mitchell <mark@codesourcery.com>
7679
7680 * class.c (layout_class_type): Reuse tail padding when laying out
7681 virtual bases.
7682
7683 2002-11-22 Mark Mitchell <mark@codesourcery.com>
7684
7685 * rtti.c (qualifier_flags): Fix thinko.
7686
7687 2002-11-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
7688
7689 Remove traditional C constructs 1/n.
7690 * cp-tree.h (init_method, set_mangled_name_for_decl,
7691 build_opfncall, hack_identifier, make_thunk, use_thunk,
7692 synthesize_method, implicitly_declare_fn,
7693 skip_artificial_parms_for, optimize_function, calls_setjmp_p,
7694 maybe_clone_body): Remove use of PARAMS.
7695
7696 * method.c (do_build_assign_ref, do_build_copy_constructor,
7697 synthesize_exception_spec, locate_dtor, locate_ctor, locate_copy):
7698 Likewise.
7699 (synthesize_method): Use 'bool' type and constants instead of
7700 'int'.
7701 (locate_copy): Likewise.
7702 (implicitly_declare_fn): Likewise.
7703
7704 * optimize.c (calls_setjmp_r, update_cloned_parm, dump_function):
7705 Remove old-style declaration.
7706 (maybe_clone_body): Use 'bool' type and constants.
7707
7708 2002-11-21 Glen Nakamura <glen@imodulo.com>
7709
7710 PR c++/8342
7711 * typeck.c (get_member_function_from_ptrfunc): Make sure that a
7712 SAVE_EXPR for instance_ptr doesn't get evaluated first inside one
7713 of the branches of a COND_EXPR.
7714
7715 2002-11-19 Mark Mitchell <mark@codesourcery.com>
7716
7717 * pt.c (for_each_template_parm): Free allocated memory.
7718 * search.c (is_subobject_of_p_1): New function.
7719 (is_subobject_of_p): Avoid walking virtual bases multiple times.
7720
7721 2002-11-19 Jason Thorpe <thorpej@wasabisystems.com>
7722
7723 * g++spec.c (lang_specific_spec_functions): New.
7724
7725 2002-11-15 Kazu Hirata <kazu@cs.umass.edu>
7726
7727 * ChangeLog: Follow spelling conventions.
7728 * class.c: Likewise.
7729 * decl2.c: Likewise.
7730
7731 2002-11-14 Zack Weinberg <zack@codesourcery.com>
7732
7733 * search.c (dfs_push_decls): Do not try to reorder elements
7734 3..n of method_vec if method_vec has only two elements.
7735 Reverse order of two tests to avoid accessing unallocated
7736 memory.
7737
7738 2002-11-14 Mark Mitchell <mark@codesourcery.com>
7739
7740 * class.c (dfs_find_final_overrider): Adjust so that the most
7741 derived object is a binfo, rather than a class type.
7742 (find_final_overrider): Likewise.
7743 (add_vcall_offset_vtbl_entries_1): Simplify accordingly.
7744 (add_vcall_offset): Likewise.
7745
7746 2002-11-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7747
7748 PR c++/8389
7749 * pt.c (instantiate_template): Push class scope for member
7750 functions.
7751 (get_mostly_instantiated_function_type): Likewise. Don't call
7752 tsubst on context. Remove CONTEXTP and TPARMSP parameters.
7753 * cp-tree.h (get_mostly_instantiated_function_type): Adjust.
7754 * mangle.c (write_encoding, write_unqualified_name): Adjust.
7755
7756 2002-11-07 Mark Mitchell <mark@codesourcery.com>
7757
7758 * class.c (add_vcall_offset_vtbl_entries_1): Correct ordering of
7759 vcall offfsets. Split out ...
7760 (add_vcall_offset): ... new function.
7761
7762 PR c++/8338
7763 * pt.c (for_each_template_parm): Add htab parameter.
7764 (process_partial_specialization): Adjust call.
7765 (push_template_decl_real): Likewise.
7766 (pair_fn_data): Add visited.
7767 (for_each_template_parm_r): Avoid walking duplicates more than
7768 once.
7769 (uses_template_parms): Adjust call to for_each_template_parm.
7770
7771 2002-11-07 Mark Mitchell <mark@codesourcery.com>
7772
7773 * class.c (add_implicitly_declared_members): Put implicitly
7774 declared functions at the end of TYPE_METHODs when -fabi-version
7775 is at least 2.
7776
7777 2002-11-05 Geoffrey Keating <geoffk@apple.com>
7778
7779 * decl2.c (finish_file): Correct spelling.
7780
7781 2002-11-03 Mark Mitchell <mark@codesourcery.com>
7782
7783 * call.c (build_special_member_call): Do not try to lookup VTTs by
7784 name.
7785 * class.c (vtbl_init_data): Add generate_vcall_entries.
7786 (get_vtable_decl): Do not look up virtual tables by name.
7787 (copy_virtuals): Do not use BV_USE_VCALL_INDEX_P.
7788 (set_primary_base): Do not set CLASSTYPE_RTTI.
7789 (determine_primary_base): Likewise.
7790 (get_matching_virtual): Remove.
7791 (get_vcall_index): New function.
7792 (update_vtable_entry_for_fn): Do not try to use virtual thunks
7793 when they are not required. Assign vcall indices at this point.
7794 (finish_struct_1): Do not set CLASSTYPE_NEEDS_VIRTUAL_REINIT.
7795 Do update dynamic_classes.
7796 (build_vtt): Do not add VTTs to the symbol table.
7797 (build_ctor_vtbl_group): Likewise.
7798 (build_vtbl_initializer): Simplify handling of vcall indices.
7799 (build_vcall_offset_vtbl_entries): Pretend to build vcall offsets
7800 for the most derived class.
7801 (add_vcall_offset_vtbl_entries_1): But do not actually add them to
7802 the vtable.
7803 * cp-tree.h (dynamic_classes): New macro.
7804 (lang_type_class): Remove rtti. Add vtables. Add vcall_indices.
7805 (CLASSTYPE_RTTI): Remove.
7806 (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Remove.
7807 (CLASSTYPE_VCALL_INDICES): New macro.
7808 (CLASSTYPE_VTABLES): Likewise.
7809 (BV_USE_VCALL_INDEX_P): Remove.
7810 (build_vtable_path): Remove.
7811 * decl2.c (finish_vtable_vardecl): Remove.
7812 (key_method): Remove #if 0'd code.
7813 (finish_vtable_vardecl): Rename to ...
7814 (maybe_emit_vtables): ... this.
7815 (finish_file): Use it.
7816 * search.c (look_for_overrides_here): Update comment.
7817
7818 2002-11-01 Zack Weinberg <zack@codesourcery.com>
7819
7820 PR c/7353 redux
7821 * decl2.c (grokfield): Reject TYPE_DECLs with initializers.
7822
7823 2002-10-30 Jason Merrill <jason@redhat.com>
7824
7825 PR c++/8186
7826 * cp-tree.h (ADDR_IS_INVISIREF): New macro.
7827 * call.c (convert_for_arg_passing): Set it.
7828 * except.c (stabilize_throw_expr): Recurse for such an arg.
7829
7830 2002-10-31 Mark Mitchell <mark@codesourcery.com>
7831
7832 * cp-tree.h (lang_decl_flags): Remove init_priority.
7833 (lang_decl): Add delta.
7834 (GLOBAL_INIT_PRIORITY): Remove.
7835 (THUNK_DELTA): Revise definition.
7836 * decl2.c (start_objects): Don't set GLOBAL_INIT_PRIORITY.
7837 * dump.c (cp_dump_tree): Don't dump it.
7838
7839 2002-10-30 Mark Mitchell <mark@codesourcery.com>
7840
7841 PR c++/8160
7842 * typeck2.c (process_init_constructor): Call complete_array_type.
7843
7844 PR c++/8149
7845 * decl.c (make_typename_type): Issue errors about invalid results.
7846
7847 2002-10-30 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7848
7849 Core issue 287, PR c++/7639
7850 * cp-tree.h (lang_type_class): Add decl_list field.
7851 (CLASSTYPE_DECL_LIST): New macro.
7852 (maybe_add_class_template_decl_list): Add declaration.
7853 * class.c (duplicate_tag_error): Initialize CLASSTYPE_DECL_LIST.
7854 (unreverse_member_declarations): Reverse CLASSTYPE_DECL_LIST.
7855 (maybe_add_class_template_decl_list): New function.
7856 (add_implicitly_declared_members): Use it.
7857 * decl.c (maybe_process_template_type_declaration): Likewise.
7858 (pushtag): Likewise.
7859 * friend.c (add_friend): Likewise.
7860 (make_friend_class): Likewise.
7861 * semantics.c (finish_member_declaration): Likewise.
7862 (begin_class_definition): Initialize CLASSTYPE_DECL_LIST.
7863 * pt.c (instantiate_class_template): Use CLASSTYPE_DECL_LIST
7864 to process members and friends in the order of declaration.
7865
7866 2002-10-29 Mark Mitchell <mark@codesourcery.com>
7867
7868 PR c++/8287
7869 * decl.c (finish_destructor_body): Create the label to jump to
7870 when returning from a destructor here.
7871 (finish_function_body): Rather than here.
7872
7873 2002-10-25 Zack Weinberg <zack@codesourcery.com>
7874
7875 PR c++/7266
7876 * decl.c (grokdeclarator): Check that TREE_OPERAND 0 of a
7877 SCOPE_REF is not null before dereferencing it.
7878
7879 2002-10-25 Mark Mitchell <mark@codesourcery.com>
7880
7881 * call.c (build_over_call): Use DECL_CONTEXT, not
7882 DECL_VIRTUAL_CONTEXT.
7883 * class.c (modify_vtable_entry): Don't mess with
7884 DECL_VIRTUAL_CONTEXT.
7885 (set_vindex): Remove.
7886 (set_primary_base): Remove vfuns_p parameter.
7887 (determine_primary_base): Likewise.
7888 (modify_all_vtables): Likewise.
7889 (layout_class_type): Likewise. Adjust calls to other functions
7890 accordingly.
7891 (finish_struct_1): Adjust calls to modified functions. Set
7892 DECL_VINDEX here.
7893 * cp-tree.h (lang_type_class): Remove vsize.
7894 (CLASSTYPE_VSIZE): Remove.
7895 (lang_decl): Remove thunks.
7896 (DECL_THUNKS): Adjust.
7897 (DECL_VIRTUAL_CONTEXT): Remove.
7898 (duplicate_decls): Don't copy it.
7899 * pt.c (build_template_decl): Don't set it.
7900 (tsubst_decl): Likewise.
7901 * typeck.c (expand_ptrmemfunc_cst): Don't use it.
7902
7903 * class.c (build_vtbl_initializer): Don't use build_vtable_entry.
7904 (build_vtable_entry): Remove.
7905 * cp-tree.h (BINFO_VIRTUALS): Expand documentation.
7906 (lang_decl): Add thunks.
7907 (DECL_THUNKS): New macro.
7908 * decl.c (duplicate_decls): Copy it.
7909 * method.c (make_thunk): Simplify, and add thunks to DECL_THUNKS.
7910 * semantics.c (emit_associated_thunks): Simplify.
7911
7912 2002-10-24 David Edelsohn <edelsohn@gnu.org>
7913
7914 PR c++/7228
7915 * cp-tree.h (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Check that
7916 lang_type structure exists before accessing field.
7917 (SET_CLASSTYPE_READONLY_FIELDS_NEED_INIT): New macro.
7918 (CLASSTYPE_REF_FIELDS_NEED_INIT): Similar.
7919 (SET_CLASSTYPE_REF_FIELDS_NEED_INIT): New macro.
7920 * class.c (check_field_decls): Use new macros.
7921 * typeck2.c (process_init_constructor): Remove redundant check for
7922 existence of lang_type structure.
7923
7924 2002-10-24 Mark Mitchell <mark@codesourcery.com>
7925
7926 * class.c (end_of_base): New method.
7927 (end_of_class): Use it. Check indirect virtual bases.
7928
7929 * class.c (check_field_decls): Fix typo.
7930
7931 2002-10-23 Mark Mitchell <mark@codesourcery.com>
7932
7933 PR c++/8067
7934 * decl.c (maybe_inject_for_scope_var): Ignore __FUNCTION__ and
7935 related variables.
7936
7937 PR c++/7679
7938 * spew.c (next_token): Do not return an endless stream of
7939 END_OF_SAVED_INPUT tokens.
7940 (snarf_method): Add three END_OF_SAVED_INPUT tokens to the end of
7941 the cached token stream.
7942 (snarf_defarg): Likewise.
7943
7944 2002-10-23 Zack Weinberg <zack@codesourcery.com>
7945
7946 * cp-lang.c (cp_var_mod_type_p): New: C++ hook for
7947 variably_modified_type_p.
7948 * cp-tree.h: Remove prototype of variably_modified_type_p.
7949 * tree.c (variably_modified_type_p): Remove; now implemented
7950 in language-independent code.
7951
7952 2002-10-22 Mark Mitchell <mark@codesourcery.com>
7953
7954 PR c++/6579
7955 * spew.c (snarf_parenthesized_expression): New function.
7956 (snarf_block): Use it.
7957
7958 2002-10-22 Richard Henderson <rth@redhat.com>
7959
7960 * method.c (use_thunk): Always compute vcall_value; assert that
7961 it is not zero. Use can_output_mi_thunk; use output_mi_thunk
7962 for vcall thunks as well.
7963
7964 2002-10-21 Mark Mitchell <mark@codesourcery.com>
7965
7966 * class.c (empty_base_at_nonzero_offset_p): New function.
7967 (layout_nonempty_base_or_field): Do not check for conflicts when
7968 laying out a virtual base using the GCC 3.2 ABI.
7969 (build_base_field): Correct checking for presence of empty classes
7970 at nonzero offsets when clearing CLASSTYPE_NEARLY_EMPTY_P.
7971
7972 * class.c (include_empty_classes): Use normalize_rli.
7973 (layout_class_type): Likewise.
7974
7975 * decl.c (reshape_init): Tweak handling of character arrays.
7976
7977 PR c++/8218
7978 * cp-tree.h (lang_type_class): Add contains_empty_class_p.
7979 (CLASSTYPE_CONTAINS_EMPTY_CLASS_P): New macro.
7980 * class.c (check_bases): Update CLASSTYPE_CONTAINS_EMPTY_CLASS_P.
7981 (check_field_decls): Likewise.
7982 (layout_class_type): Likewise.
7983 (finish_struct_1): Initialize it.
7984 (walk_subobject_offsets): Use it to prune searches.
7985
7986 2002-10-20 Mark Mitchell <mark@codesourcery.com>
7987
7988 * method.c (use_thunk): Compute the vcall index as a HOST_WIDE_INT.
7989 * optimize.c (optimize_function): Replace ASM_OUTPUT_MI_THUNK with
7990 TARGET_ASM_OUTPUT_MI_THUNK in comments.
7991
7992 2002-10-18 Zack Weinberg <zack@codesourcery.com>
7993
7994 * decl.c (start_decl): Point users of the old initialized-
7995 typedef extension at __typeof__.
7996
7997 2002-10-18 Mark Mitchell <mark@codesourcery.com>
7998
7999 * Make-lang.in (method.o): Depend on TARGET_H.
8000 * method.c (target.h): Include it.
8001 (use_thunk): Use target hooks. Use vcall thunks, if available.
8002
8003 2002-10-18 Mark Mitchell <mark@codesourcery.com>
8004
8005 * class.c (base_derived_from): Make sure return value is a bool.
8006
8007 2002-10-18 Mark Mitchell <mark@codesourcery.com>
8008
8009 * class.c (find_final_overrider_data_s): Remove overriding_fn and
8010 overriding_base.
8011 (dfs_base_derived_from): New function.
8012 (base_derived_from): Likewise.
8013 (dfs_find_final_overrider): Use base_derived_from.
8014 (find_final_overrider): Adjust.
8015
8016 2002-10-18 Jason Merrill <jason@redhat.com>
8017
8018 PR c++/8080
8019 * semantics.c (finish_for_cond, finish_while_cond): Don't mess
8020 with condition decls in a template.
8021
8022 2002-10-17 Nathan Sidwell <nathan@codesourcery.com>
8023
8024 * class.c (add_method): Compare template parms too.
8025
8026 2002-10-17 Mark Mitchell <mark@codesourcery.com>
8027
8028 PR c++/7584
8029 * class.c (handle_using_decl): Allow the declaration used to be
8030 from an ambiguous base.
8031
8032 * pt.c (convert_template_argument): Revert this change:
8033 2002-10-16 Mark Mitchell <mark@codesourcery.com>
8034 * pt.c (convert_template_argument): Do not fold non-type
8035 template rguments when inside a template.
8036
8037 * init.c (expand_default_init): Handle brace-enclosed initializers
8038 correctly.
8039
8040 2002-10-16 Mark Mitchell <mark@codesourcery.com>
8041
8042 * mangle.c (write_expression): Correct handling of enumeration
8043 constants.
8044 (write_template_arg): Likewise.
8045 * pt.c (convert_template_argument): Do not fold non-type template
8046 arguments when inside a template.
8047
8048 PR c++/7478
8049 * cvt.c (convert_to_reference): Allow references as the incoming
8050 type.
8051
8052 2002-10-16 Mark Mitchell <mark@codesourcery.com>
8053
8054 PR c++/7524
8055 * method.c (do_build_assign_ref): Use cp_build_qualified_type, not
8056 build_qualified_type.
8057
8058 2002-10-15 Richard Henderson <rth@redhat.com>
8059
8060 * error.c (dump_expr): Use real_to_decimal directly, and with
8061 the new arguments.
8062
8063 2002-10-15 Mark Mitchell <mark@codesourcery.com>
8064
8065 * decl.c (reshape_init): Fix typo.
8066
8067 * cp-tree.h (operator_name_info_t): Add arity.
8068 * lex.c (init_operators): Initialize it.
8069 * mangle.c (write_conversion_operator_name): New function.
8070 (write_unqualified_name): Use it.
8071 (write_template_args): Accept template arguments as a TREE_LIST.
8072 (write_expression): Adjust handling of qualified names to match
8073 specification.
8074
8075 2002-10-15 Jason Merrill <jason@redhat.com>
8076
8077 * call.c (call_builtin_trap): New fn.
8078 (convert_arg_to_ellipsis): Use it. Downgrade error to warning.
8079 (build_call): Don't set current_function_returns_abnormally outside
8080 a function.
8081
8082 2002-10-14 Mark Mitchell <mark@codesourcery.com>
8083
8084 * class.c (check_field_decls): Remove empty_p parameter. Instead,
8085 clear CLASSTYPE_EMPTY_P.
8086 (build_base_field): Likewise.
8087 (build_base_fields): Likewise.
8088 (check_bases_and_members): Likewise.
8089 (create_vtbl_ptr): Likewise.
8090 (layout_class_type): Likewise. Ensure that empty classes have
8091 size zero when used as base classes in the 3.2 ABI.
8092 (finish_struct_1): Initialize CLASSTYPE_EMPTY_P and
8093 CLASSTYPE_NEARLY_EMPTY_P. Adjust calls to avoid passing empty_p
8094 parameter.
8095 (is_empty_class): Correct definition when using post-3.2 ABI.
8096 * cp-tree.h (lang_type_class): Add empty_p.
8097 (CLASSTYPE_EMPTY_P): New macro.
8098
8099 2002-10-12 Nathan Sidwell <nathan@codesourcery.com>
8100
8101 * init.c (build_delete): Do not apply save_expr for arrays.
8102 (build_vec_delete): Likewise.
8103
8104 2002-10-14 Mark Mitchell <mark@codesourcery.com>
8105
8106 * decl.c (layout_var_decl): Call layout_decl even for variables
8107 whose type is an array with unspecified bounds.
8108
8109 PR c++/7176
8110 * lex.c (do_identifier): Add another option for the parsing
8111 parameter.
8112 * parse.y (do_id): Use it.
8113
8114 2002-10-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
8115
8116 PRs C++/6803, C++/7721 and C++/7803
8117 * decl.c (grokdeclarator): Gracefully handle template-name as
8118 decl-specifier.
8119
8120 2002-10-11 Jason Molenda <jmolenda@apple.com>
8121
8122 * init.c (build_field_list): Provide uses_unions_p with a default
8123 value.
8124
8125 2002-10-11 Mark Mitchell <mark@codesourcery.com>
8126
8127 PR c++/5661
8128 * cp-tree.h (variably_modified_type_p): New function.
8129 (grokdeclarator) Tighten check for variably modified types as
8130 fields.
8131 * pt.c (convert_template_argument): Do not allow variably modified
8132 types as template arguments.
8133 * tree.c (variably_modified_type_p): New function.
8134
8135 * NEWS: Document removal of "new X = ..." extension.
8136 * class.c (initialize_array): Set TREE_HAS_CONSTRUCTOR on
8137 brace-enclosed initializers.
8138 * cp-tree.h (CP_AGGREGATE_TYPE_P): New macro.
8139 (initialize_local_var): Remove declaration.
8140 (expand_static_init): Likewise.
8141 * decl.c (next_initializable_field): New function.
8142 (reshape_init): Likewise.
8143 (check_initializer): Use them. Build dynamic initializer for
8144 aggregates here too.
8145 (initialize_local_var): Simplify, and incorporate cleanup
8146 insertion code as well.
8147 (destroy_local_var): Remove.
8148 (cp_finish_decl): Tidy.
8149 (expand_static_init): Fold checks for whether or not a variable
8150 needs initialization into this function. Simplify.
8151 * decl2.c (do_static_initialization): Simplify.
8152 * init.c (build_init): Do not set TREE_SIDE_EFFECTS when it will
8153 be done for us automatically.
8154 (expand_default_init): Handle brace-enclosed initializers
8155 correctly.
8156 (expand_aggr_init_1): Remove RTL-generation code.
8157 (build_vec_init): Remove "new X = ..." support.
8158 * parse.y (new_initializer): Likewise.
8159 * rtti.c (get_pseudo_ti_init): Set TREE_HAS_CONSTRUCTOR on
8160 brace-enclosed initializer.
8161 (create_pseudo_type_info): Likewise.
8162 * typeck2.c (store_init_value): Don't try to handle digest_init
8163 being called more than once.
8164 (digest_init): Tidy handling of brace-enclosed initializers.
8165
8166 2002-10-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
8167
8168 * decl.c (typename_hash): Use htab_hash_pointer.
8169
8170 2002-10-10 Jim Wilson <wilson@redhat.com>
8171
8172 * decl.c (duplicate_decls): Don't call decl_attributes.
8173
8174 2002-10-09 Zack Weinberg <zack@codesourcery.com>
8175
8176 PR c/7353
8177 * decl.c (start_decl): Unconditionally issue error for
8178 'typedef foo = bar'.
8179 (cp_finish_decl): Remove special case for TYPE_DECL with initializer.
8180 (grokdeclarator): Remove redundant error for 'typedef foo = bar'.
8181
8182 2002-10-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
8183
8184 * decl2.c (prune_vtable_vardecl): Delete unused function.
8185
8186 2002-10-03 Mark Mitchell <mark@codesourcery.com>
8187
8188 PR c++/7754
8189 * decl2.c (finish_anon_union): Do not expand anonymous unions when
8190 procesing template functions.
8191 * pt.c (tsubst_decl, case VAR_DECL): Try to complete the variable
8192 type. Call layout_decl.
8193 (tsubst_expr, case DECL_STMT): Handle anonymous unions.
8194
8195 2002-10-07 Richard Henderson <rth@redhat.com>
8196
8197 * decl2.c, pt.c: Revert c++/7754 fix.
8198
8199 2002-10-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
8200
8201 PR c++/7804
8202 * error.c (dump_expr) [REAL_CST]: Output in decimal format.
8203
8204 2002-10-03 Mark Mitchell <mark@codesourcery.com>
8205
8206 PR c++/7931
8207 * pt.c (for_each_template_parm_r): Handle BASELINKs.
8208
8209 PR c++/7754
8210 * decl2.c (finish_anon_union): Do not expand anonymous unions when
8211 procesing template functions.
8212 * pt.c (tsubst_decl, case VAR_DECL): Try to complete the variable
8213 type. Call layout_decl.
8214 (tsubst_expr, case DECL_STMT): Handle anonymous unions.
8215
8216 2002-10-03 Mark Mitchell <mark@codesourcery.com>
8217
8218 PR c++/8006
8219 * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Handle instances of template
8220 template parameters.
8221 (globals): Add entity and need_abi_warning.
8222 (decl_is_template_id): Use TYPE_TEMPLATE_INFO, not
8223 CLASSTYPE_TEMPLATE_INFO.
8224 (is_std_substitution): Use CLASSTYPE_TI_TEMPLATE, not
8225 TYPE_TI_TEMPLATE.
8226 (write_prefix): Handle typename types correctly.
8227 (write_template_prefix): Handle template template parameters
8228 correctly.
8229 (start_mangling): Add entity parameter.
8230 (finish_mangling): Warn about names whose mangling will change.
8231 (mangle_decl_string): Adjust.
8232 (mangle_type_string): Likewise.
8233 (mangle_special_for_type): Likewise.
8234 (mangle_ctor_vtbl_for_type): Likewise.
8235 (mangle_thunk): Likewise.
8236 (mangle_guard_variable): Likewise.
8237 (mangle_ref_init_variable): Likewise.
8238
8239 2002-10-02 Mark Mitchell <mark@codesourcery.com>
8240
8241 PR c++/7188.
8242 * cp-tree.def (CTOR_INITIALIZER): Use one slot, not two.
8243 * cp-tree.h (emit_base_init): Rename to ....
8244 (emit_mem_initializers): ... this.
8245 (expand_member_init): Change prototype.
8246 * init.c (perform_member_init): Compute explicit, rather than
8247 requiring it as a parameter.
8248 (sort_member_init): Rename to ...
8249 (sort_mem_initializers): ... this. Process bases and data members
8250 together.
8251 (sort_base_init): Remove.
8252 (emit_base_init): Rename to ...
8253 (emit_mem_initializers): ... this.
8254 (expand_aggr_vbase_init_1): Remove.
8255 (construct_virtual_bases): Rename to ...
8256 (construct_virtual_base): ... this.
8257 (expand_member_init): Rework handling of base initializers.
8258 * method.c (do_build_copy_constructor): Use
8259 finish_mem_initializers.
8260 * parse.y (member_init): Adjust calls to expand_member_init.
8261 * pt.c (tsubst_expr): Simplify CTOR_INITIALIZER case.
8262 (tsubst_initializer_list): Use expand_member_init.
8263 * semantics.c (finish_mem_intiailizers): Simplify.
8264
8265 2002-10-02 Matt Austern <austern@apple.com>
8266 * decl.c (walk_vtables_r): Fixed typo that caused result to
8267 never get a nonzero value.
8268
8269 2002-10-02 Roger Sayle <roger@eyesopen.com>
8270
8271 PR optimization/6627
8272 * cp-tree.h (enum ptrmemfunc_vbit_where_t): Delete definition
8273 from here, and move it to tree.h.
8274 * decl.c (cxx_init_decl_processing): If storing the vbit
8275 in function pointers, ensure that force_align_functions_log
8276 is atleast one.
8277
8278 2002-10-02 Matt Austern <austern@apple.com>
8279
8280 * class.c (check_field_decls): Changed warning about const member
8281 variables so that it doesn't get issued for a class aggregate.
8282
8283 2002-10-01 Mark Mitchell <mark@codesourcery.com>
8284
8285 * decl.c (cp_finish_decl): Make sure array types are laid out,
8286 even if the array bounds are unknown.
8287
8288 2002-10-01 Steve Ellcey <sje@cup.hp.com>
8289
8290 * class.c (build_vtbl_initializer): Change build_c_cast
8291 to build1.
8292
8293 2002-10-01 Mark Mitchell <mark@codesourcery.com>
8294
8295 * decl.c (cp_finish_decl): Make sure array types are laid out,
8296 even if the array bounds are unknown.
8297
8298 * decl.c (cp_finish_decl): Correct check for dynamic
8299 initialization of thread-local storage.
8300
8301 2002-09-30 Nathan Sidwell <nathan@codesourcery.com>
8302
8303 * tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also
8304 overloaded.
8305
8306 2002-09-30 Steve Ellcey <sje@cup.hp.com>
8307
8308 * class.c (build_vtbl_initializer): Add cast.
8309 (add_vcall_offset_vtbl_entries_1):
8310 Use TARGET_VTABLE_DATA_ENTRY_DISTANCE for offset.
8311
8312 2002-09-30 Mark Mitchell <mark@codesourcery.com>
8313
8314 * class.c (walk_subobject_offsets): Correct the calculation of
8315 offsets for virtual bases. Correct the counting of array
8316 elements.
8317 (layout_nonempty_base_or_field): Simplify. Correct the
8318 calculation of offsets to be propagated through the binfo
8319 hierarchy.
8320 (build_base_field): Avoid creating a FIELD_DECL for empty bases.
8321 Add the FIELD_DECL to TYPE_FIELDS.
8322 (build_base_fields): Adjust accordingly.
8323 (layout_virtual_bases): Use build_base_field.
8324 (end_of_class): Return a tree, not an integer.
8325 (warn_about_ambiguous_direct_bases): Rename to ...
8326 (warn_about_ambiguous_bases): ... this.
8327 (include_empty_classes): New function.
8328 (layout_class_type): Create an alternative version of the type to
8329 be used when as a base class type. Do not call
8330 finish_record_layout until we are done laying out the class.
8331 * cp-tree.h (lang_type_class): Remove size, size_unit. Add
8332 as_base.
8333 (CLASSTYPE_SIZE): Reimplement.
8334 (CLASSTYPE_SIZE_UNIT): Likewise.
8335 (CLASSTYPE_ALIGN): Likweise.
8336 (CLASSTYPE_USER_ALIGN): Likewise.
8337 (CLASSTYPE_AS_BASE): New macro.
8338 (DECL_INITIALIZED_P): Likewise.
8339 (extract_init): Remove prototype.
8340 (build_forced_zero_init): Rename to ...
8341 (build_zero_init): ... this.
8342 (force_store_init_value): Remove.
8343 * decl.c (obscure_complex_init): Remove.
8344 (duplicate_decls): Copy DECL_INITIALIZED_P.
8345 (check_initializer): Do not leave junk in DECL_INITIAL.
8346 (cp_finish_decl): Handle zero-initialization of entities with
8347 static storage duration.
8348 * expr.c (extract_init): Remove.
8349 * init.c (build_forced_zero_init): Remove.
8350 (build_zero_init): New function.
8351 (build_default_init): Use it.
8352 (build_field_list): Skip FIELD_DECLs for base subobjects.
8353 (push_base_cleanups): Likewise.
8354 * method.c (do_build_assign_ref): Likewise.
8355 (synthesize_exception_spec): Likewise.
8356 * pt.c (tsubst_decl): Clear DECL_INITIALIZED_P.
8357 (regenerate_decl_from_template): To not set DECL_INITIAL for a
8358 static data member whose initialization took place in its class.
8359 (instantiate_decl): Do not pass an initializer to cp_finish_decl
8360 in that situation.
8361 * search.c (dfs_push_decls): Skip FIELD_DECLs for base subobjects.
8362 (dfs_unuse_fields): Likewise.
8363 * tree.c (pod_type_p): Handle error_mark_node.
8364 (zero_init_p): Likewise.
8365 * typeck.c (lookup_anon_field): Skip FIELD_DECLs for base
8366 subobjects.
8367 * typeck2.c (store_init_value): Remove #if 0'd code.
8368 (force_store_init_value): Remove.
8369 (process_init_constructor): Use build_zero_init.
8370
8371 2002-09-29 Nathan Sidwell <nathan@codesourcery.com>
8372
8373 PR c++/7788
8374 * rtti.c (unemitted_tinfo_decl_p): Check it has a field.
8375
8376 2002-09-29 Kazu Hirata <kazu@cs.umass.edu>
8377
8378 * cp-tree.h: Fix comment typos.
8379 * decl.c: Likewise.
8380 * pt.c: Likewise.
8381
8382 2002-09-25 Mark Mitchell <mark@codesourcery.com>
8383
8384 * cp/class.c (contains_empty_class_p): New method.
8385 (walk_subobject_offsets): Correct computation of field offset.
8386 (layout_empty_base): Correct placement of emtpy base classes.
8387 (layout_class_type): Warn about ABI changes.
8388
8389 2002-09-23 Mark Mitchell <mark@codesourcery.com>
8390
8391 * cp/class.c (layout_virtual_bases): Do not round the size of the
8392 type to a multiple of the alignment before laying out virtual bases.
8393 (layout_class_type): Correct handling of bit-fields that are wider
8394 than their type inside unions. Round the size of the type to a
8395 even number of bytes when computing the size without virtual
8396 bases.
8397 * cp/cp-tree.h (abi_version_at_least): New macro.
8398
8399 2002-09-21 Kazu Hirata <kazu@cs.umass.edu>
8400
8401 * ChangeLog: Follow spelling conventions.
8402 * ChangeLog.2: Likewise.
8403 * call.c: Likewise.
8404 * class.c: Likewise.
8405 * cp-tree.h: Likewise.
8406 * cvt.c: Likewise.
8407 * decl.c: Likewise.
8408 * decl2.c: Likewise.
8409 * except.c: Likewise.
8410 * friend.c: Likewise.
8411 * g++spec.c: Likewise.
8412 * init.c: Likewise.
8413 * lex.c: Likewise.
8414 * mangle.c: Likewise.
8415 * method.c: Likewise.
8416 * operators.def: Likewise.
8417 * optimize.c: Likewise.
8418 * pt.c: Likewise.
8419 * rtti.c: Likewise.
8420 * search.c: Likewise.
8421 * semantics.c: Likewise.
8422 * spew.c: Likewise.
8423 * tree.c: Likewise.
8424 * typeck.c: Likewise.
8425
8426 2002-09-18 Devang Patel <dpatel@apple.com>
8427
8428 * cp/cp-tree.h: New prototype for walk_vtabls().
8429 * cp/decl.c (walk_vtables_r): New function.
8430 (struct cp_binding_level): Add new members, namespaces,
8431 names_size and vtables.
8432 (add_decl_to_level): Add decl in namespaces or vtables
8433 chain, if conditions match.
8434 (walk_vtables): New function.
8435 (walk_namespaces_r): Travers separate namespace chain
8436 for namespace decls.
8437 (wrapup_globals_for_namespace): Use names_size instead
8438 of list_length().
8439 * cp/decl2.c (finish_file): Use walk_vtables() instead of
8440 walk_globals() to walk vtable decls.
8441
8442 2002-09-18 Nathan Sidwell <nathan@codesourcery.com>
8443
8444 * decl.c (grokdeclarator): Use assert, not internal_error. Don't
8445 ICE with invalid pointers & references.
8446
8447 2002-09-17 Zack Weinberg <zack@codesourcery.com>
8448
8449 * Make-lang.in: Remove all references to the demangler.
8450 * cxxfilt.c: Moved to binutils.
8451
8452 2002-09-16 Nathan Sidwell <nathan@codesourcery.com>
8453
8454 PR c++/7718
8455 * pt.c (tsubst_decl): Remove assert.
8456
8457 Remove DR 295 implementation.
8458 * pt.c (check_cv_quals_for_unify): Disable function & method cases.
8459 * tree.c (cp_build_qualified_type_real): Likewise. Don't warn
8460 about ignoring volatile qualifiers.
8461
8462 * search.c (lookup_member): Correct documentation.
8463
8464 2002-09-16 Geoffrey Keating <geoffk@apple.com>
8465
8466 * cp-tree.h (union lang_tree_node): Add chain_next option.
8467
8468 2002-09-16 Nathan Sidwell <nathan@codesourcery.com>
8469
8470 * parse.y (parse_finish_call_expr): Check lookup_member result.
8471
8472 PR c++/7015
8473 * semantic.c (finish_asm_stmt): Fix operand/output_operands
8474 thinko.
8475 * typeck.c (c_expand_asm_operands): Protect from error_mark_node.
8476
8477 2002-09-15 Nathan Sidwell <nathan@codesourcery.com>
8478
8479 PR c++/7919
8480 * call.c (build_over_call): Convert this pointer for fns found by
8481 using decls.
8482
8483 2002-09-15 Kazu Hirata <kazu@cs.umass.edu>
8484
8485 * ChangeLog: Follow spelling conventions.
8486 * ChangeLog.1: Likewise.
8487
8488 2002-09-14 Nathan Sidwell <nathan@codesourcery.com>
8489
8490 PR c++/7768
8491 * pt.c (build_template_decl): Copy DECL_DESTRUCTOR_P.
8492
8493 2002-09-14 Kazu Hirata <kazu@cs.umass.edu>
8494
8495 * error.c: Fix comment formatting.
8496 * except.c: Likewise.
8497 * expr.c: Likewise.
8498 * friend.c: Likewise.
8499 * g++spec.c: Likewise.
8500 * init.c: Likewise.
8501 * lex.c: Likewise.
8502 * mangle.c: Likewise.
8503 * method.c: Likewise.
8504 * optimize.c: Likewise.
8505 * pt.c: Likewise.
8506 * rtti.c: Likewise.
8507 * search.c: Likewise.
8508 * semantics.c: Likewise.
8509 * spew.c: Likewise.
8510 * tree.c: Likewise.
8511 * typeck.c: Likewise.
8512 * typeck2.c: Likewise.
8513
8514 2002-09-13 Matt Austern <austern@apple.com>
8515
8516 PR C++/7828
8517 * cp/cp-tree.h, cp/tree.c: New function non_cast_lvalue_p.
8518 * cp/call.c: Change call-by-const-reference mechanism to use
8519 non_cast_lvalue_p when deciding whether the create a temporary.
8520 We need a temporary when passing, e.g. (long) x by const ref.
8521
8522 2002-09-13 Nathan Sidwell <nathan@codesourcery.com>
8523
8524 * pt.c (unify, ARRAY_TYPE): Element type can be more qualified.
8525
8526 2002-09-13 Kazu Hirata <kazu@cs.umass.edu>
8527
8528 * decl.c: Fix comment formatting.
8529 * decl2.c: Likewise.
8530
8531 2002-09-12 Kazu Hirata <kazu@cs.umass.edu>
8532
8533 * call.c: Fix comment formatting.
8534 * class.c: Likewise.
8535 * cp-lang.c: Likewise.
8536 * cp-tree.h: Likewise.
8537 * cvt.c: Likewise.
8538
8539 2002-09-11 Zack Weinberg <zack@codesourcery.com>
8540
8541 * Make-lang.in: Build cp/cxxfilt.o from $(srcdir)/cp/cxxfilt.c,
8542 and c++filt from cxxfilt.o + version.o + $(LIBDEPS).
8543 * cxxfilt.c: New file: split from libiberty/cplus-dem.c, with
8544 minor adjustments (use version_string, eliminate yet another
8545 duplicate of xmalloc)
8546
8547 2002-09-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
8548
8549 * cp-tree.h (require_complete_eh_spec_types): Add prototype.
8550
8551 2002-09-05 Jason Merrill <jason@redhat.com>
8552
8553 * typeck2.c (add_exception_specifier): Only pedwarn for an
8554 incomplete type.
8555 (require_complete_eh_spec_types): New fn.
8556 (cxx_incomplete_type_diagnostic): Also support pedwarning.
8557 * typeck.c (complete_type_or_diagnostic): Likewise.
8558 * call.c (build_call): Call require_complete_eh_spec_types.
8559 * rtti.c (get_pseudo_ti_desc): Give an error rather than aborting
8560 on an incomplete type.
8561
8562 2002-09-04 Jakub Jelinek <jakub@redhat.com>
8563
8564 * decl.c (start_cleanup_fn): Clear interface_only before
8565 start_function, restore it afterwards.
8566
8567 2002-09-02 Nathan Sidwell <nathan@codesourcery.com>
8568
8569 * cp-tree.h (finish_builtin_type): Remove.
8570 * decl2.c (finish_builtin_type): Move to common code.
8571 * decl.c (build_ptrmemfunc_type): Adjust.
8572 * rtti.c (create_pseudo_type_info): Adjust.
8573 (create_tinfo_types): Adjust.
8574
8575 2002-08-31 Jason Merrill <jason@redhat.com>
8576
8577 * cp-lang.c (cp_expr_size): Allow initialization from a
8578 CONSTRUCTOR.
8579
8580 2002-08-30 Richard Henderson <rth@redhat.com>
8581
8582 PR opt/7515
8583 * tree.c: Include target.h.
8584 (cp_cannot_inline_tree_fn): Don't auto-inline functions that
8585 don't bind locally.
8586 * Makefile.in (tree.o): Update.
8587
8588 2002-08-27 Mark Mitchell <mark@codesourcery.com>
8589
8590 * class.c (layout_virtual_bases): Warn about bugs in G++ that
8591 result in incorrect object layouts.
8592 (layout_class_type): Likewise.
8593
8594 2002-08-24 Matt Austern <austern@apple.com>
8595
8596 * tree.c (lvalue_p_1): Add argument for whether casts of lvalues
8597 are allowable.
8598 (real_lvalue_p): Update caller.
8599 (lvalue_p): Ditto.
8600 (non_cast_lvalue_or_else): New.
8601 * tree.h: Declare it.
8602 * typeck.c (build_unary_op): Use non_cast_lvalue_or_else.
8603
8604 2002-08-22 Mark Mitchell <mark@codesourcery.com>
8605
8606 * typeck.c (build_class_member_access_expr): Handle COMPOUND_EXPR
8607 and COND_EXPR specially; fix error message output.
8608
8609 2002-08-22 Jason Merrill <jason@redhat.com>
8610
8611 * pt.c (tsubst_expr): RETURN_EXPR is now RETURN_STMT_EXPR.
8612 * semantics.c (nullify_returns_r): Likewise.
8613
8614 2002-08-17 Gabriel Dos Reis <gdr@integrable-solutions.net>
8615
8616 Fix PR/7621
8617 * typeck.c (finish_class_member_access_expr): Diagnose cases where
8618 name lookup finds nothing.
8619
8620 2002-08-15 Jason Merrill <jason@redhat.com>
8621
8622 * semantics.c (finish_then_clause): Remove redundant assignment.
8623 (finish_if_stmt, begin_switch_stmt, finish_switch_stmt): Move the
8624 extra binding level outside the if/switch statement.
8625 (finish_while_cond, finish_for_cond): Rewrite complex condition
8626 into the loop body.
8627
8628 2002-08-15 Alexandre Oliva <aoliva@redhat.com>
8629
8630 * parse.y (sizeof, alignof, typeof): New non-terminals to
8631 increment skip_evaluation. Replace terminals with them and
8632 decrement skip_evaluation at the end of rules using them.
8633 * decl2.c (mark_used): Don't assemble_external if
8634 skipping evaluation.
8635
8636 2002-08-15 Gabriel Dos Reis <gdr@nerim.net>
8637
8638 Fix PR/7504
8639 * parse.y (parse_finish_call_expr): Handle incomplete
8640 type used to name a scope.
8641
8642 2002-08-15 Nathan Sidwell <nathan@codesourcery.com>
8643
8644 PR c++/7598
8645 * typeck.c (build_unary_op): Fold offsetof idiom. Fixes
8646 regression caused by my 2002-08-08 patch.
8647
8648 2002-08-13 Mark Mitchell <mark@codesourcery.com>
8649
8650 * decl.c (pushdecl_class_level): Honor requests to bind names to
8651 OVERLOADs.
8652
8653 2002-08-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
8654
8655 * decl2.c (build_call_from_tree): Fix uninitialized variable.
8656 * parse.y (parse_finish_call_expr): Likewise.
8657 * repo.c (old_args, old_dir, old_main): Const-ify.
8658
8659 2002-08-11 Gabriel Dos Reis <gdr@nerim.net>
8660
8661 * decl.c (duplicate_decls): Replace DECL_SOURCE_FILE
8662 DECL_SOURCE_LINE with DECL_SOURCE_LOCATION.
8663 * optimize.c (maybe_clone_body): Likewise.
8664 * pt.c (tsubst_enum): Likewise.
8665 (lookup_template_class): Likewise.
8666 * tree.c (cp_copy_res_decl_for_inlining): Likewise.
8667
8668 2002-08-10 Neil Booth <neil@daikokuya.co.uk>
8669
8670 * lang-specs.h: Remove -ansi.
8671
8672 2002-08-10 Nathan Sidwell <nathan@codesourcery.com>
8673
8674 * tree.c (maybe_dummy_object): Replace // with /* */
8675
8676 2002-08-09 Mark Mitchell <mark@codesourcery.com>
8677
8678 * call.c (standard_conversion): Use build_ptrmem_type.
8679 * cp-tree.h (build_ptrmem_type): New function.
8680 (adjust_result_of_qualified_name_lookup): Likewise.
8681 * decl.c (grokvardecl): Do not look for OFFSET_TYPEs to indicate
8682 static data members.
8683 (build_ptrmem_type): New function.
8684 (grokdeclarator): Do not use build_offset_type when encountering a
8685 qualified name.
8686 * parse.y (parse_finish_call_expr): Use
8687 adjust_result_of_qualified_name_lookup.
8688 * search.c (adjust_result_of_qualified_name_lookup): New function.
8689 * typeck.c (qualify_type_recursive): Use TYPE_PTRMEM_* rather than
8690 accessing OFFSET_TYPEs directly.
8691
8692 2002-08-08 Mike Stump <mrs@apple.com>
8693
8694 * call.c (add_builtin_candidate): legal -> valid, illegal -> invalid.
8695 (type_decays_to): Likewise.
8696 * class.c (find_final_overrider): Likewise.
8697 (maybe_note_name_used_in_class): Likewise.
8698 * decl.c (current_tmpl_spec_kind): Likewise.
8699 (add_binding): Likewise.
8700 (push_class_binding): Likewise.
8701 (duplicate_decls): Likewise.
8702 (layout_var_decl): Likewise.
8703 (grokfndecl): Likewise.
8704 (grokdeclarator): Likewise.
8705 (check_default_argument): Likewise.
8706 * decl2.c (handle_class_head): Likewise.
8707 * error.c (dump_template_decl): Likewise.
8708 * init.c (build_offset_ref): Likewise.
8709 * pt.c (check_specialization_scope): Likewise.
8710 (determine_specialization): Likewise.
8711 (check_explicit_specialization): Likewise.
8712 (maybe_check_template_type): Likewise.
8713 (process_partial_specialization): Likewise.
8714 (check_default_tmpl_args): Likewise.
8715 (push_template_decl_real): Likewise.
8716 (convert_template_argument): Likewise.
8717 (try_class_unification): Likewise.
8718 (get_bindings_real): Likewise.
8719 (do_decl_instantiation): Likewise.
8720 * semantics.c (begin_function_definition): Likewise.
8721 (finish_member_declaration): Likewise.
8722 (check_multiple_declarators): Likewise.
8723 * typeck.c (comp_array_types): Likewise.
8724 (comptypes): Likewise.
8725 (expr_sizeof): Likewise.
8726 (build_binary_op): Likewise.
8727 (dubious_conversion_warnings): Likewise.
8728 (check_return_expr): Likewise.
8729
8730 2002-08-08 Mark Mitchell <mark@codesourcery.com>
8731
8732 * typeck.c (build_class_member_access_expr): Do not return
8733 error_mark_node when no error has occurred.
8734
8735 2002-08-08 Nathan Sidwell <nathan@codesourcery.com>
8736
8737 * typeck.c (build_component_addr): Remove.
8738 (build_unary_op): Just check it's not a bitfield, and then build
8739 an ADDR_EXPR.
8740
8741 2002-08-08 Nathan Sidwell <nathan@codesourcery.com>
8742
8743 * class.c (convert_to_base): Correct check for error_mark_node.
8744 (create_vtable_ptr): Remove unused VFUNS_P parm.
8745
8746 2002-08-08 Nathan Sidwell <nathan@codesourcery.com>
8747
8748 * cp/Make-lang.in (c++.mostlyclean): Remove coverage files.
8749
8750 2002-08-07 Mark Mitchell <mark@codesourcery.com>
8751
8752 Rework build_component_ref.
8753 * call.c (build_vfield_ref): Do not go through build_component_ref.
8754 (build_field_call): Use build_class_member_access_expr.
8755 (build_user_type_conversion_1): Use BASELINK_FUNCTIONS.
8756 (build_object_call): Likewise.
8757 * class.c (convert_to_base): New function.
8758 (type_requires_array_cookie): Use BASELINK_FUNCTIONS.
8759 (instantiate_type): Handle BASELINKs.
8760 * cp-tree.def (BASELINK): New tree code.
8761 * cp-tree.h (BASELINK_P): Reimplement.
8762 (SET_BASELINK_P): Remove.
8763 (BASELINK_BINFO): Reimplement.
8764 (BASELINK_FUNCTIONS): Likewise.
8765 (BASELINK_ACCESS_BINFO): Likewise.
8766 (BASELINK_OPTYPE): Likewise.
8767 (convert_to_base): New function.
8768 (name_p): Likewise.
8769 (build_object_ref): Remove.
8770 (build_component_ref_1): Likewise.
8771 (build_component_ref): Likewise.
8772 (build_x_component_ref): Likewise.
8773 (build_class_member_access_expr): New function.
8774 (finish_class_member_access_expr): Likewise.
8775 (build_ptrmemfunc_access_expr): Likewise.
8776 * decl.c (grokdeclarator): Handle BASELINKs.
8777 * decl2. (build_expr_from_tree): Handle COMPONENT_REFs by using
8778 finish_class_member_access_expr.
8779 (arg_assoc): Handle BASELINKs.
8780 (do_class_using_decl): Likewise.
8781 * error.c (dump_decl): Likewise.
8782 (dump_expr): Use build_ptrmemfunc_access_expr.
8783 * except.c (dtor_nothrow): Use CLASSTYPE_DESTRUCTORS to find
8784 destructors.
8785 (build_throw): Use BASELINK_FUNCTIONS.
8786 * init.c (perform_member_init): Use
8787 build_class_member_access_expr.
8788 (build_offset_ref): Handle BASELINKs. Use
8789 build_class_member_access_expr.
8790 * method.c (hack_identifier): Likewise.
8791 * parse.y (do_id): Use BASELINK, not TREE_LIST.
8792 (primary): Remove uses of build_object_ref.
8793 * pt.c (lookup_template_function): Handle BASELINKs.
8794 (resolve_overloaded_unification): Likewise.
8795 * search.c (build_baselink): Build a BASELINK, not a TREE_LIST.
8796 (lookup_field): Use BASELINK, not TREE_LIST.
8797 (lookup_fnfiels): Likewise.
8798 (setup_class_bindings): Likewise.
8799 * semantics.c (finish_object_call_expr): Do not use
8800 build_method_call when we already know what function is being
8801 called.
8802 * spew.c (identifier_type): Use BASELINK, not TREE_LIST.
8803 * tree.c (really_overloaded_fn): Use OVL_CHAIN for OVERLOADs, not
8804 TREE_CHAIN.
8805 (name_p): New function.
8806 * typeck.c (build_object_ref): Remove.
8807 (build_component_ref_1): Likewise.
8808 (build_x_component_ref): Likewise.
8809 (build_class_member_access_expr): New function.
8810 (finish_class_member_access_expr): Likewise.
8811 (build_ptrmemfunc_access_expr): Likewise.
8812 (get_member_function_from_ptrfunc): Use
8813 build_ptrmemfunc_access_expr.
8814 (build_binary_op): Likewise.
8815 (build_unary_op): Likewise.
8816 (build_ptrmemfunc): Likewise.
8817 (pfn_from_ptrmemfunc): Likewise.
8818 * typeck2.c (build_m_component_ref): Adjust comment.
8819
8820 2002-08-07 Neil Booth <neil@daikokuya.co.uk>
8821
8822 * Make-lang.in (CXX_C_OBJS): Update.
8823 * cp-lang.c (LANG_HOOKS_DECODE_OPTION): Use c_common_decode_option.
8824 * cp-tree.h (cxx_decode_option): Remove.
8825 * decl2.c (compare_options, lang_f_options, unsupported_options,
8826 cxx_decode_option): Remove.
8827
8828 2002-08-06 Gabriel Dos Reis <gdr@nerim.net>
8829
8830 * typeck.c (build_x_unary_op): Handle pointer-to-member.
8831
8832 2002-08-05 Geoffrey Keating <geoffk@redhat.com>
8833
8834 * class.c: Don't include obstack.h.
8835 (popclass):
8836 * decl2.c: Delete bogus comment.
8837 * error.c: Don't include obstack.h.
8838 * except.c: Likewise.
8839 (dump_type): Correct comment.
8840 * method.c: Don't include obstack.h.
8841 * tree.c: Likewise.
8842
8843 2002-08-04 Gabriel Dos Reis <gdr@nerim.net>
8844
8845 Fix PR/2213
8846 * cvt.c (cp_convert_to_pointer): Reject conversions from integral
8847 expressions to pointer-to-data-member of pointer-to-member-functions.
8848
8849 2002-08-04 Geoffrey Keating <geoffk@redhat.com>
8850
8851 * cvt.c (ocp_convert): Delete obsolete code.
8852 * parse.y (permanent_obstack): Delete declaration.
8853 * pt.c (permanent_obstack): Delete declaration.
8854 * repo.c (permanent_obstack): Delete declaration.
8855 (open_repo_file): Use xmalloc instead of permanent_obstack.
8856 (init_repo): Use xstrdup instead of permanent_obstack.
8857
8858 2002-08-04 Nathan Sidwell <nathan@codesourcery.com>
8859
8860 * cp-tree.h (VF_DERIVED_VALUE): Remove.
8861 * class.c (finish_struct_1): Use VF_BINFO_VALUE not VF_DERIVED_VALUE.
8862
8863 2002-08-03 Nathan Sidwell <nathan@codesourcery.com>
8864
8865 PR 7470.
8866 C++ ABI change - vfunc ordering.
8867 * class.c (add_virtual_function): Remove.
8868 (dfs_modify_all_vtables): Take list of all declared
8869 virtuals. Assign all that are not in primary base.
8870 (check_for_override): Adjust comments.
8871 (create_vtable_ptr): Take single list of virtuals. Build chain
8872 of declared virtuals here.
8873 (layout_class_type): Take single list of virtuals. Adjust.
8874 (finish_struct_1): Keep virtuals on single list. Adjust.
8875
8876 2002-08-02 Mark Mitchell <mark@codesourcery.com>
8877
8878 * init.c (build_member_call): Use build_new_method_call, not
8879 build_method_call.
8880
8881 2002-08-02 Krister Walfridsson <cato@df.lth.se>
8882
8883 * Make-lang.in (spew.o, lex.o, pt.o): Add path to parse.h dependencies.
8884
8885 2002-08-02 Mark Mitchell <mark@codesourcery.com>
8886
8887 * call.c (build_method_call): Issue a more helpful error message
8888 about ambiguous method names.
8889
8890 2002-08-02 Nathan Sidwell <nathan@codesourcery.com>
8891
8892 * tree.c (build_shared_int_cst): Make cache file scope, and
8893 GTY it.
8894
8895 2002-08-02 Jason Merrill <jason@redhat.com>
8896
8897 * cp-lang.c (LANG_HOOKS_EXPR_SIZE): Define.
8898 (cp_expr_size): New fn.
8899 * call.c (build_over_call): Lose empty class hackery.
8900 (convert_arg_to_ellipsis): Promote non-POD warning to error.
8901 * typeck.c (build_modify_expr): Don't use save_expr on an lvalue.
8902
8903 * semantics.c (expand_body): Do tree optimization in the function
8904 context, too.
8905
8906 2002-08-01 Neil Booth <neil@daikokuya.co.uk>
8907
8908 * cp-tree.h: Move all warning and flag declarations to c-common.h.
8909 * decl.c: Move all warning and flag variables to c-common.c.
8910 * decl2.c: Move all warning and flag variables to c-common.c.
8911 * lex.c (flag_digraphs): Remove.
8912 (warn_traditional): Now in c-common.c.
8913
8914 2002-07-31 Mark Mitchell <mark@codesourcery.com>
8915
8916 * call.c (build_field_call): Do not look up the field by name.
8917 (build_method_call): Simplify.
8918 (struct z_candidate): Add access_path and conversion_path. Remove
8919 basetype_path.
8920 (convert_class_to_reference): Adjust use of
8921 add_function_candidate.
8922 (add_candidate): Add conversion_path argument.
8923 (add_function_candidate): Use it.
8924 (add_conv_dndidate): Likewise.
8925 (build_builtin_candidate): Likewise.
8926 (add_template_candidate_real): Add conversion_path argument.
8927 (add_template_conv_candidate): Likewise.
8928 (add_template_candidate): Likewise.
8929 (build_user_type_conversion_1): Use it.
8930 (build_new_function_call): Remove name lookup code. Adjust use of
8931 add_template_candidate and add_function_candidate.
8932 (build_new_op): Likewise.
8933 (convert_like_real): Use build_special_member_call.
8934 (build_over_call): Use cand->conversion_path.
8935 (build_special_member_call): New method.
8936 (build_new_method_call): Remove name lookup code.
8937 * cp-tree.def (OFFSET_REF): Update documentation.
8938 (TEMPLATE_ID_EXPR): Likewise.
8939 * cp-tree.h (BASELINK_ACCESS_BINFO): New macro.
8940 (BASELINK_OPTYPE): Likewise.
8941 (build_new_method_call): Adjust prototype.
8942 (build_special_member_call): New method.
8943 (build_baselink): New method.
8944 (build_offset_ref_call_from_tree): Likewise.
8945 (build_call_from_tree): Likewise.
8946 (finish_qualified_call_expr): Remove.
8947 (finish_call_expr): Adjust prototype.
8948 (build_x_function_call): Remove.
8949 * cvt.c (ocp_convert): Use build_special_member_call.
8950 * decl2.c (reparse_absdcl_as_expr): Use finish_call_expr.
8951 (build_expr_from_tree): Adjust handling for TEMPLATE_ID_EXPR and
8952 CALL_EXPR.
8953 (build_offset_ref_call_from_tree): New function.
8954 (build_call_from_tree): Likewise.
8955 * init.c (expand_cleanup): Use build_special_member_call.
8956 (expand_default_init): Likewise.
8957 (build_member_call): Use finish_call_expr.
8958 (build_new_1): Use build_special_member_call.
8959 (push_base_cleanups): Likewise.
8960 * method.c (do_build_assign_ref): Likewise.
8961 * parse.y (template_id): Do not pass a COMPONENT_REF to
8962 lookup_template_function.
8963 (primary): Use parse_finish_call_epxr, not finish_call_expr.
8964 (parse_finish_call_expr): New function.
8965 * pt.c (lookup_template_function): Add assertions.
8966 * search.c (lookup_base): Allow T to be a binfo.
8967 (build_baselink): New function.
8968 (lookup_member): Use it.
8969 * semantics.c (finish_call_expr): Do not do name lookup.
8970 (finish_object_call_expr): Remove #if 0'd code.
8971 (finish_qualified_call_expr): Remove.
8972 * typeck.c (build_x_function_call): Remove.
8973 (build_static_case): Use build_special_member_call.
8974 * typeck2.c (build_functional_cast): Likewise.
8975
8976 2002-07-30 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
8977
8978 * lang-specs.h: Remove __GXX_ABI_VERSION, moved to gcc.c.
8979
8980 2002-07-30 Gabriel Dos Reis <gdr@nerim.net>
8981
8982 * cp-tree.h (VF_DERIVED_VALUE): Restore from previous deletion.
8983
8984 2002-07-30 Nathan Sidwell <nathan@codesourcery.com>
8985
8986 * cp-tree.h (CLASSTYPE_VFIELDS, VF_*, BV_*): Add more
8987 documentation.
8988
8989 2002-07-29 Alan Modra <amodra@bigpond.net.au>
8990
8991 * cp-tree.h: Comment typo fix.
8992
8993 2002-07-29 Richard Earnshaw <rearnsha@arm.com>
8994
8995 * spew.c (space_for_token): Allocate zeroed memory for a new token
8996 chunk.
8997
8998 2002-07-27 Roger Sayle <roger@eyesopen.com>
8999
9000 * decl.c (builtin_function_1): No need to explicitly mark
9001 BUILT_IN_RETURN and BUILT_IN_EH_RETURN as noreturn.
9002
9003 2002-07-27 Roger Sayle <roger@eyesopen.com>
9004
9005 * decl2.c (cxx_decode_option): Support -fno-builtin-foo.
9006
9007 2002-07-26 Jason Merrill <jason@redhat.com>
9008
9009 * call.c (build_over_call): Likewise.
9010 (cp_convert_parm_for_inlining): New fn.
9011 (convert_for_arg_passing): New fn.
9012 (convert_default_arg, build_over_call): Use it.
9013 (type_passed_as): New fn.
9014 * pt.c (tsubst_decl): Use it.
9015 * decl2.c (cp_build_parm_decl): New fn.
9016 (build_artificial_parm): Use it.
9017 (start_static_storage_duration_function): Likewise.
9018 * decl.c (start_cleanup_fn, grokdeclarater): Likewise.
9019 (grokparms): Don't mess with DECL_ARG_TYPE.
9020 * typeck.c (convert_arguments): Use convert_for_arg_passing.
9021 * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
9022 Define.
9023 * cp-tree.h: Declare new fns.
9024
9025 2002-07-26 Neil Booth <neil@daikokuya.co.uk>
9026
9027 * cp-tree.h (flag_operator_names): Remove.
9028 * decl2.c (flag_operator_names): Remove.
9029 (lang_f_options): Remove operator-names.
9030 * lex.c (D_OPNAME): Remove.
9031 (reswords): Remove operator names.
9032 (rid_to_yy): Remove operator names.
9033 (init_reswords): No need to handle D_OPNAME.
9034 * spew.c (read_process_identifier): There are no operator
9035 names.
9036
9037 2002-07-26 Jason Merrill <jason@redhat.com>
9038
9039 * dump.c (cp_dump_tree): Call c_dump_tree.
9040 * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
9041
9042 2002-07-25 Neil Booth <neil@daikokuya.co.uk>
9043
9044 * error.c (print_whitespace): Remove.
9045 * g++spec.c (LIBUNWIND): Move.
9046 * mangle.c (mangled_position, write_signed_number): Remove.
9047
9048 2002-07-25 Neil Booth <neil@daikokuya.co.uk>
9049
9050 * decl2.c (cxx_decode_option): Similarly.
9051
9052 2002-07-25 Gabriel Dos Reis <gdr@nerim.net>
9053
9054 * cp-tree.h (cxx_sizeof_nowarn): Now a macro.
9055 (cxx_sizeof_or_alignof_type): Take a third argument.
9056 (cxx_sizeof): Adjust definition.
9057 (cxx_alignof): Likewise.
9058 * init.c (build_delete): Use cxx_sizeof_nowarn to reflect reality.
9059 * typeck.c (cxx_sizeof_or_alignof_type): Take a third argument for
9060 complaining.
9061 (c_sizeof_nowarn): Remove definition.
9062 (build_unary_op): Use cxx_sizeof_nowarn.
9063
9064 2002-07-24 Geoffrey Keating <geoffk@redhat.com>
9065
9066 * tree.c (cp_build_qualified_type_real): When copying
9067 pointer-to-method types, unshare the record that holds
9068 the cached pointer-to-member-function type.
9069
9070 2002-07-23 Neil Booth <neil@daikokuya.co.uk>
9071
9072 * cp-tree.h (FILE_FUNCTION_PREFIX_LEN): Remove.
9073
9074 2002-07-23 Gabriel Dos Reis <gdr@nerim.net>
9075
9076 Fix PR/7363:
9077 * typeck.c (cxx_sizeof_or_alignof_type): New function.
9078 (c_sizeof): Remove definition.
9079 (expr_sizeof): Use cxx_sizeof.
9080 * decl2.c (build_expr_from_tree): Use cxx_sizeof_or_alignof_type.
9081 * decl.c (finish_destructor_body): Use cxx_sizeof.
9082 * semantics.c (finish_alignof): Likewise.
9083 (finish_alignof): Use cxx_alignof.
9084 * cp-tree.h (cxx_sizeof, cxx_alignof): New macros.
9085 (cxx_sizeof_or_alignof_type): Declare.
9086 (my_friendly_assert): Move to ../c-common.h.
9087
9088 2002-07-23 Neil Booth <neil@daikokuya.co.uk>
9089
9090 * class.c, method.c, pt.c, search.c: Don't define obstack macros.
9091
9092 2002-07-22 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9093
9094 PR c++/7347, c++/7348
9095 * cp-tree.h (tsubst_flags_t): Add tf_parsing.
9096 * decl.c (make_typename_type): Use it.
9097 (make_unbound_class_template): Likewise.
9098 (lookup_name_real): Don't call type_access_control if scope is
9099 template parameter dependent.
9100 * parse.y (template_arg): Call make_unbound_class_template with
9101 tf_parsing set.
9102 (nest_name_specifier): Call make_typename_type with tf_parsing set.
9103 (typename_sub0): Likewise.
9104 (typename_sub1): Likewise.
9105 (instantiate_decl): Push class scope.
9106 * pt.c (regenerate_decl_from_template): Call pushclass and popclass
9107 for both static variable and member function template.
9108 (instantiate_decl) Call pushclass and popclass when tsubst'ing type
9109 and arguments.
9110 * search.c (type_access_control): Do type access for TEMPLATE_DECL
9111 too.
9112
9113 2002-07-20 Roger Sayle <roger@eyesopen.com>
9114
9115 * decl2.c (cxx_decode_option): Simplify -fhandle-exceptions
9116 test by using positive_option. Make whitespace consistent.
9117
9118 2002-07-20 Gabriel Dos Reis <gdr@nerim.net>
9119
9120 * spew.c (struct unparsed_test): Replace 'filename' and 'lineno'
9121 members with 'locus'. Adjust use throughout.
9122 (struct feed): Likewise.
9123 (alloc_unparsed_test): Change prototype, take a 'const location_t *'.
9124 Adjust use.
9125 (snarf_defarg): Use error(), not error_with_file_and_line().
9126
9127 2002-07-19 Chris Demetriou <cgd@broadcom.com>
9128
9129 * lang-specs.h (@c++): Include "%2" (cc1plus_spec) wherever
9130 cpp_options is included.
9131
9132 2002-07-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9133
9134 PR c++/2862, c++/2863
9135 * pt.c (determine_specialization): Compare the length of
9136 TYPE_ARG_TYPES. Tidy.
9137
9138 2002-07-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9139
9140 PR c++/3797
9141 * decl.c (duplicate_decls): Don't propagate inlining parameters from
9142 olddecl to newdecl when newdecl is a specialization of the
9143 instantiation olddecl.
9144
9145 2002-07-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9146
9147 PR c++/4802, c++/5387
9148 * decl.c (make_typename_type): Use enforce_access.
9149
9150 2002-07-17 Scott Snyder <snyder@fnal.gov>
9151
9152 PR c++/7320
9153 * rtti.c (get_tinfo_decl): Set DECL_COMDAT.
9154
9155 2002-07-12 Mark Mitchell <mark@codesourcery.com>
9156
9157 * class.c (add_method): Correct handling of conversion operators.
9158
9159 2002-07-11 Mark Mitchell <mark@codesourcery.com>
9160
9161 PR c++/7224
9162 * class.c (add_method): Simplify.
9163
9164 2002-07-11 Jason Merrill <jason@redhat.com>
9165
9166 PR c++/7279
9167 * tree.c (cp_copy_res_decl_for_inlining): Also copy
9168 TREE_ADDRESSABLE.
9169
9170 2002-07-10 Graham Stott <graham.stott@btinternet.com>
9171
9172 * pt.c (template_parm_this_level_p, push_template_decl_real):
9173 Pass depth as int pointer.
9174
9175 2002-07-11 Tim Josling <tej@melbpc.org.au>
9176
9177 Remove front end hard coding from gengtype.c.
9178
9179 * config-lang.in (gtfiles): Add files needed for this front end.
9180
9181 2002-07-10 Mark Mitchell <mark@codesourcery.com>
9182
9183 * cp-tree.h (unqualified_name_lookup_error): Declare it.
9184 (begin_function_definition): Adjust prototype.
9185 * lex.c (unqualified_name_lookup_error): New function, split out
9186 from ...
9187 (do_identifier): ... here.
9188 * parse.y (parse_begin_function_definition): New function.
9189 (fn.def1): Use it.
9190 * semantics.c (begin_function_definition): Accept decl-specifiers
9191 and attributes as separate parameters.
9192
9193 2002-07-10 Jason Merrill <jason@redhat.com>
9194
9195 PR c++/6255
9196 * decl.c (lookup_name_real): Build a new TYPENAME_TYPE rather than
9197 modifying the old one.
9198
9199 2002-07-09 Mark Mitchell <mark@codesourcery.com>
9200
9201 * cp-tree.h (constructor_name_p): Declare it.
9202 (check_template_template_default_arg): Likewise.
9203 * class.c (handle_using_decl): Use constructor_name_p.
9204 * decl.c (grokdeclarator): Likewise.
9205 * decl2.c (constructor_name_p): Define it.
9206 * init.c (build_member_call): Use constructor_name_p.
9207 * parse.y (template_parm): Use check_template_template_default_arg.
9208 * pt.c (check_explicit_specialization): Use constructor_name_p.
9209 * semantics.c (check_template_template_default_arg): New function.
9210
9211 2002-07-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9212
9213 * pt.c (can_complete_type_without_circularity): Add static to
9214 function definition.
9215
9216 2002-07-08 Mark Mitchell <mark@codesourcery.com>
9217
9218 * cp-tree.h (have_extern_spec): Declare it
9219 * decl.c (have_extern_spec): Define it.
9220 (start_decl): Eliminate use of used_extern_spec.
9221 (start_function): Likewise.
9222 * parse.y (have_extern_spec): Remove declaration.
9223 (used_extern_spec): Likewise.
9224 (frob_specs): Eliminate use of used_extern_spec.
9225 (.hush_warning): Likewise.
9226
9227 2002-07-07 Mark Mitchell <mark@codesourcery.com>
9228
9229 * Make-lang.in (cp/parse.o): Depend on decl.h.
9230 * cp-tree.h (do_decl_instantiation): Change prototype.
9231 * parse.y: Include decl.h.
9232 (parse_decl_instantiation): New function.
9233 (explicit_instantiation): Use it.
9234 * pt.c (do_decl_instantiation): Accept a DECL, not a DECLARATOR
9235 and DECLSPECS.
9236
9237 2002-07-07 Roger Sayle <roger@eyesopen.com>
9238
9239 * error.c (dump_function_name): Use DECL_TEMPLATE_RESULT for
9240 constructor and destructor tests when passed a TEMPLATE_DECL.
9241
9242 2002-07-05 Jason Merrill <jason@redhat.com>
9243
9244 * cvt.c (cp_convert_to_pointer): Call force_fit_type for null
9245 pointers.
9246
9247 PR optimization/7145
9248 * tree.c (cp_copy_res_decl_for_inlining): Also copy DECL_INITIAL.
9249
9250 2002-07-05 Nathan Sidwell <nathan@codesourcery.com>
9251
9252 Repair damage on weak-impared targets caused by my previous patch.
9253 * cp-tree.h (import_export_tinfo): Add parameter.
9254 * decl2.c (import_export_tinfo): Add parameter, post adjust
9255 DECL_COMDAT.
9256 * rtti.c (emit_tinfo_decl): DECL_COMDAT is (nearly) always setup by
9257 import_export_tinfo.
9258
9259 2002-07-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9260
9261 PR c++/6944
9262 * init.c (build_aggr_init): Remove qualifiers of init before calling
9263 build_vec_init.
9264 (build_vec_init): Flatten multi-dimensional array during cleanup.
9265 (build_vec_delete_1): Abort if the type of each element is array.
9266
9267 2002-07-03 Graham Stott <graham.stott@btinternet.com>
9268
9269 * pt.c (instantiate_class_template): Fix typo.
9270
9271 2002-07-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9272
9273 * typeck2.c (cxx_incomplete_type_diagnostic): Fix typo caused
9274 by CVS conflict in my last patch.
9275
9276 2002-07-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9277
9278 PR c++/6716
9279 * pt.c (can_complete_type_without_circularity): New function.
9280 (instantiate_class_template): Use it.
9281 * typeck2.c (cxx_incomplete_type_diagnostic): Improve error
9282 message due to incomplete fields.
9283
9284 2002-07-01 Mark Mitchell <mark@codesourcery.com>
9285
9286 PR c++/7112
9287 * mangle.c (write_expression): Add mangling for sizeof when
9288 applied to a type.
9289 * operators.def: Remove stale comment.
9290
9291 2002-06-30 Nathan Sidwell <nathan@codesourcery.com>
9292
9293 * cp-tree.h (CPTI_TINFO_DECL_TYPE): Replace with ...
9294 (CPTI_TYPE_INFO_PTR_TYPE): ... this.
9295 (tinfo_decl_type): Replace with ...
9296 (type_info_ptr_type): ... this.
9297 (import_export_tinfo): Declare.
9298 (tinfo_decl_p): Rename to ...
9299 (unemitted_tinfo_decl_p): ... this.
9300 * decl2.c (import_export_decl): Break out tinfo handling into ...
9301 (import_export_tinfo): ... here. New function.
9302 (finish_file): Adjust.
9303 * rtti.c (TINFO_REAL_NAME): New macro.
9304 (init_rtti_processing): Create the tinfo types.
9305 (get_tinfo_decl_dynamic): Use type_info_ptr_type, get_tinfo_ptr.
9306 (get_tinfo_decl): Adjust.
9307 (get_tinfo_ptr): New function.
9308 (get_type_id): Use it.
9309 (tinfo_base_init): Create vtable decl here, if it doesn't exist.
9310 (ptr_initializer): Use get_tinfo_ptr.
9311 (ptm_initializer): Likewise.
9312 (synthesize_tinfo_var): Break into ...
9313 (get_pseudo_ti_init): ... this. Just create the initializer.
9314 (get_pseudo_ti_desc): .. and this.
9315 (create_real_tinfo_var): Remove.
9316 (create_pseudo_type_info): Don't create the vtable decl here.
9317 (get_vmi_pseudo_type_info): Remove.
9318 (create_tinfo_types): Adjust.
9319 (tinfo_decl_p): Rename to ...
9320 (unemitted_tinfo_decl_p): ... here. Adjust.
9321 (emit_tinfo_decl): Adjust. Create the initializer.
9322
9323 2002-06-27 Mark Mitchell <mark@codesourcery.com>
9324
9325 PR c++/6695
9326 * pt.c (tsubst_friend_class): Substitute into the context of the
9327 friend before using it.
9328
9329 2002-06-26 Mark Mitchell <mark@codesourcery.com>
9330
9331 * cp-tree.h (xref_tag): Change prototype.
9332 (handle_class_head): Likewise.
9333 (build_x_component_ref): Likewise.
9334 * decl.c (cxx_init_decl_processing): Adjust call to xref_tag.
9335 (xref_tag): Take attributes as a separate parameter.
9336 (xref_tag_from_type): Adjust call to xref_tag.
9337 * decl2.c (build_expr_from_tree): Adjust call to
9338 build_x_component_ref.
9339 (handle_class_head): Take attributes as a separate parameter.
9340 * parse.y (parse_xref_tag): New function.
9341 (parse_handle_class_head): Likewise.
9342 (primary): Use parse_xref_tag.
9343 (class_head_decl): Use parse_handle_class_head.
9344 (class_head_defn): Likewise.
9345 * rtti.c (init_rtti_processing): Adjust call to xref_tag.
9346 (build_dynamic_cast_1): Likewise.
9347 (create_pseudo_type_info): Likewise.
9348 (emit_support_tinfos): Likewise.
9349 * typeck.c (build_object_ref): Adjust call to
9350 build_x_component_ref.
9351 (build_x_component_ref): Remove protect parameter.
9352
9353 2002-06-25 Mark Mitchell <mark@codesourcery.com>
9354
9355 * call.c (build_op_delete_call): Use BASELINK_FUNCTIONS.
9356 * class.c (handle_using_decl): Likewise.
9357 (instantiate_type): Likewise.
9358 * cp-tree.h (BASELINK_FUNCTIONS): New macro.
9359 (xref_basetypes): Change prototype.
9360 (begin_mem_initializers): New function.
9361 (get_overloaded_fn): Likewise.
9362 * decl.c (xref_basetypes): Simplify.
9363 * error.c (dump_expr): Use BASELINK_FUNCTIONS.
9364 * init.c (build_offset_ref): Likewise.
9365 * parse.y (base_init): Use begin_mem_initializers().
9366 (structsp): Adjust call to xref_basetypes.
9367 * pt.c (determine_specialization): Use BASELINK_FUNCTIONS.
9368 (instantiate_class_template): Adjust call to xref_basetypes.
9369 * semantics.c (begin_mem_initializers): New function.
9370 * tree.c (is_overloaded_fn): Use BASELINK_FUNCTIONS.
9371 (really_overloaded_fn): Likewise.
9372 (get_overloaded_fn): New function.'
9373 (get_first_fn): USe BASELINK_FUNCTIONS.
9374
9375 2002-06-24 Mark Mitchell <mark@codesourcery.com>
9376
9377 * cp-tree.h (SCALAR_TYPE_P): New macro.
9378 (check_for_out_of_scope_variable): New function.
9379 (at_class_scope_p): Likewise.
9380 (finish_fname): Likewise.
9381 * class.c (finish_struct): Use at_function_scope_p.
9382 * decl.c (check_for_out_of_scope_variable): New function, split
9383 out from do_identifier.
9384 (finish_enum): Use at_function_scope_p.
9385 * lex.c (do_identifier): Use check_for_out_of_scope_variable.
9386 * parse.y (VAR_FUNC_NAME): Give it <ttype>. Use finish_fname.
9387 (primary): Use at_function_scope_p.
9388 * search.c (at_class_scope_p): New function.
9389 * semantics.c (finish_fname): Likewise.
9390 (check_multiple_declarators): Use at_function_scope_p.
9391
9392 2002-06-23 Mark Mitchell <mark@codesourcery.com>
9393
9394 * parse.y (parse_scoped_id): New function.
9395 (primary): Use it.
9396 * cp-tree.h (do_scoped_id): Adjust declaration.
9397 * lex.c (do_scoped_id): Remove call to yylex.
9398 * decl2.c (build_expr_from_tree): Adjust use of do_scoped_id.
9399 * typeck2.c (add_exception_specifier): Use tree_cons, rather than
9400 expanding it inline.
9401
9402 2002-06-23 Matt Thomas <matt@3am-software.com>
9403
9404 * decl.c (finish_function): Change "#ifdef VMS_TARGET" to
9405 "#if VMS_TARGET".
9406
9407 2002-06-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
9408
9409 * mangle.c (integer_type_codes): Const-ify.
9410
9411 2002-06-20 Richard Henderson <rth@redhat.com>
9412
9413 PR c++/6747
9414 * typeck.c (mark_addressable): Don't test TREE_ADDRESSABLE early.
9415 Call put_var_into_stack.
9416
9417 2002-06-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
9418
9419 * spew.c (remove_last_token): Use ARRAY_SIZE in lieu of explicit
9420 array size calculation.
9421
9422 2002-06-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9423
9424 PR c++/6892
9425 * pt.c (tsubst_expr): Handle FILE_STMT.
9426
9427 2002-06-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9428
9429 PR c++/6723
9430 * pt.c (lookup_template_class): Don't build complete argument of
9431 BOUND_TEMPLATE_TEMPLATE_PARM if appeared as a default template
9432 argument.
9433
9434 2002-06-19 Akim Demaille <akim@epita.fr>
9435
9436 * parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
9437 decl.h's TYPENAME.
9438 * spew.c, lex.c: Adjust.
9439 * parse.y (explicit_instantiation): Add empty action to override
9440 the default $$ = $1 where it introduces a type clash.
9441
9442 2002-06-14 Jason Merrill <jason@redhat.com>
9443
9444 * semantics.c (begin_for_stmt): Push the 'for' scope before
9445 adding the FOR_STMT.
9446
9447 C++ ABI changes.
9448 * class.c (build_base_field): Set DECL_PACKED.
9449 (layout_class_type): Don't use tail padding of PODs.
9450 * mangle.c (write_unqualified_name): Fix template conversion op
9451 mangling.
9452
9453 2002-06-16 Richard Henderson <rth@redhat.com>
9454
9455 PR opt/6793
9456 * tree.c (cp_cannot_inline_tree_fn): Don't short-circuit test
9457 after template instantiation.
9458
9459 2002-06-16 Richard Henderson <rth@redhat.com>
9460
9461 * cp-tree.h, decl2.c (flag_ms_extensions): Move to c-common.
9462
9463 2002-06-15 Gabriel Dos Reis <gdr@codesourcery.com>
9464
9465 * cp-tree.h (compiler_error): Remove declaration.
9466 * lex.c (compiler_error): Remove definition.
9467
9468 2002-06-14 Steve Ellcey <sje@cup.hp.com>
9469
9470 * g++spec.c (LIBUNWIND): New.
9471 (lang_specific_driver): Add it if USE_UNWIND_EXCEPTIONS is set.
9472
9473 2002-06-13 Jessica Han <jessica@cup.hp.com>
9474
9475 * class.c (build_vtable): Use TARGET_VTABLE_ENTRY_ALIGN.
9476 (build_vtbl_initializer): Honor TARGET_VTABLE_DATA_ENTRY_DISTANCE.
9477 (build_vbase_offset_vtbl_entries): Likewise.
9478 * rtti.c (build_headof): Likewise.
9479 (get_tinfo_decl_dynamic): Likewise.
9480 (create_pseudo_type_info): Likewise.
9481
9482 2002-06-12 Stan Shebs <shebs@apple.com>
9483
9484 * mpw-config.in: Remove file, no longer used.
9485 * mpw-make.sed: Ditto.
9486
9487 2002-06-07 Zack Weinberg <zack@codesourcery.com>
9488
9489 * decl2.c: Update call to cpp_handle_option.
9490
9491 2002-06-07 H.J. Lu (hjl@gnu.org)
9492
9493 * decl2.c (flag_use_cxa_atexit): Set to DEFAULT_USE_CXA_ATEXIT.
9494
9495 2002-06-06 Gabriel Dos Reis <gdr@codesourcery.com>
9496
9497 * error.c (cp_error_at): Fix typo.
9498
9499 2002-06-04 Gabriel Dos Reis <gdr@codesourcery.com>
9500
9501 * error.c (cp_diagnostic_starter): Adjust call.
9502 (maybe_print_instantiation_context): Change prototype to take a
9503 'diagnostic_info *'.
9504 (print_instantiation_full_context): Likewise.
9505 (print_instantiation_partial_context): Likewise.
9506 (cp_diagnostic_starter): Likewise.
9507 (cp_diagnostic_finalizer): Likewise.
9508 (cp_print_error_function): Likewise.
9509 (cp_printer): Take a secondary parameter as a 'text_info *'.
9510 Remove output_state savings. Adjust calls.
9511
9512 2002-06-03 Geoffrey Keating <geoffk@redhat.com>
9513
9514 * pt.c (inline_parm_levels): Mark for GC.
9515
9516 * mangle.c (start_mangling): Allocate G.substitutions here...
9517 (init_mangle): ... rather than here.
9518 (finish_mangling): Clear the varray pointer when done with it.
9519 * spew.c (yylexstring): Don't use VARRAY_FREE.
9520 * search.c (bfs_walk): Don't use VARRAY_FREE.
9521 * decl2.c (pending_statics): Use gengtype to mark.
9522 (deferred_fns): Likewise.
9523 (ssdf_decls): Likewise.
9524 (init_decl2): Delete.
9525 * decl.c (pop_from_top_level): Don't use VARRAY_FREE.
9526 (cxx_init_decl_processing): Don't call init_decl2.
9527 (cxx_pop_function_context): Don't use VARRAY_FREE.
9528 * cp-tree.h (struct saved_scope): No need for special marking
9529 of varrays.
9530 (struct language_function): Likewise.
9531 (local_classes): Use gengtype to mark.
9532 (init_decl2): Delete prototype.
9533 * class.c (init_class_processing): Don't use
9534 ggc_add_tree_varray_root.
9535 (build_vtbl_initializer): Don't use VARRAY_FREE.
9536
9537 * decl.c (typename_compare): Don't use same_type_p.
9538
9539 * decl.c: Include hashtab.h instead of hash.h.
9540 (typename_hash): Update to use htab_h.
9541 (typename_compare): Likewise.
9542 (typename_htab): Use gengtype to mark.
9543 (build_typename_type): Update to use htab_h.
9544 * Make-lang.in (cp/decl.o): Use HASHTAB_H instead of hash.h.
9545
9546 * Make-lang.in (gt-cp-tree.h): New rule.
9547 (cp/tree.o): Depend on gt-cp-tree.h.
9548 * config-lang.in (gtfiles): Add cp/tree.c.
9549 * tree.c: Include gt-cp-tree.h.
9550 (list_hash_table): Use gengtype to mark.
9551 (init_tree): Use gengtype to mark trees.
9552
9553 * Make-lang.in (cp/decl.o): Add debug.h dependency.
9554 * call.c (struct z_candidate): Use gengtype.
9555 (USER_CONV_CAND): Use WRAPPER_ZC.
9556 (convert_class_to_reference): Use build_zc_wrapper.
9557 (build_type_conversion_1): Likewise.
9558 (build_over_call): Use WRAPPER_ZC.
9559 (add_warning): Use build_zc_wrapper.
9560 * cp-lang.c (LANG_HOOKS_MARK_TREE): Delete.
9561 * cp-tree.h (struct lang_identifier): Use gengtype.
9562 (struct template_parm_index_s): Likewise.
9563 (struct ptrmem_cst): Likewise.
9564 (struct tree_binding): Likewise.
9565 (struct tree_overload): Likewise.
9566 (struct tree_srcloc): Likewise.
9567 (struct tree_wrapper): Likewise. Also modify to have a pointer
9568 to struct z_candidate rather than void.
9569 (enum cp_tree_node_structure_enum): New.
9570 (union lang_tree_node): New.
9571 (cxx_mark_tree): Delete prototype.
9572 (cp_tree_node_structure): New prototype.
9573 (build_ptr_wrapper): Delete prototype.
9574 (build_int_wrapper): Delete prototype.
9575 (build_zc_wrapper): New prototype.
9576 * decl.c: Include debug.h
9577 (cxx_mark_tree): Delete.
9578 (cp_tree_node_structure): New.
9579 * tree.c (build_ptr_wrapper): Delete.
9580 (build_int_wrapper): Delete.
9581 (build_zc_wrapper): New.
9582
9583 * cp-tree.h [! ENABLE_TREE_CHECKING] (LANG_TYPE_PTRMEM_CHECK):
9584 Correct typo. Patch from k_fukui@highway.ne.jp.
9585
9586 * semantics.c (current_stmt_tree): Update for change to
9587 struct language_function.
9588 (finish_mem_initializers): Likewise.
9589 * decl.c (cxx_init_decl_processing): Don't set mark_lang_status.
9590 * cp-tree.h (struct language_function): Rename from
9591 cp_language_function. Change all uses.
9592 (cp_function_chain): Don't need to cast.
9593
9594 * class.c (duplicate_tag_error): Reset discriminator.
9595 (check_bases_and_members): Update for data structure changes.
9596 * cp-tree.h (struct lang_id2): Use gengtype.
9597 (flagged_type_tree): Likewise.
9598 (SET_LANG_ID): Use GGC on struct lang_id2.
9599 (struct cp_language_function): Use gengtype. Remove field
9600 'x_vcalls_possible_p'.
9601 (current_vcalls_possible_p): Delete.
9602 (struct lang_type_header): New.
9603 (struct lang_type_class): Rename from struct lang_type. Include
9604 struct lang_type_header.
9605 (struct lang_type_ptrmem): New.
9606 (struct lang_type): New.
9607 (LANG_TYPE_CLASS_CHECK): New. Use it in all the appropriate macros.
9608 (LANG_TYPE_PTRMEM_CHECK): New. Use it in all the appropriate macros.
9609 (TYPE_SET_PTRMEMFUNC_TYPE): Set discriminator, update for changes.
9610 (struct lang_decl_flags): Use gengtype. Add discriminators.
9611 (struct lang_decl): Use gengtype. Add and use discriminators.
9612 Update the macros that reference moved fields.
9613 (LANG_DECL_U2_CHECK): New function. Use it when appropriate.
9614 (SET_DECL_THUNK_P): Set discriminator too.
9615 (clear_inline_text_obstack): Delete prototype.
9616 (finish_inline_definitions): Delete prototype.
9617 (mark_pending_inlines): Delete prototype.
9618 (lang_check_failed): New prototype.
9619 * decl.c (struct named_label_use_list): Use gengtype.
9620 (struct named_label_list): Likewise.
9621 (mark_binding_level): Delete.
9622 (mark_named_label_lists): Delete.
9623 (push_local_name): Set discriminator on DECL_LANG_SPECIFIC.
9624 (cxx_init_decl_processing): Use generated marker routine.
9625 (begin_destructor_body): Delete dead set to
9626 current_vcalls_possible_p.
9627 (mark_lang_function): Delete.
9628 (mark_cp_function_context): Delete.
9629 (lang_mark_tree): Use generated marker routines.
9630 * decl2.c (start_objects): Set discriminator when setting
9631 GLOBAL_INIT_PRIORITY.
9632 * lex.c (retrofit_lang_decl): Set discriminators.
9633 (copy_lang_type): Update for changes to lang_type structure.
9634 (cp_make_lang_type): Set discriminator.
9635 * parse.y: Use gengtype on YYLVAL. Don't use dots in identifiers.
9636 * search.c: Include ggc.h.
9637 * semantics.c (anon_aggr_type_p): Use the macro, don't hand-code it.
9638 (finish_inline_definitions): Delete.
9639 * spew.c (struct token): Use gengtype.
9640 (struct token_chunk): New.
9641 (struct unparsed_text): Use gengtype. Store tokens in chunks.
9642 (struct feed): Use gengtype.
9643 (feed_obstack): Delete.
9644 (feed): Mark as GC root.
9645 (pending_inlines): Mark as GC root.
9646 (pending_inlines_tail): Likewise.
9647 (processing_these_inlines): Likewise.
9648 (token_obstack): Make static.
9649 (first_token): Likewise.
9650 (init_spew): Don't initialize deleted things; use gengtype for roots.
9651 (clear_inline_text_obstack): Delete.
9652 (feed_input): Use GC for struct feed. Update for changes to
9653 struct unparsed_text.
9654 (mark_pending_inlines): Delete.
9655 (next_token): Rename from add_token. Change all callers. Update
9656 for changes to struct unparsed_text.
9657 (space_for_token): New.
9658 (remove_last_token): New.
9659 (alloc_unparsed_text): New.
9660 (snarf_block): Take an unparsed_text. Update for changes to struct
9661 unparsed_text.
9662 (snarf_method): Update for changes to struct unparsed_text.
9663 (snarf_defarg): Update for changes to struct unparsed_text.
9664 * tree.c (lang_check_failed): New.
9665
9666 * Make-lang.in (gt-cp-call.h gt-cp-decl2.h gt-cp-parse.h
9667 gt-cp-pt.h gt-cp-repo.h gt-cp-spew.h): New rules.
9668 (cp/spew.o): Add dependency on gt-<filename>.h.
9669 (cp/decl2.o): Add dependency on gt-<filename>.h.
9670 (cp/call.o): Add dependency on gt-<filename>.h.
9671 (cp/pt.o): Add dependency on gt-<filename>.h.
9672 (cp/repo.o): Add dependency on gt-<filename>.h.
9673 (cp/parse.o): Add dependency on gt-<filename>.h.
9674 * call.c: Use gengtype for roots.
9675 * config-lang.in (gtfiles): Add cp-tree.h decl.h lex.h call.c
9676 decl2.c parse.y pt.c repo.c spew.c.
9677 * cp-tree.h: Use gengtype for roots.
9678 (struct saved_scope): Use GGC, gengtype.
9679 (cp_parse_init): Delete prototype.
9680 (init_pt): Delete prototype.
9681 * decl.c: Use gengtype for roots.
9682 (mark_saved_scope): Delete.
9683 (cxx_init_decl_processing): Don't call deleted initilisation
9684 routines.
9685 (signed_size_zero_node): Delete, unused.
9686 * decl.h: Use gengtype for roots.
9687 * decl2.c: Use gengtype for roots.
9688 * lex.h: Use gengtype for roots.
9689 * parse.y: Use gengtype for roots.
9690 (cp_parse_init): Delete.
9691 * pt.c: Use gengtype for roots.
9692 (init_pt): Delete.
9693 * repo.c: Use gengtype for roots.
9694 * spew.c: Use gengtype for roots.
9695
9696 * Make-lang.in: Allow for filename changes. Add gtype-cp.h.
9697 (cp/decl.o): Add dependency on gtype-cp.h.
9698 * decl.c: Remove use of add_deletable_root, use GTY marker instead.
9699 Include gtype-cp.h. Allow for filename changes.
9700
9701 * Make-lang.in (cp/gt-decl.h): Generate using gengtype.
9702 (cp/decl.o): Add cp/gt-decl.h dependency.
9703 * config-lang.in (gtfiles): New.
9704 * tree.h: Rename struct binding_level to struct cp_binding_level.
9705 * decl.c: Rename struct binding_level to struct cp_binding_level.
9706 Include cp/gt-decl.h.
9707 (struct cp_binding_level): Use gengtype.
9708 (make_binding_level): Use GGC on struct cp_binding_level.
9709 (mark_binding_level): Use gt_ggc_m_cp_binding_level.
9710 (cxx_init_decl_processing): Mark free_binding_level as
9711 deletable.
9712
9713 * decl.c (mark_cp_function_context): Update calling sequence.
9714
9715 * decl.c (start_function): Don't free 'struct
9716 cp_language_function'.
9717 (pop_cp_function_context): Likewise.
9718 (save_function_data): Allocate it using GC.
9719 * semantics.c (genrtl_start_function): Don't free 'struct
9720 cp_language_function'.
9721
9722 2002-05-31 Matthew Woodcraft <mattheww@chiark.greenend.org.uk>
9723
9724 * lang-specs.h: Use cpp_debug_options.
9725
9726 2002-05-28 Zack Weinberg <zack@codesourcery.com>
9727
9728 * mangle.c, tree.c: Include real.h.
9729 * Make-lang.in: Update dependency lists.
9730
9731 2002-05-25 Neil Booth <neil@daikokuya.demon.co.uk>
9732
9733 * lex.c: Don't include c-lex.h.
9734 * parse.y, spew.c: Don't include c-lex.h; include c-pragma.h.
9735
9736 2002-05-23 Neil Booth <neil@daikokuya.demon.co.uk>
9737
9738 * spew.c (yyungetc, snarf_block): Remove indent_level handling.
9739
9740 2002-05-22 Richard Henderson <rth@redhat.com>
9741
9742 * decl.c (obscure_complex_init): Check for VAR_DECL
9743 before using DECL_THREAD_LOCAL.
9744
9745 2002-05-22 Richard Henderson <rth@redhat.com>
9746
9747 * decl.c (check_tag_decl): Handle RID_THREAD.
9748 (obscure_complex_init): Reject run-time init of tls.
9749 (grokvardecl, grokdeclarator): Handle RID_THREAD.
9750 * lex.c (reswords): Add __thread.
9751 (rid_to_yy): Map RID_THREAD to SCSPEC.
9752
9753 2002-05-22 Neil Booth <neil@daikokuya.demon.co.uk>
9754
9755 * cp-lang.c (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.
9756 * cp-tree.h (cxx_post_options): Kill.
9757 * cp-lex.c (cxx_post_options): Kill.
9758
9759 2002-05-21 Richard Henderson <rth@redhat.com>
9760
9761 * lex.c (rid_to_yy): Add RID_THREAD.
9762
9763 2002-05-21 Alexandre Oliva <aoliva@redhat.com>
9764
9765 * init.c (build_vec_init): Test for trivial copy-assignment when
9766 copy-assigning arrays.
9767
9768 2002-05-20 Andreas Jaeger <aj@suse.de>
9769
9770 * init.c (build_default_init): Remove unused variable.
9771
9772 2002-05-20 Alexandre Oliva <aoliva@redhat.com>
9773
9774 * call.c (any_strictly_viable): New.
9775 (build_new_op): Use it for COMPOUND_EXPR and ADDR_EXPRs.
9776
9777 2002-05-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9778
9779 * error.c (dump_type) [TYPEOF_TYPE]: Fix parenthesis printing.
9780
9781 2002-05-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9782
9783 PR c++/186, DR 259
9784 * pt.c (do_decl_instantiation): Don't complain explicit
9785 instantiation after explicit specialization.
9786 (do_type_instantiation): Likewise.
9787
9788 2002-05-19 Alexandre Oliva <aoliva@redhat.com>
9789
9790 * cp-tree.h (complete_type_or_diagnostic): Changed prototype,
9791 renamed from...
9792 (complete_type_or_else): ... this. Redefined as macro.
9793 (cxx_incomplete_type_diagnostic): Declare.
9794 (cxx_incomplete_type_error): Define as macro.
9795 * init.c (build_delete): Warn about incomplete types other than
9796 void, and use the built-in operator delete for them.
9797 * typeck.c (complete_type_or_diagnostic): Renamed from
9798 complete_type_or_else. Added warn_only argument, passed to...
9799 * typeck2.c (cxx_incomplete_type_diagnostic): ... this. Print
9800 warnings or errors depending on new warn_only argument. Renamed
9801 from...
9802 (cxx_incomplete_type_error): ... this. New implementation in
9803 terms of cxx_incomplete_type_diagnostic.
9804
9805 2002-05-18 Jason Merrill <jason@redhat.com>
9806
9807 PR c++/6611
9808 * decl2.c (import_export_decl): If we clear
9809 DECL_NOT_REALLY_EXTERN, make sure DECL_EXTERNAL is set.
9810
9811 2002-05-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
9812
9813 PR c++/6620
9814 * pt.c (verify_class_unification): Don't check if PARM is template
9815 parameter dependent. Simplify.
9816 (unify) [TEMPLATE_PARM_INDEX]: Handle when ARG is a template
9817 parameter dependent expression.
9818
9819 2002-05-14 Jason Merrill <jason@redhat.com>
9820
9821 * rtti.c (get_tinfo_decl): Don't call comdat_linkage.
9822 Do set DECL_COMDAT.
9823 (synthesize_tinfo_var): Take the public decl.
9824 (create_real_tinfo_var): Likewise. Check DECL_COMDAT.
9825 (emit_tinfo_decl): Adjust. Call import_export_decl.
9826 * decl2.c (import_export_decl): Simplify tinfo decl handling.
9827
9828 2002-05-14 Alexandre Oliva <aoliva@redhat.com>
9829
9830 * cp-tree.h (struct lang_type): Added non_zero_init.
9831 (CLASSTYPE_NON_ZERO_INIT_P): New macro.
9832 (zero_init_p, force_store_init_value, build_forced_zero_init): Declare.
9833 * class.c (check_field_decls): Test non_zero_init.
9834 * cvt.c (convert_to_pointer_force): Use cp_convert_to_pointer for
9835 zero-to-NULL conversions.
9836 * decl.c (obscure_complex_init): Don't reset DECL_INITIAL of a
9837 type that needs zero-initialization without zeros.
9838 (check_initializer_decl): Compute zero-initializer for types
9839 that require a non-trivial one.
9840 * init.c (build_forced_zero_init): New function.
9841 (build_default_init): Use it.
9842 * tree.c (zero_init_p): New function.
9843 * typeck2.c (force_store_init_value): New function.
9844 (process_init_constructor): Create non-trivial zero-initializers
9845 for array members and class fields.
9846
9847 2002-05-14 Neil Booth <neil@daikokuya.demon.co.uk>
9848
9849 * lang-specs.h: Remove redundant -lang-c++.
9850
9851 2002-05-13 Jason Merrill <jason@redhat.com>
9852
9853 * class.c (build_vtbl_ref_1): Use fixed_type_or_null.
9854 (fixed_type_or_null): See through reference vars.
9855 (build_base_path): Vtable contents are constant.
9856 * typeck.c (get_member_function_from_ptrfunc): Likewise.
9857
9858 2002-05-12 Jason Merrill <jason@redhat.com>
9859
9860 * cp-lang.c (ok_to_generate_alias_set_for_type): Backend-created
9861 structs are safe.
9862
9863 2002-05-09 Neil Booth <neil@daikokuya.demon.co.uk>
9864
9865 * cp-tree.h (flag_ansi): Remove.
9866 * decl2.c (flag_ansi): Remove.
9867 (cxx_decode_option): Set flag_iso and flag_undef.
9868
9869 2002-05-09 Jason Merrill <jason@redhat.com>
9870
9871 * typeck.c (get_member_function_from_ptrfunc): Reorganize.
9872 Use subtraction rather than a bitmask to get the index.
9873 * cvt.c (cp_convert_to_pointer): Bail on an error_mark_node.
9874
9875 * pt.c (tsubst_expr) [ASM_STMT]: Copy ASM_INPUT_P.
9876
9877 2002-05-07 Neil Booth <neil@daikokuya.demon.co.uk>
9878
9879 * Make-lang.in (decl2.o): Update.
9880 * cp-tree.h (warn_multichar): Remove.
9881 * decl2.c: Include c-common.h.
9882 (warn_multichar): Remove.
9883
9884 2002-05-03 Jason Merrill <jason@redhat.com>
9885
9886 * tree.c (build_cplus_array_type): Only const and volatile get
9887 special handling.
9888
9889 * decl.c (BOOL_TYPE_SIZE): Move default to defaults.h.
9890
9891 2002-04-30 Mark Mitchell <mark@codesourcery.com>
9892
9893 ABI change, returning simple classes from functions.
9894 * class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if
9895 TYPE_HAS_TRIVIAL_INIT_REF is false or
9896 TYPE_HAS_NONTRIVIAL_DESTRUCTOR is true.
9897
9898 2002-04-30 Jason Merrill <jason@redhat.com>
9899
9900 PR debug/6436
9901 * decl.c (grokdeclarator): Don't override TYPE_NAME of an
9902 anonymous class with a typedef if there are attributes.
9903
9904 2002-04-29 Paul Eggert <eggert@twinsun.com>
9905
9906 * parse.y (nomods_initdcl0): Replace $<ttype>3 with $<ttype>$.
9907
9908 2002-04-29 Jakub Jelinek <jakub@redhat.com>
9909
9910 PR c++/6477
9911 * decl.c (follow_tag_typedef): Check if TYPE_NAME (original) is
9912 non-NULL first.
9913
9914 2002-04-29 Mark Mitchell <mark@codesourcery.com>
9915
9916 PR c++/6492
9917 * pt.c (tsubst_friend_class): If the friend has an explicit scope,
9918 enter that scope before name lookup.
9919
9920 PR c++/6486
9921 * method.c (do_build_copy_constructor): Avoid building
9922 cv-qualified reference types.
9923
9924 2002-04-29 Nathan Sidwell <nathan@codesourcery.com>
9925
9926 PR c++/5719
9927 * decl.c (grok_op_properties): Assignment ops don't have to return
9928 by value. operator% should.
9929
9930 2002-04-28 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
9931
9932 PR c/6343
9933 * decl.c (duplicate_decls): Call merge_weak.
9934
9935 2002-04-26 Richard Henderson <rth@redhat.com>
9936
9937 * parse.y (malloced_yyss, malloced_yyvs): New.
9938 (yyoverflow): Re-add. Set them.
9939 (free_parser_stacks): New.
9940
9941 2002-04-26 Mark Mitchell <mark@codesourcery.com>
9942
9943 PR c++/6497
9944 * method.c (do_build_assign_ref): Pass a derivation to
9945 build_method_call when calling base class assignment operators.
9946
9947 2002-04-26 Richard Henderson <rth@redhat.com>
9948
9949 * parse.y (yyoverflow): Revert.
9950
9951 2002-04-26 Richard Henderson <rth@redhat.com>
9952
9953 PR c/3581
9954 * parse.y (string): Remove. Update all uses to use STRING
9955 instead, and not call combine_strings.
9956 * rtti.c (tinfo_name): Use fix_string_type.
9957 * semantics.c (finish_asm_stmt): Don't call combine_strings.
9958 * spew.c (yylexstring): New.
9959 (read_token): Use it.
9960
9961 2002-04-25 Richard Henderson <rth@redhat.com>
9962
9963 PR c/2161
9964 * parse.y (yyoverflow): New.
9965
9966 2002-04-25 Jason Merrill <jason@redhat.com>
9967
9968 PR c++/5607
9969 * search.c (check_final_overrider): No longer static.
9970 * class.c (update_vtable_entry_for_fn): Call it.
9971 * cp-tree.h: Adjust.
9972
9973 2002-04-25 Neil Booth <neil@daikokuya.demon.co.uk>
9974
9975 * cp-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
9976 * cp-tree.h (cxx_set_yydebug): Die.
9977 * lex.c (YYDEBUG): Get from c-lex.h.
9978 (cxx_set_yydebug): Remove.
9979 * parse.y: Include c-lex.h.
9980 (YYDEBUG): Get from c-lex.h.
9981
9982 2002-04-24 Mark Mitchell <mark@codesourcery.com>
9983
9984 PR c++/6438.
9985 * cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs
9986 void.
9987
9988 2002-04-24 Neil Booth <neil@daikokuya.demon.co.uk>
9989
9990 * cp-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
9991 LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE):
9992 Redefine.
9993 * cp-tree.h (cp_attribute_table): Rename.
9994 * decl.c (lang_attribute_table): Remove declaration.
9995 (cxx_init_decl_processing): Don't set it.
9996 * tree.c (cp_attribute_table): Rename.
9997
9998 2002-04-24 Jason Merrill <jason@redhat.com>
9999
10000 PR c++/6331
10001 * method.c (do_build_copy_constructor): Use cp_build_qualified_type.
10002 * typeck.c (build_modify_expr): Allow arrays to differ in cv-quals.
10003 The pedwarn for array assignment is now unconditional.
10004 * tree.c (build_cplus_array_type_1): Still process simple array types
10005 normally in templates.
10006
10007 PR c++/6395
10008 * decl.c (make_rtl_for_nonlocal_decl): Don't mess with #pragma i/i
10009 stuff for comdats.
10010
10011 2002-04-23 Jakub Jelinek <jakub@redhat.com>
10012
10013 * parse.y (check_class_key): Allow KEY to be union/enum/struct/class
10014 node with attributes.
10015
10016 2002-2-23 David O'Brien <obrien@FreeBSD.org>
10017
10018 * g++spec.c (MATH_LIBRARY_PROFILE, LIBSTDCXX_PROFILE): Add.
10019 Use MATH_LIBRARY_PROFILE and LIBSTDCXX_PROFILE if profile flag given.
10020
10021 2002-04-23 Mark Mitchell <mark@codesourcery.com>
10022
10023 PR c++/6256:
10024 * pt.c (tsubst_friend_class): Handle templates with explicit
10025 nested names.
10026
10027 PR c++/6331:
10028 * typeck.c (merge_types): Remember the cv-qualification of pointer
10029 types when merging them.
10030
10031 2002-04-20 Neil Booth <neil@daikokuya.demon.co.uk>
10032
10033 * cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
10034 LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
10035 * cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
10036 cxx_mark_function_context): New.
10037 * decl.c (push_cp_function_context, pop_cp_function_context,
10038 mark_cp_function_context): Rename for consistency.
10039 (cxx_init_decl_processing): Don't set old hooks.
10040
10041 2002-04-19 Neil Booth <neil@daikokuya.demon.co.uk>
10042
10043 * call.c (convert_type_from_ellipsis): Rename, update.
10044 * cp-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.
10045 * cp-tree.h (convert_type_from_ellipsis): Rename.
10046 * decl.c (cxx_init_decl_processing): Don't set hook.
10047
10048 2002-04-18 Neil Booth <neil@daikokuya.demon.co.uk>
10049
10050 * call.c (build_new_method_call): Update.
10051 * cp-lang.c (LANG_HOOKS_INCOMPLETE_TYPE_ERROR): Redefine.
10052 * cp-tree.h (cxx_incomplete_type_error): New.
10053 * decl.c (grokdeclarator, grokparms): Update.
10054 * decl2.c (check_classfn): Update.
10055 * pt.c (tsubst): Update.
10056 * typeck.c (complete_type_or_else, expr_sizeof,
10057 decay_conversion): Update.
10058 * typeck2.c (incomplete_type_error): Rename.
10059 (add_exception_specifier): Update.
10060
10061 2002-04-18 Jason Merrill <jason@redhat.com>
10062
10063 PR c++/5658
10064 * search.c (setup_class_bindings): A class template qualifies as a
10065 type binding.
10066
10067 2002-04-17 Jakub Jelinek <jakub@redhat.com>
10068
10069 PR c++/6316
10070 * decl2.c (finish_file): Clear DECL_EXTERNAL in a separate loop
10071 before expanding.
10072
10073 2002-04-16 Mark Mitchell <mark@codesourcery.com>
10074
10075 * init.c (begin_init_stmts): Remove commented out code.
10076 (finish_init_stmts): Set STMT_EXPR_NO_SCOPE.
10077 * semantics.c (begin_gobal_stmt_expr): Adjust call to
10078 expand_start_stmt_expr.
10079
10080 2002-04-15 Mark Mitchell <mark@codesourcery.com>
10081
10082 * decl.c (register_dtor_fn): Pass the address of dso_handle, not
10083 dso_handle itself, to __cxa_atexit.
10084
10085 2002-04-15 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
10086
10087 * error.c (cxx_print_error_function): Adjust call to macros.
10088
10089 2002-04-14 Jakub Jelinek <jakub@redhat.com>
10090
10091 * class.c (layout_virtual_bases): Do all dsize computation on trees.
10092
10093 2002-04-14 Jason Merrill <jason@redhat.com>
10094
10095 * typeck.c (get_member_function_from_ptrfunc): Don't do
10096 gratuitious division and multiplication on
10097 ptrmemfunc_vbit_in_delta targets.
10098
10099 2002-04-12 Mark Mitchell <mark@codesourcery.com>
10100
10101 PR c++/5373.
10102 * semantics.c (finish_expr_stmt): Remember the type of the
10103 expression before any conversions are performed.
10104
10105 2002-04-12 Mark Mitchell <mark@codesourcery.com>
10106
10107 PR c++/5189.
10108 * call.c (add_template_candidate_real): Do not treat member
10109 templates as copy constructors.
10110
10111 2002-04-12 Mark Mitchell <mark@codesourcery.com>
10112
10113 * decl.c (duplicate_decls): Do not copy the RTL for a variable
10114 declaration if the old variable had an incomplete type and the new
10115 variable does not.
10116 (complete_vars): Do not call layout_decl for completed variables.
10117
10118 2002-04-12 Richard Sandiford <rsandifo@redhat.com>
10119
10120 * decl.c (duplicate_decls): Don't try to unify an implicit typedef
10121 with an explicit one.
10122 (follow_tag_typedef): New.
10123 (lookup_tag): Use it to extract the tag of an explicit typedef.
10124 (xref_tag): Likewise.
10125
10126 2002-04-11 Andrew Haley <aph@redhat.com>
10127
10128 * typeck.c (type_after_usual_arithmetic_conversions):
10129 If two types have the same variant, return immediately.
10130 When two floating-point operands are the same precision:
10131 convert to float if one of the operands is float;
10132 if neither operand is one of the standard types, return the type
10133 of the first operand.
10134
10135 2002-04-10 Nathan Sidwell <nathan@codesourcery.com>
10136
10137 PR c++/5507
10138 * decl.c (make_typename_type): Remove implicit typenameness.
10139
10140 2002-04-09 Jason Merrill <jason@redhat.com>
10141
10142 PR optimization/6189
10143 * semantics.c (genrtl_start_function): Don't free
10144 DECL_SAVED_FUNCTION_DATA for inline functions.
10145
10146 * init.c (build_member_call): For now, don't convert to
10147 intermediate base if it would cause an error.
10148
10149 2002-04-08 Paolo Carlini <pcarlini@unitus.it>
10150
10151 * parse.y (namespace_qualifier, maybe_identifier,
10152 begin_explicit_instantiation, end_explicit_instantiation,
10153 apparent_template_type, .finish_template_type,
10154 do_id, maybe_init, defarg_again, component_decl_1):
10155 Add ending ';', in accordance with POSIX.
10156
10157 2002-04-06 Mark Mitchell <mark@codesourcery.com>
10158
10159 PR c++/5571
10160 * class.c (layout_class_type): Remember incomplete static
10161 variables.
10162 (finish_struct_1): Call complete_vars, not
10163 hack_incomplete_structures.
10164 * cp-tree.h (hack_incomplete_structures): Rename to ...
10165 (complete_vars): ... this.
10166 (struct saved_scope): Remove incomplete.
10167 (namespace_scope_incomplete): Remove.
10168 * decl.c (struct binding_level): Remove incomplete.
10169 (incomplete_vars): New variable.
10170 (mark_binding_level): Don't mark incomplete.
10171 (print_binding_level): Don't print it.
10172 (mark_saved_scope): Don't mark incomplete.
10173 (pushdecl): Use maybe_register_incopmlete_var.
10174 (cxx_init_decl_processing): Register incomplete_vars for GC.
10175 (start_decl_1): Clarify error message.
10176 (hack_incomplete_vars): Remove.
10177 (maybe_register_incomplete_var): New function.
10178 (complete_vars): Likewise.
10179
10180 2002-04-06 Jason Merrill <jason@redhat.com>
10181
10182 PR c++/4934
10183 * error.c (dump_expr) [CONVERT_EXPR]: Make sure TREE_TYPE (t) is
10184 set before checking it.
10185
10186 PR c++/525
10187 * init.c (build_member_call): Use build_scoped_ref.
10188 (resolve_offset_ref): Likewise.
10189 * call.c (build_scoped_method_call): Likewise.
10190 * tree.c (maybe_dummy_object): Kludge around current_class_type being
10191 wrong.
10192 * typeck2.c (build_scoped_ref): Return the binfo via binfo_p parm.
10193 * cp-tree.h: Adjust.
10194
10195 * init.c (push_base_cleanups): Just use build_scoped_method_call.
10196
10197 PR c++/6179
10198 * method.c (implicitly_declare_fn): Pass unqualified type to
10199 synthesize_exception_spec.
10200
10201 2002-04-04 Neil Booth <neil@daikokuya.demon.co.uk>
10202
10203 * cp-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
10204 * cvt.c: Update comment.
10205 * init.c (expand_cleanup_for_base): Update.
10206 * semantics.c (finish_parenthesized_expr): Update.
10207 * typeck.c (cp_truthvalue_conversion): Update.
10208
10209 2002-04-04 Jason Merrill <jason@redhat.com>
10210
10211 * semantics.c (finish_eh_cleanup): New fn.
10212 * cp-tree.h: Add prototype.
10213 * init.c (perform_member_init, expand_cleanup_for_base): Use
10214 finish_eh_cleanup.
10215 * cp-tree.def (SUBOBJECT, CTOR_STMT): Remove.
10216 * cp-tree.h: Remove references.
10217 * decl.c (begin_constructor_body, end_constructor_body): Likewise.
10218 * dump.c (cp_dump_tree): Likewise.
10219 * pt.c (tsubst_expr): Likewise.
10220 * semantics.c (genrtl_ctor_stmt, genrtl_subobject): Remove.
10221 (cp_expand_stmt): Remove handling of CTOR_STMT and SUBOBJECT.
10222 * tree.c (cp_statement_code_p): Likewise.
10223
10224 * init.c (build_new_1): Set CLEANUP_EH_ONLY on deleting cleanup.
10225
10226 PR c++/5636
10227 * semantics.c (nullify_returns_r): Just set CLEANUP_EH_ONLY on
10228 cleanup for nrv.
10229
10230 PR c++/5104
10231 * typeck.c (comptypes) [FUNCTION_TYPE]: Don't compare exception
10232 specifiers.
10233 [METHOD_TYPE]: Use same code as FUNCTION_TYPE.
10234
10235 2002-04-03 Richard Henderson <rth@redhat.com>
10236
10237 * cp-lang.c (cxx_warn_unused_global_decl): New.
10238 (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
10239
10240 2002-04-03 Neil Booth <neil@daikokuya.demon.co.uk>
10241
10242 * cp-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Redefine.
10243 * tree.c (init_tree): Don't set hook.
10244
10245 2002-04-03 Roger Sayle <roger@eyesopen.com>
10246
10247 PR c++/5998:
10248 * decl.c (duplicate_decls): Don't mess with assembler names when
10249 redeclaring builtin functions as static.
10250
10251 2002-04-01 Neil Booth <neil@daikokuya.demon.co.uk>
10252
10253 * call.c (build_addr_func): Update.
10254 * class.c (resolve_address_of_overloaded_function): Update.
10255 * cp-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
10256 * cp-tree.h (cxx_mark_addressable): New.
10257 * decl.c (register_dtor_fn, cxx_maybe_build_cleanup): Update.
10258 * decl2.c (build_cleanup): Update.
10259 * except.c (build_throw): Update.
10260 * init.c (resolve_offset_ref): Update.
10261 * pt.c (convert_nontype_argument): Update.
10262 * semantics.c (finish_asm_stmt, simplify_affr_init_exprs_r): Update.
10263 * typeck.c (decay_conversion, build_array_ref, build_unary_op,
10264 unary_complex_lvalue): Update.
10265 (mark_addressable): Rename.
10266
10267 2002-04-01 Roger Sayle <roger@eyesopen.com>
10268
10269 PR c++/5998:
10270 * decl.c (duplicate_decls): Overwrite the RTL when (and only
10271 when) overwriting a built-in function. Don't use COPY_DECL_RTL,
10272 but follow the SET_DECL_RTL idiom used elsewhere in the function.
10273
10274 2002-04-01 Neil Booth <neil@daikokuya.demon.co.uk>
10275
10276 * cp-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
10277 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
10278 * decl.c (grokdeclarator): Update.
10279 * mangle.c (write_integer_cst): Update.
10280 * typeck.c (build_binary_op): Update.
10281
10282 2002-03-31 Neil Booth <neil@daikokuya.demon.co.uk>
10283
10284 * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
10285 * lex.c (cxx_init): Don't set hook.
10286
10287 2002-03-31 Neil Booth <neil@daikokuya.demon.co.uk>
10288
10289 * Make-lang.in (error.o): Update.
10290 * cp-lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
10291 * cp-tree.h (struct diagnostic_context): Predeclare.
10292 (cxx_print_error_function): New.
10293 * error.c: Include langhooks-def.h.
10294 (lang_print_error_function): Rename. Update.
10295 (init_error): Don't set hook.
10296
10297 2002-03-29 Neil Booth <neil@daikokuya.demon.co.uk>
10298
10299 * cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
10300 Redefine.
10301 * cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
10302 * decl.c (finish_enum): Similarly.
10303 * error.c (dump_type): Similarly.
10304 * lex.c (cxx_init): Similarly.
10305 * mangle.c (write_builtin_type): Similarly.
10306 * typeck.c (comptypes): Similarly.
10307
10308 2002-03-28 Roger Sayle <roger@eyesopen.com>
10309
10310 PR c++/5998:
10311 * decl.c (cxx_init_decl_processing): Re-enable built-in functions
10312 in the g++ front-end.
10313 (duplicate_decl): Allow redefinition of anticipated built-ins.
10314 Fix inlining problem by over-writing the old DECL_RTL.
10315 (lookup_namespace_name): Fail to find an identifier in the
10316 specified namespace if its still anticipated.
10317 (builtin_function_1): New function split out from builtin_function
10318 to create a builtin in the current namespace with given context.
10319 (builtin_function): Call builtin_function_1 to define the
10320 appropriate builtins in both the std and global namespaces.
10321 (select_decl): Don't test for anticipated decls here.
10322 (unqualified_namespace_lookup): Instead ignore them whilst
10323 searching through scopes and namespaces.
10324 * decl2.c (do_nonmember_using_decl): If a using declaration
10325 specifies an anticipated built-in function, mark it as no longer
10326 anticipated in that scope.
10327 (ambiguous_decl): Avoid resolving to an anticipated decl.
10328 * lex.c (do_scoped_id): Fail to find an identifier in the global
10329 namespace if its still anticipated.
10330
10331 2002-03-29 Neil Booth <neil@daikokuya.demon.co.uk>
10332
10333 * cp-lang.c (LANG_HOOKS_MAKE_TYPE): Redefine.
10334 * cp-tree.h (cp_make_lang_type): Rename.
10335 * lex.c (cp_make_lang_type): Rename.
10336 (make_aggr_type): Update.
10337 * tree.c (init_tree): Don't set make_lang_type_fn.
10338
10339 2002-03-29 Jakub Jelinek <jakub@redhat.com>
10340
10341 PR c++/6073
10342 * class.c (finish_struct_1): Update static field's DECL_MODE even
10343 if its type is a variant of t.
10344
10345 2002-03-27 Neil Booth <neil@daikokuya.demon.co.uk>
10346
10347 * cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.
10348 * cp-tree.h (cxx_insert_default_attributes): New.
10349 * decl.c (insert_default_attributes): Rename.
10350
10351 2002-03-27 Mark Mitchell <mark@codesourcery.com>
10352
10353 PR c++/4884
10354 * call.c (build_op_delete_call): Allow for the fact the placement
10355 may be a COMPOUND_EXPR.
10356
10357 2002-03-27 Neil Booth <neil@daikokuya.demon.co.uk>
10358
10359 * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
10360 * cp-tree.h (init_cplus_expand): Remove.
10361 (cxx_expand_expr): New.
10362 * expr.c (cplus_expand_expr): Rename cxx_expand_expr,
10363 fix prototype.
10364 (init_cplus_expand): Remove.
10365 * lex.c (cxx_init): Don't call init_cplus_expand.
10366
10367 2002-03-26 Mark Mitchell <mark@codesourcery.com>
10368
10369 PR c++/4884.
10370 * init.c (build_new_1): Allow for the fact the result of
10371 build_function_call may be a COMPOUND_EXPR.
10372
10373 2002-03-26 Nathan Sidwell <nathan@codesourcery.com>
10374
10375 PR c++/5682
10376 * cp-tree.h (BINFO_PRIMARY_P): Explain meaning better.
10377 (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
10378 (dfs_skip_nonprimary_vbases_markedp): Remove.
10379 * search.c (get_shared_vbase_if_not_primary): Remove.
10380 (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
10381 (dfs_skip_nonprimary_vbases_markedp): Remove.
10382 (dfs_unmarked_real_bases_queue_p): Just get the canonical binfo.
10383 (dfs_marked_real_bases_queue_p): Likewise.
10384
10385 2002-03-26 Neil Booth <neil@daikokuya.demon.co.uk>
10386
10387 * cp-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
10388 * cp-tree.h (cxx_mark_tree): New.
10389 * decl.c (lang_mark_tree): Rename cxx_mark_tree.
10390
10391 2002-03-25 Neil Booth <neil@daikokuya.demon.co.uk>
10392
10393 * cp-tree.h (cxx_maybe_build_cleanup): New.
10394 * decl.c (destroy_local_var, hack_incomplete_structures): Update.
10395 (maybe_build_cleanup): Rename cxx_maybe_build_cleanup.
10396 * tree.c (build_target_expr): Update.
10397 * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP): Redefine.
10398
10399 2002-03-24 Neil Booth <neil@daikokuya.demon.co.uk>
10400
10401 * decl2.c (cxx_decode_option): Handle -E.
10402 * lang-specs.h (default_compilers): Preprocess with cc1plus.
10403 * lex.c (cxx_init): Exit quickly if c_common_init returns NULL.
10404
10405 2002-03-23 Jakub Jelinek <jakub@redhat.com>
10406
10407 PR c++/6037
10408 * decl.c (start_enum): Don't set TREE_ADDRESSABLE on TREE_LIST node.
10409
10410 2002-03-23 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
10411
10412 * error.c (dump_type): Be careful about implicit typenames.
10413
10414 2002-03-21 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
10415
10416 PR C++/3656
10417 * semantics.c (finish_base_specifier): Handle erronous base
10418 classes.
10419
10420 2002-03-22 Zack Weinberg <zack@codesourcery.com>
10421
10422 * error.c: Always use REAL_VALUE_TO_DECIMAL; don't test
10423 REAL_IS_NOT_DOUBLE.
10424
10425 2002-03-22 Jeff Knaggs <jknaggs@redhat.com>
10426
10427 * typeck.c (get_member_function_from_ptrfunc): Scale idx down to
10428 an index into the vtable_entry array regardless of
10429 TARGET_PTRMEMFUNC_VBIT_LOCATION.
10430
10431 2002-03-21 Aldy Hernandez <aldyh@redhat.com>
10432
10433 * tree.c (cp_cannot_inline_tree_fn): Same.
10434
10435 2002-03-21 Neil Booth <neil@daikokuya.demon.co.uk>
10436
10437 * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
10438 insert_block, getdecls, global_bindings_p): New.
10439
10440 2002-03-20 Nathan Sidwell <nathan@codesourcery.com>
10441
10442 PR c++/4361
10443 * mangle.c (struct globals) Add internal_mangling_p member.
10444 (write_template_param): Do internal mangling, if needed.
10445 (mangle_conv_op_name_for_type): Request internal mangling.
10446
10447 2002-03-20 Jason Merrill <jason@redhat.com>
10448
10449 PR c++/2136
10450 * init.c (build_delete): Check access for a member op delete here.
10451 * decl2.c (delete_sanity): Not here.
10452
10453 2002-03-19 Jason Merrill <jason@redhat.com>
10454
10455 PR c++/5118
10456 * class.c (get_vfield_name): Use the constructor_name.
10457
10458 2002-03-20 Neil Booth <neil@daikokuya.demon.co.uk>
10459
10460 * cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
10461 * cp-tree.h (lang_printable_name): Rename.
10462 * error.c (lang_decl_name): Use new hook.
10463 * lex.c (cxx_init): Remove old hook.
10464 * pt.c (tsubst_decl): Use new hook.
10465 * tree.c (lang_printable_name): Rename.
10466
10467 2002-03-18 Eric Botcazou <ebotcazou@multimania.com>
10468
10469 PR c++/3882
10470 * pt.c (tsubst_decl): Move __PRETTY_FUNCTION__ handling...
10471 (tsubst_expr) [DECL_STMT]: ...here. And substitute the initializer
10472 only after recording the declaration.
10473
10474 2002-03-18 Jason Merrill <jason@redhat.com>
10475
10476 PR c++/2039
10477 * init.c (resolve_offset_ref): Hand off to build_component_ref.
10478
10479 PR c++/4222, c++/5995
10480 * call.c (build_over_call): Fix empty class logic.
10481
10482 PR c++/3870
10483 * cp-tree.h (struct saved_scope): Add last_parms field.
10484 * decl.c (maybe_push_to_top_level): Save last_function_parms.
10485 (pop_from_top_level): Restore it.
10486
10487 PR c++/4377
10488 * mangle.c (write_expression): Strip NOP_EXPRs sooner. Also strip
10489 NON_LVALUE_EXPRs.
10490
10491 PR c++/4003
10492 * pt.c (tsubst_friend_function): Use decl_namespace_context.
10493
10494 PR c++/3948 -- C++ ABI change, followup to 2001-12-18 patch.
10495 * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE for a
10496 type with a nontrivial destructor.
10497
10498 2002-03-17 Jason Merrill <jason@redhat.com>
10499
10500 PR c++/4460
10501 * class.c (build_base_path): Virtual base layout is fixed in
10502 in-charge [cd]tors.
10503
10504 2002-03-17 Neil Booth <neil@daikokuya.demon.co.uk>
10505
10506 * cp-lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
10507 * parse.y (yyparse): Remove macro.
10508
10509 2002-03-17 Jason Merrill <jason@redhat.com>
10510
10511 PR c++/5757
10512 * init.c (build_new_1): Pass the right pointer to op delete.
10513
10514 2002-03-16 Nathan Sidwell <nathan@codesourcery.com>
10515
10516 PR c++/4361
10517 * cp-tree.h (CLASSTYPE_METHOD_VEC): Document where templated
10518 conversion operators go.
10519 (struct lang_decl_flags): Add template_conv_p and unused
10520 bitfields.
10521 (DECL_TEMPLATE_CONV_FN_P): New macro.
10522 * call.c (build_user_type_conversion_1): Don't check second type
10523 conversion of overload set first.
10524 * class.c (add_method): Make sure templated conversion operators
10525 all end up on slot 2.
10526 * lex.c (do_identifier): A conversion operator token might be
10527 satisfied by a templated conversion operator.
10528 * pt.c (check_explicit_specialization): Use
10529 CLASSTYPE_FIRST_CONVERSION_SLOT.
10530 (template_parm_this_level_p): New function.
10531 (push_template_decl_real): Determine DECL_TEMPLATE_CONV_FN_P.
10532 * search.c (lookup_fnfields_1): Template conversions will be on
10533 the first slot.
10534 * typeck.c (build_component_ref): Preserve the type of an
10535 conversion operator name on the overload type.
10536 (build_x_function_call): Retrieve the conversion operator name.
10537
10538 2002-03-15 Richard Henderson <rth@redhat.com>
10539
10540 * init.c (build_new_1): Use size_binop instead of cp_build_binary_op.
10541
10542 2002-03-15 Mark Mitchell <mark@codesourcery.com>
10543
10544 * cp-tree.h (CLEANUP_DECL): Remove.
10545 (CLEANUP_EXPR): Likewise.
10546 * decl.c (destroy_local_var): Simplify.
10547 (maybe_build_cleanup): Tidy.
10548 * dump.c (cp_dump_tree): Remove handling of CLEANUP_STMT.
10549 * semantics.c (cp_expand_stmt): Likewise.
10550 * cp/tree.c (cp_statement_code_p): Likewise.
10551
10552 2002-03-15 Jason Merrill <jason@redhat.com>
10553
10554 PR c++/5857
10555 * decl.c (duplicate_decls): Use merge_types instead of common_type.
10556 * typeck.c (common_type): Just hand off to
10557 type_after_usual_arithmetic_conversions and
10558 composite_pointer_type.
10559 (merge_types): New fn.
10560 (commonparms): Use it instead of common_type.
10561 (type_after_usual_arithmetic_conversions): Also handle COMPLEX_TYPE.
10562 (composite_pointer_type): Also handle attributes.
10563 * cp-tree.h: Declare merge_types.
10564
10565 * decl.c (make_rtl_for_nonlocal_decl): Also defer COMDAT
10566 variables.
10567 * decl2.c (maybe_make_one_only): Also mark the decl as needed.
10568
10569 2002-03-14 Richard Henderson <rth@redhat.com>
10570
10571 * decl.c: Include c-pragma.h.
10572 (start_decl, start_function): Invoke maybe_apply_pragma_weak.
10573 * Make-lang.in: Update dependencies.
10574
10575 2002-03-14 Jakub Jelinek <jakub@redhat.com>
10576
10577 PR c++/5908
10578 * call.c (build_over_call): Set TREE_NO_UNUSED_WARNING too.
10579 * cvt.c (convert_to_void): Preserve TREE_NO_UNUSED_WARNING.
10580
10581 2002-03-12 Richard Sandiford <rsandifo@redhat.com>
10582
10583 * mangle.c (write_builtin_type): Handle 128-bit integers even if
10584 they are not a standard integer type.
10585
10586 2002-03-12 Richard Sandiford <rsandifo@redhat.com>
10587
10588 * cp-tree.h (init_init_processing): Remove declaration.
10589 * init.c (BI_header_type, init_init_processing): Remove old ABI stuff.
10590 * decl.c (cxx_init_decl_processing): Don't call init_init_processing.
10591
10592 2002-03-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
10593
10594 * cp-lang.c (tree_code_type, tree_code_length, tree_code_name):
10595 Define.
10596 * decl.c (duplicate_decls): Use TREE_CODE_LENGTH, not
10597 tree_code_length.
10598 * lex.c (cplus_tree_code_type, cplus_tree_code_length,
10599 cplus_tree_code_name): Delete.
10600 (cxx_init): Don't call add_c_tree_codes, instead set
10601 lang_unsafe_for_reeval. Don't try to copy into the various
10602 tree_code arrays.
10603
10604 2002-03-12 Nathan Sidwell <nathan@codesourcery.com>
10605
10606 PR c++/5659
10607 * decl.c (xref_tag): Don't set CLASSTYPE_DECLARED_CLASS here.
10608 * decl2.c (handle_class_head): Set CLASSTYPE_DECLARED_CLASS for
10609 definitions.
10610
10611 2002-03-11 Nathan Sidwell <nathan@codesourcery.com>
10612
10613 Revert 2001-03-26 Nathan Sidwell <nathan@codesourcery.com>,
10614 DR209 is now not a defect.
10615 * cp-tree.h (skip_type_access_control): Remove.
10616 * decl.c (grokdeclarator): Do type access control for friend
10617 declarations.
10618 * semantics.c (decl_type_access_control): Don't reset
10619 current_type_lookups.
10620 (save_type_access_control): Always save the lookups.
10621 (skip_type_access_control): Remove.
10622 (finish_class_definition): Don't change type_lookups.
10623
10624 2002-03-11 Nathan Sidwell <nathan@codesourcery.com>
10625
10626 Revert 2000-12-01 Nathan Sidwell <nathan@codesourcery.com>,
10627 It is incorrect.
10628 * typeck.c (build_static_cast): Compare non-qualified types
10629 with pointer to member conversions.
10630
10631 2002-03-11 Dan Nicolaescu <dann@ics.uci.edu>
10632 Daniel Berlin <dan@dberlin.org>
10633
10634 * cp-lang.c (ok_to_generate_alias_set_for_type): New function.
10635 (cxx_get_alias_set): Use it.
10636
10637 2002-03-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
10638
10639 * cp-tree.h (stabilize_expr): Prototype.
10640
10641 2002-03-08 Craig Rodrigues <rodrigc@gcc.gnu.org>
10642
10643 * cp-tree.h (CLEAR_BINFO_MARKED): Make both parts of
10644 conditional return void.
10645
10646 2002-03-08 Neil Booth <neil@daikokuya.demon.co.uk>
10647
10648 * cp-lang.c (LANG_HOOKS_UNSAVE): Redefine.
10649 * cp-tree.h (cxx_unsave): New.
10650 * tree.c (cp_unsave): Rename cxx_unsave, update prototype.
10651 (init_tree): Update.
10652
10653 2002-03-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
10654
10655 * decl.c (cxx_init_decl_processing): Use ARRAY_SIZE in lieu of
10656 explicit sizeof/sizeof.
10657 * decl2.c (cxx_decode_option): Likewise.
10658 * lex.c (init_reswords, REDUCE_LENGTH, TOKEN_LENGTH): Likewise.
10659
10660 2002-03-02 Nathan Sidwell <nathan@codesourcery.com>
10661
10662 PR c++/775
10663 * decl.c (lookup_tag): Only reject enum/class mismatch, not
10664 class/union mismatch.
10665 * parse.y (check_class_key): New function.
10666 (structsp): Call it.
10667
10668 2002-03-01 Michael Matz <matz@suse.de>
10669
10670 * typeck.c (cp_pointer_int_sum): Complete inner type which is
10671 used later by size_in_bytes().
10672
10673 2002-03-01 Phil Edwards <pme@gcc.gnu.org>
10674
10675 * cp-tree.h: Require __GNUC__ to be #defined.
10676 (build_init): Add missing prototype.
10677
10678 2002-03-01 Jason Merrill <jason@redhat.com>
10679
10680 * except.c: Don't include decl.h or obstack.h. Do include
10681 tree-inline.h.
10682 (build_throw): Destroy temporaries from the thrown
10683 expression before calling __cxa_throw. Construct a thrown
10684 temporary directly into the exception object.
10685 (stabilize_throw_expr): New function.
10686 (wrap_cleanups_r): New function.
10687 * tree.c (stabilize_expr): New function.
10688 * init.c (build_init): New function.
10689 * Make-lang.in (cp/except.o): Adjust .h deps.
10690
10691 2002-02-28 Jason Merrill <jason@redhat.com>
10692
10693 * search.c (lookup_base_r): Don't clear is_non_public just because
10694 we found a friendly scope.
10695
10696 * decl.c (finish_function): Only warn about missing return
10697 statement with -Wreturn-type.
10698
10699 2002-02-28 Neil Booth <neil@daikokuya.demon.co.uk>
10700
10701 * class.c (build_clone): Update.
10702 * cp-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
10703 * cp-tree.h (cxx_dup_lang_specific_decl): New.
10704 * lex.c (copy_lang_decl): Rename cxx_dup_lang_specific_decl.
10705 (copy_decl): Update.
10706 * method.c (make_thunk): Update.
10707
10708 2002-02-27 Zack Weinberg <zack@codesourcery.com>
10709
10710 * decl2.c: Delete traditional-mode-related code copied from
10711 the C front end but not used, or used only to permit the
10712 compiler to link.
10713
10714 2002-02-24 Craig Rodrigues <rodrigc@gcc.gnu.org>
10715
10716 PR c++/4093
10717 * cp-tree.h (SET_BINFO_MARKED): Cast false part of condition
10718 to void.
10719
10720 2002-02-22 Jakub Jelinek <jakub@redhat.com>
10721
10722 PR other/5746
10723 * semantics.c (finish_switch_cond): Don't call get_unwidened
10724 if error_mark_node.
10725
10726 2002-02-22 Nathan Sidwell <nathan@codesourcery.com>
10727
10728 PR c++/2645, DR 295
10729 * cp-tree.h (tsubst_flags_t): Add tf_ignore_bad_quals,
10730 tf_keep_type_decl.
10731 (make_typename_type): Use tsubst_flags_t.
10732 * decl.c (make_typename_type): Adjust. Return non-artificial
10733 TYPE_DECLs, if required.
10734 (grokdeclarator): Simplify CVR qualification handling. Allow bad
10735 qualifiers on typedef types.
10736 * decl2.c (handle_class_head): Adjust make_typename_type call.
10737 * parse.y (nested_name_specifier): Likewise.
10738 (typename_sub0): Likewise.
10739 (typename_sub1): Likewise.
10740 * pt.c (convert_template_argument): Adjust make_typename_type
10741 return value.
10742 (tsubst): Adjust cp_build_qualified_type_real calls.
10743 (check_cv_quals_for_unify): Cope with allowing bad qualifications
10744 on template type parms.
10745 (instantiate_decl): Recheck substitutions to give warnings on bad
10746 qualifications.
10747 * tree.c (cp_build_qualified_type_real): Use tf_allow_bad_quals.
10748
10749 2002-02-21 Aldy Hernandez <aldyh@redhat.com>
10750
10751 * cp/decl.c (duplicate_decls): Merge always_inline attribute.
10752
10753 * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
10754 unless DECL_ALWAYS_INLINE.
10755
10756 2002-02-20 Jakub Jelinek <jakub@redhat.com>
10757
10758 * typeck.c (cp_pointer_int_sum): Renamed from
10759 pointer_int_sum, call pointer_int_sum.
10760
10761 2002-02-20 Jakub Jelinek <jakub@redhat.com>
10762
10763 * decl.c (duplicate_decls): Return 0 if issued error about
10764 redeclaration.
10765
10766 2002-02-19 Jason Merrill <jason@redhat.com>
10767
10768 ABI change: Mangle `void (A::*)() const' as
10769 M1AKFvvE, not MK1AFvvE.
10770 * mangle.c (write_function_type): Write cv-quals for member
10771 function type here.
10772 (write_pointer_to_member_type): Not here.
10773
10774 2002-02-18 Jason Merrill <jason@redhat.com>
10775
10776 * pt.c (do_type_instantiation): Don't pedwarn if in_system_header.
10777 (do_decl_instantiation): Likewise.
10778
10779 2002-02-17 Craig Rodrigues <rodrigc@gcc.gnu.org>
10780
10781 PR c++/5685
10782 * decl.c (duplicate_decls): Make warning unconditional
10783 if duplicate default argument declarations are present.
10784
10785 2002-02-17 Jakub Jelinek <jakub@redhat.com>
10786
10787 * typeck.c (build_binary_op) [BIT_XOR_EXPR]: Remove explicit
10788 shortening.
10789
10790 2002-02-15 Nathan Sidwell <nathan@codesourcery.com>
10791
10792 * decl.c (grokdeclarator): Set typedef_decl for all TYPE_DECLs,
10793 remove incorrect comment. Move #if 0'd code to common path. Use
10794 IMPLICIT_TYPENAME_P. Simplify & reformat ARRAY_TYPE duplication.
10795
10796 2002-02-13 Jason Merrill <jason@redhat.com>
10797
10798 * decl.c (builtin_function): Set TREE_THIS_VOLATILE on return fns.
10799 (finish_function): Don't warn if current_function_returns_null.
10800
10801 * typeck2.c (digest_init): Do handle values of vector type.
10802
10803 * typeck2.c (digest_init, process_init_constructor): Treat vectors
10804 like arrays.
10805
10806 2002-02-11 Jason Merrill <jason@redhat.com>
10807
10808 * parse.y (reserved_declspecs): Don't handle attributes.
10809 (reserved_typespecquals): Handle them here.
10810 * Make-lang.in (parse.c): Adjust expected conflicts.
10811
10812 2002-02-08 Jakub Jelinek <jakub@redhat.com>
10813
10814 * parse.y (primary, primary_no_id): Use compstmt_or_stmtexpr
10815 instead of compstmt.
10816 (compstmt_or_stmtexpr): Renamed from compstmt.
10817 (compstmt): In addition to compstmt_or_stmtexpr clear last_expr_type.
10818
10819 2002-02-07 Nathan Sidwell <nathan@codesourcery.com>
10820
10821 Rename instantiate_type_flags to tsubst_flags_t & expand use.
10822 * cp-tree.h (instantiate_type_flags): Rename to ...
10823 (tsubst_flags_t): ... here. Rename itf_complain to tf_error,
10824 add tf_warning flag.
10825 (instantiate_type): Adjust prototype.
10826 (tsubst, tsubst_expr, tsubst_copy, lookup_template_class,
10827 do_type_instantiation, cp_build_qualified_type_real): Likewise.
10828 cp_build_qualified_type: Adjust.
10829 * class.c (instantiate_type): Adjust parameter. Rename itf_* to
10830 tf_*.
10831 * call.c (standard_conversion): Rename itf_* to tf_*.
10832 (reference_binding): Likewise.
10833 (convert_like_real): Likewise.
10834 * cvt.c (cp_convert_to_pointer): Likewise.
10835 (convert_to_reference): Likewise.
10836 * decl.c (lookup_namespace_name): Use tf_* flags.
10837 (make_typename_type): Likewise.
10838 (grokdeclarator): Likewise.
10839 * pt.c (convert_nontype_argument): Adjust COMPLAIN usage.
10840 (coerce_template_template_parms, convert_template_argument,
10841 coerce_template_parms, maybe_get_template_decl_from_type_decl,
10842 lookup_template_class, tsubst_friend_function, tsubst_friend_class,
10843 instantiate_class_template, tsubst_template_arg_vector,
10844 tsubst_template_parms, tsubst_aggr_type, tsubst_default_argument,
10845 tsubst_decl, tsubst_arg_types, tsubst_function_type,
10846 tsubst_call_declarator_parms, tsubst, tsubst_copy, tsubst_expr,
10847 instantiate_template, fn_type_unification,
10848 resolve_overloaded_unification, verify_class_unification,
10849 unify, get_bindings_real, do_type_instantiation,
10850 regenerate_decl_from_template, instantiate_decl,
10851 tsubst_initializer_list, tsubst_enum,
10852 get_mostly_instantiated_function_type,
10853 invalid_nontype_parm_type_p): Likewise.
10854 * tree.c (cp_build_qualified_type_real): Likewise.
10855 * typeck.c (build_binary_op): Rename itf_* to tf_*.
10856 (build_ptrmemfunc): Likewise.
10857 (convert_for_assignment): Likewise.
10858
10859 2002-02-07 Nathan Sidwell <nathan@codesourcery.com>
10860
10861 PR c++/109
10862 * decl.c (grokdeclarator): Allow friend declarations from
10863 dependent types.
10864 * decl2.c (handle_class_head): Don't push into template parm contexts.
10865 * pt.c (push_template_decl_real): Template parm contexts are never
10866 being defined.
10867
10868 2002-02-05 Alexandre Oliva <aoliva@redhat.com>
10869
10870 * class.c: Include target.h.
10871 (check_bitfield_decl): Disregard EMPTY_FIELD_BOUNDARY,
10872 BITFIELDS_NBYTES_LIMITED and PCC_BITFIELD_TYPE_MATTERS for MS
10873 bit-field layout.
10874 * Make-lang.in: Adjust deps.
10875
10876 2002-02-05 Jason Merrill <jason@redhat.com>
10877
10878 * error.c (dump_type): Be more helpful about VECTOR_TYPE.
10879
10880 2002-02-04 Jakub Jelinek <jakub@redhat.com>
10881
10882 * semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
10883 (finish_switch_cond): Set SWITCH_TYPE.
10884
10885 2002-02-04 Richard Henderson <rth@redhat.com>
10886
10887 * method.c (use_thunk): Always initialize the block tree. Reindent.
10888 * semantics.c (expand_body): Emit thunks after function, not before.
10889
10890 2002-02-04 Jason Merrill <jason@redhat.com>
10891
10892 * decl.c (start_function): Call cplus_decl_attributes immediately
10893 after grokdeclarator.
10894
10895 * decl.c (start_function): Combine DECL_RESULT handling code.
10896
10897 2002-02-03 Jason Merrill <jason@redhat.com>
10898
10899 * xref.c: Remove.
10900 * Make-lang.in (CXX_OBJS): Remove cp/xref.o
10901 (cp/xref.o): Remove dependencies.
10902 * class.c (finish_struct_1, check_methods): Don't call xref fns.
10903 (finish_struct_1): Likewise.
10904 * friend.c (make_friend_class): Likewise.
10905 * lex.c (cxx_init, cxx_finish, extract_interface_info): Likewise.
10906 * spew.c (read_process_identifier): Likewise.
10907
10908 2002-02-01 Jason Merrill <jason@redhat.com>
10909
10910 PR c++/4872
10911 * decl.c (finish_function): Warn about a non-void function with
10912 no return statement and no abnormal exit.
10913 * cp-tree.h (struct cp_language_function): Add returns_abnormally.
10914 (current_function_returns_abnormally): New macro.
10915 * call.c (build_call): Set it.
10916
10917 * typeck.c (build_component_ref): Always complain about offsetof
10918 constructs on non-PODs. Only make it an error for members of
10919 virtual bases.
10920
10921 * error.c (dump_scope): Don't add TFF_DECL_SPECIFIERS.
10922 (dump_function_decl): Always dump parms.
10923
10924 * decl2.c (finish_static_data_member_decl): Complain about a local
10925 class with a static data member.
10926
10927 PR c++/4286
10928 * search.c (lookup_field_1): Don't xref a static data member
10929 just because we looked it up.
10930
10931 2002-01-31 Jason Merrill <jason@redhat.com>
10932
10933 * Make-lang.in (parse.c): Handle .output file.
10934
10935 PR c++/3395
10936 * decl.c (xref_tag): Remember early attributes in TYPE_ATTRIBUTES,
10937 not TREE_TYPE.
10938 * semantics.c (finish_class_definition): Adjust.
10939
10940 Allow attributes in parms and casts.
10941 * parse.y (named_parm): Don't strip attrs.
10942 (declmods): Remove 'attributes' production.
10943 (nonempty_cv_qualifiers): Accept attributes.
10944 (ATTRIBUTE): Give precedence.
10945 * decl.c (groktypename): Handle attributes.
10946 (grokparms): Likewise.
10947
10948 2002-01-29 Jakub Jelinek <jakub@redhat.com>
10949
10950 * decl2.c (cxx_decode_option): Pass 0 as last argument to
10951 cpp_handle_option.
10952 * lang-specs.h: Use cpp_unique_options instead of cpp_options
10953 when used together with cc1_options.
10954
10955 2002-01-29 Nathan Sidwell <nathan@codesourcery.com>
10956
10957 PR c++/5132
10958 * typeck2.c (digest_init): Make sure non-array core type is
10959 instantiated.
10960 * decl2.c (reparse_absdcl_as_casts): Just store the type in the
10961 constructor, rather than build a new one.
10962 (build_expr_from_tree, CONSTRUCTOR case): Be careful with the
10963 PURPOSE of constructor elts.
10964
10965 2002-01-23 Zack Weinberg <zack@codesourcery.com>
10966
10967 * Make-lang.in (parse.c): Adjust expected number of
10968 shift-reduce conflicts.
10969 (decl.o): Depend on diagnostic.h.
10970 * decl.c: Include diagnostic.h.
10971 (grokdeclarator): Check for null pointer.
10972 (finish_function): Don't abort when
10973 current_binding_level->parm_flag != 1, if errors have
10974 occurred; throw away the statement tree and extra binding
10975 levels, and continue.
10976 * lex.c (note_list_got_semicolon): Check for null pointer.
10977 * method.c (hack_identifier): Just return error_mark_node if
10978 value is error_mark_node.
10979 * parse.y (primary: TYPEID(type_id)): No need to use
10980 TYPE_MAIN_VARIANT here.
10981 (handler_seq): Accept an empty list of catch clauses and
10982 generate a fake handler block to avoid later crashes.
10983 (ansi_raise_identifier): Accept the error token too.
10984 * semantics.c (begin_class_definition,
10985 finish_class_definition): Check for error_mark_node.
10986
10987 2002-01-23 Zack Weinberg <zack@codesourcery.com>
10988
10989 * typeck2.c (friendly_abort): Delete definition.
10990 * cp-tree.h (friendly_abort): Don't prototype.
10991 (my_friendly_assert): Use fancy_abort.
10992
10993 2002-01-23 Craig Rodrigues <rodrigc@gcc.gnu.org>
10994
10995 * cp-tree.h (my_friendly_abort): Remove.
10996
10997 2002-01-23 Jakub Jelinek <jakub@redhat.com>
10998
10999 * spew.c (pending_inlines, pending_inlines_tail,
11000 processing_these_inlines): Make static.
11001 (mark_pending_inlines): Remove static.
11002 (begin_parsing_inclass_inline): If in function, save pi
11003 for GC to cp_function_chain->unparsed_inlines instead.
11004 (process_next_inline): Likewise.
11005 * cp-tree.h (struct cp_language_function): Add unparsed_inlines.
11006 (mark_pending_inlines): Add prototype.
11007 * decl.c (spew_debug): Remove unused extern.
11008 (mark_lang_function): Call mark_pending_inlines.
11009
11010 2002-01-23 Craig Rodrigues <rodrigc@gcc.gnu.org>
11011
11012 * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
11013 init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
11014 semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
11015 Change my_fancy_abort() to abort().
11016
11017 2002-01-23 Jason Merrill <jason@redhat.com>
11018
11019 PR c++/5453
11020 * class.c (fixed_type_or_null): Fix thinko.
11021
11022 PR c++/3331
11023 * init.c (resolve_offset_ref): Use build_indirect_ref.
11024
11025 * decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.
11026
11027 2002-01-22 Jason Merrill <jason@redhat.com>
11028
11029 * parse.y (function_body): Suppress the block for the outermost
11030 curly braces.
11031 * decl.c (pushdecl): Don't try to skip it.
11032 (begin_function_body): Keep the block we create, not the next one.
11033 * init.c (emit_base_init): Don't mess with keep_next_level.
11034
11035 * class.c (build_base_path): Tweak formatting.
11036
11037 2002-01-19 Nathan Sidwell <nathan@codesourcery.com>
11038
11039 Fix regression introduced with patch for c++/775
11040 * parse.y (class_head_defn): Check for template specializations
11041 with a different class-key.
11042
11043 2002-01-17 Jason Merrill <jason@redhat.com>
11044
11045 * decl.c (begin_constructor_body, begin_destructor_body): New fns.
11046 (begin_function_body): Call them and keep_next_level.
11047 * init.c (emit_base_init): Call keep_next_level.
11048 * semantics.c (setup_vtbl_ptr): Lose.
11049 * cp-tree.h (struct cp_language_function): Remove vtbls_set_up_p.
11050 (vtbls_set_up_p): Lose.
11051 * pt.c (tsubst_expr, CTOR_INITIALIZER): Call emit_base_init.
11052 * method.c (do_build_copy_constructor): Likewise.
11053 (synthesize_method): Call finish_mem_initializers.
11054 * parse.y (nodecls): Likewise.
11055
11056 * error.c (dump_type_suffix): Print the exception specs before
11057 recursing.
11058 (dump_function_decl): Here, too.
11059
11060 * cp-tree.h (TMPL_PARMS_DEPTH): Cast to signed HOST_WIDE_INT.
11061
11062 2002-01-10 Ira Ruben <ira@apple.com>
11063
11064 PR c++/907
11065 * decl.c (start_method): Handle attrlist.
11066
11067 2002-01-10 Jakub Jelinek <jakub@redhat.com>
11068
11069 * decl2.c (max_tinst_depth): Increase default limit to 500.
11070
11071 2002-01-10 Graham Stott <grahams@redhat.com>
11072
11073 * spew.c (YYCHAR): Uppercase macro parameter and add
11074 parenthesis.
11075 (YYCODE): Likewise.
11076 (NAME): Uppercase macro parameter.
11077
11078 2002-01-09 Graham Stott <grahams@redhat.com>
11079
11080 * decl.h (grokdeclarator): Wrap long line.
11081
11082 * semantics.c (FINISH_COND): Uppercase macro paramaters and
11083 add parenthesis.
11084
11085 2002-01-08 Graham Stott <grahams@redhat.com>
11086
11087 * xref.c (FILE_NAME_ABSOLUTE_P): Add parenthesis.
11088 (PALLOC): Uppercase macro parameter and whitespace.
11089 (SALLOC): Uppercase macro parameter.
11090 (SFREE): Uppercase macros parameter, add parenthese and
11091 whitespace.
11092 (STREQL): Uppercase macro parameter and whitespace.
11093 (STRNEQ): Likewise.
11094 (STRLSS): Likewise.
11095 (STRLEQ): Likewise.
11096 (STRGTR): Likewise.
11097 (STRGEQ): Likewise.
11098
11099 * call.c (convert_like): Add parenthesis and wrap.
11100 (convert_like_with_context): Likewise.
11101 (ICS_RANK): Whitespace.
11102 (NEED_TEMPORARY_P): Remove parenthesis.
11103
11104 * class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and
11105 whitespace.
11106 (VTT_MARKED_BINFO_P): Likewise.
11107
11108 * decl.c (BINDING_LEVEL): Add parenthesis.
11109 (DEF_OPERATOR): Likewise.
11110
11111 * mangle.c (MANGLE_TRACE): Add parenthesis.
11112 (MANGLE_TRACE_TREE): Likewise.
11113 (write_signed_number): Likewise.
11114 (write_unsigned_number): Likewise.
11115
11116 * pt.c (ccat): Uppercase macro parameter.
11117 (cat): Likewise
11118
11119 * search.c (SET_BINFO_ACCESS): Add parenthesis.
11120
11121 2002-01-07 Jason Merrill <jason@redhat.com>
11122
11123 * decl2.c (coerce_new_type): Downgrade error for size_t mismatch
11124 to pedwarn.
11125
11126 PR c++/3536
11127 * method.c (make_thunk): If !flag_weak, give the thunk the
11128 function's linkage.
11129 (use_thunk): Here, too.
11130
11131 2002-01-07 Graham Stott <grahams@redhat.com>
11132
11133 * error.c: Update copyright date.
11134 (print_scope_operator): Add parenthesis.
11135 (print_left_paren): Likewise.
11136 (print_right_paren): Likewise.
11137 (print_left_bracket): Likewise.
11138 (print_right_bracket): Likewise.
11139 (print_template_argument_list_start): Likewise.
11140 (print_template_argument_list_end): Likewise.
11141 (print_non_consecutive_character): Likewise.
11142 (print_tree_identifier): Likewise.
11143 (print_identifier): Likewise.
11144 (NEXT_CODE): Uppercase macro parameter.
11145 (ident_fndecl): Delete unused.
11146 (GLOBAL_THING): Likewise.
11147
11148 2002-01-06 Graham Stott <grahams@redhat.com>
11149
11150 * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK): Add parenthesis.
11151 (VAR_FUNCTION_OR_PARM_DECL_CHECK): Likewise.
11152 (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK) Likewise.
11153 (RECORD_OR_UNION_TYPE_CHECK): Likewise.
11154 (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Likewise.
11155 (C_IS_RESERVED_WORD): Uppercase macro parameter.
11156 (C_RID_YYCODE) Likewise.
11157 (ptrmem_cst): Use rtx.
11158 (LOCAL_BINDING_P): Add whitespace.
11159 (INHERITED_VALUE_BINDING_P): Likewise.
11160 (BINDING_SCOPE): Wrap long line.
11161 (BINDING_HAS_LEVEL_P): Remove parenthesis.
11162 (BINDING_VALUE): Wrap long line.
11163 (BINDING_TYPE): Whitespace.
11164 (IDENTIFIER_GLOBAL_VALUE): Add parenthesis.
11165 (SET_IDENTIFIER_GLOBAL_VALUE): Likewise.
11166 (IDENTIFIER_NAMESPACE_VALUE): Likewise.
11167 (SET_IDENTIFIER_NAMESPACE_VALUE: Likewise.
11168 (same_type_p): Uppercase macro parameters.
11169 (same_type_ignoring_top_level_qualifiers_p): Likewise.
11170 (OVL_FUNCTION): Wrap long line.
11171 (OVL_CHAIN): Whitespace.
11172 (OVL_CURRENT): Add parenthesis and whitespace.
11173 (OVL_NEXT): Whitespace.
11174 (OVL_USED): Likewise.
11175 (IDENTIFIER_TYPE_VALUE): Likewise.
11176 (REAL_IDENTIFIER_TYPE_VALUE): Remove parenthesis.
11177 (SET_IDENTIFIER_TYPE_VALUE): Add parenthesis and whitespace.
11178 (LANG_ID_FIELD): Whitespace.
11179 (SET_LANG_ID(NODE,VALUE,NAME): Likewise.
11180 (IDENTIFIER_LABEL_VALUE): Whitespace and wrap.
11181 (SET_IDENTIFIER_LABEL_VALUE): Whitespace.
11182 (IDENTIFIER_IMPLICIT_DECL): Whitespace and wrap.
11183 (SET_IDENTIFIER_IMPLICIT_DECL); Whitespace.
11184 (IDENTIFIER_ERROR_LOCUS): Whitespace and wrap.
11185 (SET_IDENTIFIER_ERROR_LOCUS); Whitespace.
11186 (IDENTIFIER_VIRTUAL_P): Likewise.
11187 (IDENTIFIER_OPNAME_P): Likewise.
11188 (IDENTIFIER_TYPENAME_P): Remove parenthesis.
11189 (C_TYPE_FIELDS_READONLY): Uppercase macro parameters.
11190 (C_SET_EXP_ORIGINAL_CODE): Likewise.
11191 (TYPE_ASSEMBLER_NAME_STRING): Wrap long line.
11192 (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
11193 (IS_AGGR_TYPE): Uppercase macro parameter.
11194 (CLASS_TYPE_P): Likewise.
11195 (IS_AGGR_TYPE_CODE): Uppercase macro parameter and parenthesis.
11196 (IS_AGGR_TYPE_2): Whitespace.
11197 (TAGGED_TYPE_P): Uppercase macro parameter.
11198 (TYPE_BUILT_IN): Whitespace.
11199 (TYPE_FOR_JAVA): Likewise.
11200 (FUNCTION_ARG_CHAIN): Remove parenthesis.
11201 (FUNCTION_FIRST_USER_PARMTYPE): Add parenthesis.
11202 (FUNCTION_FIRST_USER_PARAM): Likewise.
11203 (PROMOTES_TO_AGGR_TYPE): Whitespace.
11204 (DERIVED_FROM_P): Add parenthesis and wrap.
11205 (UNIQUELY_DERIVED_FROM_P): Likewise.
11206 (ACCESSIBLY_UNIQUELY_DERIVED_P): Likewise.
11207 (PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
11208 (CLASSTYPE_USE_TEMPLATE): Whitespace.
11209 (CLASSTYPE_INLINE_FRIENDS): Remove parenthesis.
11210 (TYPE_GETS_DELETE): Add parenthesis.
11211 (TYPE_HAS_CONVERSION): Add parenthesis and wrap.
11212 (TYPE_HAS_ASSIGN_REF): Likewise,
11213 (TYPE_HAS_CONST_ASSIGN_REF): Likewise.
11214 (TYPE_HAS_INIT_REF): Likewise.
11215 (TYPE_HAS_CONST_INIT_REF): Likewise.
11216 (TYPE_BEING_DEFINED): Likewise.
11217 (TYPE_LANG_SPECIFIC): Likewise.
11218 (CLASSTYPE_RTTI): Likewise.
11219 (TYPE_OVERLOADS_CALL_EXPR): Likewise.
11220 (TYPE_OVERLOADS_ARRAY_REF): Likewise.
11221 (TYPE_OVERLOADS_ARROW): Likewise.
11222 (TYPE_USES_MULTIPLE_INHERITANCE): Likewise.
11223 (TYPE_USES_VIRTUAL_BASECLASSES): Add parenthesis.
11224 (CLASSTYPE_METHOD_VEC): Likewise.
11225 (CLASSTYPE_MARKED_N): Likewise.
11226 (CLASSTYPE_MARKED): Likewise.
11227 (CLASSTYPE_MARKED2): Likewise.
11228 (CLASSTYPE_MARKED3): Likewise.
11229 (CLASSTYPE_MARKED4): Likewise.
11230 (CLASSTYPE_MARKED5): Likewise.
11231 (CLASSTYPE_MARKED6): Likewise.
11232 (SET_CLASSTYPE_MARKED): Whitespace.
11233 (CLEAR_CLASSTYPE_MARKED): Likewise.
11234 (SET_CLASSTYPE_MARKED2): Likewise.
11235 (CLEAR_CLASSTYPE_MARKED2): Likewise.
11236 (SET_CLASSTYPE_MARKED3): Likewise.
11237 (CLEAR_CLASSTYPE_MARKED3): Likewise.
11238 (SET_CLASSTYPE_MARKED4): Likewise.
11239 (CLEAR_CLASSTYPE_MARKED4): Likewise.
11240 (SET_CLASSTYPE_MARKED5): Likewise.
11241 (CLEAR_CLASSTYPE_MARKED5): Likewise.
11242 (SET_CLASSTYPE_MARKED6): Likewise.
11243 (CLEAR_CLASSTYPE_MARKED6): Likewise.
11244 (CLASSTYPE_TAGS): Likewise.
11245 (CLASSTYPE_VSIZE): Likewise.
11246 (CLASSTYPE_VBASECLASSES): Likewise.
11247 (CANONICAL_BINFO): Add parenthesis.
11248 (CLASSTYPE_SIZE(NODE): Likewise.
11249 (CLASSTYPE_SIZE_UNIT): Likewise.
11250 (CLASSTYPE_ALIGN(NODE): Likewise.
11251 (CLASSTYPE_USER_ALIGN): Likewise.
11252 (TYPE_JAVA_INTERFACE): Likewise.
11253 (CLASSTYPE_PURE_VIRTUALS): Likewise.
11254 (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Whitespace and wrap.
11255 (TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
11256 (CLASSTYPE_HAS_MUTABLE): Likewise.
11257 (CLASSTYPE_FRIEND_CLASSES): Likewise. Likewise.
11258 (CLASSTYPE_DECLARED_CLASS): Whitespace and wrap.
11259 (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Likewise.
11260 (CLASSTYPE_REF_FIELDS_NEED_INIT): Likewise.
11261 (CLASSTYPE_INTERFACE_ONLY): Likewise.
11262 (CLASSTYPE_INTERFACE_KNOWN): Likewise.
11263 (CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
11264 (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
11265 (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
11266 (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
11267 (CLASSTYPE_DEBUG_REQUESTED): Whitespace and wrap.
11268 (BINFO_UNSHARED_MARKED): Whitespace.
11269 (BINFO_MARKED): Whitespace and wrap.
11270 (SET_BINFO_MARKED): Likewise.
11271 (CLEAR_BINFO_MARKED): Likewise.
11272 (BINFO_VTABLE_PATH_MARKED): Likewise.
11273 (SET_BINFO_VTABLE_PATH_MARKED): Likewise.
11274 (CLEAR_BINFO_VTABLE_PATH_MARKED): Likewise.
11275 (BINFO_SUBVTT_INDEX): Remove parenthesis.
11276 (BINFO_VPTR_INDEX): Likewise.
11277 (BINFO_PRIMARY_BASE_OF): Likewise,
11278 (CLASSTYPE_VFIELDS): Whitespace.
11279 (VF_DERIVED_VALUE): Wrap long line.
11280 (NAMESPACE_LEVEL): Whitespace.
11281 (CAN_HAVE_FULL_LANG_DECL_P): Remove parenthesis.
11282 (DEFARG_POINTER): Whitespace.
11283 (DECL_NEEDED_P): Remove parenthesis.
11284 (DECL_LANGUAGE): Whitespace.
11285 (SET_DECL_LANGUAGE): Add parenthesis.
11286 (DECL_CONSTRUCTOR_P): Whitespace and wrap.
11287 (DECL_OVERLOADED_OPERATOR_P): Remove parenthesis.
11288 (DECL_IN_AGGR_P): Whitespace.
11289 (DECL_FRIEND_P): Likewise.
11290 (DECL_BEFRIENDING_CLASSES): Likewise.
11291 (DECL_STATIC_FUNCTION_P): Whitespace and wrap.
11292 (DECL_NONCONVERTING_P): Whitespace.
11293 (DECL_PURE_VIRTUAL_P): Likewise.
11294 (DECL_NEEDS_FINAL_OVERRIDER_P): Likewise.
11295 (DECL_PENDING_INLINE_INFO): Whitespace.
11296 (DECL_SORTED_FIELDS): Likewise.
11297 (DECL_DEFERRED_FN): Likewise.
11298 (DECL_TEMPLATE_INFO): Likewise.
11299 (CLASSTYPE_TEMPLATE_INFO): Whitespace and wrap.
11300 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO); Likewise.
11301 (SET_TYPE_TEMPLATE_INFO): Add parenthesis.
11302 (TMPL_ARGS_LEVEL): Likewise.
11303 (SET_TMPL_ARGS_LEVEL): Likewise.
11304 (INNERMOST_TEMPLATE_PARMS): Whitespace.
11305 (C_TYPEDEF_EXPLICITLY_SIGNED): Uppercase macro parameter.
11306 (INTEGRAL_CODE_P(CODE): Add parenthesis.
11307 (CP_INTEGRAL_TYPE_P): Remove parenthesis.
11308 (TYPE_HAS_CONSTRUCTOR): Whitespace.
11309 (TREE_HAS_CONSTRUCTOR): Likewise.
11310 (TYPE_HAS_DESTRUCTOR): Likewise.
11311 (TYPE_HAS_REAL_ASSIGN_REF): Likewise.
11312 (TYPE_HAS_COMPLEX_ASSIGN_REF): Likewise.
11313 (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
11314 (TYPE_HAS_COMPLEX_INIT_REF): Likewise.
11315 (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
11316 (TYPE_PTRMEMFUNC_P): Likewise.
11317 (TYPE_PTRMEMFUNC_FLAG): Likewise.
11318 (TYPE_GET_PTRMEMFUNC_TYPE): Likewise.
11319 (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
11320 (TYPE_PTRMEM_CLASS_TYPE): Remove parenthesis.
11321 (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
11322 (DECL_ACCESS): Whitespace.
11323 (DECL_GLOBAL_CTOR_P): Remove parenthesis.
11324 (DECL_GLOBAL_DTOR_P): Likewise.
11325 (GLOBAL_INIT_PRIORITY): Likewise.
11326 (DECL_TEMPLATE_PARMS): Likewise.
11327 (DECL_TEMPLATE_RESULT): Likewise.
11328 (DECL_TEMPLATE_INSTANTIATIONS): Likewise.
11329 (DECL_TEMPLATE_SPECIALIZATIONS): Likewise.
11330 (DECL_IMPLICIT_TYPEDEF_P): Remove parenthesis.
11331 (SET_DECL_IMPLICIT_TYPEDEF_P): Likewise.
11332 (PRIMARY_TEMPLATE_P): Add parenthesis.
11333 (DECL_USE_TEMPLATE): Whitespace.
11334 (CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
11335 (SET_CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
11336 (CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
11337 (SET_CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
11338 (CALL_DECLARATOR_PARMS): Remove parenthesis.
11339 (CALL_DECLARATOR_QUALS): Likewise.
11340 (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
11341 (TEMP_NAME_P): Wrap.
11342 (VFIELD_NAME_P): Likewise.
11343 (B_SET): Uppercase macro parameters and add parenthesis.
11344 (B_CLR): Likewise.
11345 (B_TST): Likewise.
11346 (LOOKUP_NAMESPACES_ONLY): Uppercase macro parameters.
11347 (LOOKUP_TYPES_ONLY): Uppercase macro parameters.
11348 (LOOKUP_QUALIFIERS_ONLY): Uppercase macro parameters.
11349 (same_or_base_type_p): Likewise.
11350 (cp_deprecated): Likewise.
11351
11352 2002-01-05 Richard Henderson <rth@redhat.com>
11353
11354 * semantics.c (expand_body): Revert last change.
11355
11356 2002-01-04 Jason Merrill <jason@redhat.com>
11357
11358 PR c++/4122
11359 * class.c (update_vtable_entry_for_fn): Set delta to zero for a
11360 lost primary.
11361
11362 * class.c (build_vtbl_initializer): Check for a lost primary
11363 before calculating the vtable entry to throw away.
11364
11365 2002-01-02 Jason Merrill <jason@redhat.com>
11366
11367 * semantics.c (expand_body): Call outlining_inline_function when
11368 emitting an inline function out of line.
11369
11370 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11371
11372 PR c++/5116, c++/764 reversion
11373 * call.c (build_new_op): Revert the instantiations. They are
11374 incorrect.
11375
11376 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11377
11378 PR c++/5089
11379 * decl2.c (reparse_absdcl_as_casts): Don't warn about casts to void.
11380
11381 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11382
11383 PR c++/3716
11384 * pt.c (tsubst_aggr_type): Move pmf handling into tsubst.
11385 (tsubst, case POINTER_TYPE): Handle pmfs here.
11386 (tsubst, case OFFSET_TYPE): Check it is not an offset to
11387 reference. If it is offset to FUNCTION_TYPE, create a METHOD_TYPE.
11388
11389 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11390
11391 PR c++/35
11392 * cp-tree.h (DECL_LANG_FLAG_0): Used for PARM_DECL too.
11393 (DECL_TEMPLATE_PARM_P): A PARM_DECL might be one too.
11394 * pt.c (process_template_parm): SET_DECL_TEMPLATE_PARM_P on the
11395 PARM_DECL.
11396 (tsubst_template_parms): Break up loop statements.
11397 (tsubst_decl, case PARM_DECL): Copy DECL_TEMPLATE_PARM_P. Template
11398 parm PARM_DECLs don't get promoted.
11399
11400 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11401
11402 PR c++/5123
11403 * typeck.c (build_component_ref): Cope with a TEMPLATE_ID_EXPR.
11404 (build_x_function_call): Cope with a COMPONENT_REF containing a
11405 TEMPLATE_ID_EXPR.
11406
11407 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11408
11409 PR c++/5213
11410 * pt.c (convert_template_argument): Be more careful determining
11411 when RECORD_TYPE templates are or are not templates.
11412
11413 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11414
11415 PR c++/775
11416 * cp-tree.h (handle_class_head): Adjust prototype.
11417 * decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
11418 parameters. Use for all class heads.
11419 * parse.y (named_class_head_sans_basetype, named_class_head,
11420 named_complex_class_head_sans_basetype,
11421 named_class_head_sans_basetype_defn,
11422 unnamed_class_head): Remove.
11423 (class_head, class_head_apparent_template): Recognize class heads
11424 (class_head_decl, class_head_defn): New reductions. Process class
11425 heads.
11426 (structsp): Adjust class definition and class declaration
11427 reductions.
11428 (maybe_base_class_list): Give diagnostic on empty list.
11429
11430 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11431
11432 PR c++/4379
11433 * typeck.c (build_x_unary_op): Don't destroy the OFFSET_REF on a
11434 single non-static member.
11435 (unary_complex_lvalue): If it cannot be a pointer to member, don't
11436 make it so. Check it is not pointer to reference.
11437
11438 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11439
11440 PR c++/5132
11441 * decl2.c (reparse_absdcl_as_casts): Don't digest_init if we
11442 are processing a template decl.
11443
11444 2002-01-02 Nathan Sidwell <nathan@codesourcery.com>
11445
11446 PR c++/5116, c++/764
11447 * call.c (build_new_op): Make sure template class operands are
11448 instantiated. Simplify arglist construction.
11449
11450 2001-12-29 Nathan Sidwell <nathan@codesourcery.com>
11451
11452 * call.c (build_user_type_conversion_1): Use my_friendly_assert
11453 rather than if ... abort.
11454 * cvt.c (convert_to_reference): Likewise.
11455 * semantics.c (setup_vtbl_ptr): Likewise.
11456 * pt.c (lookup_template_class): Comment typo.
11457
11458 2001-12-29 Nathan Sidwell <nathan@codesourcery.com>
11459
11460 PR c++/5125
11461 * pt.c (push_template_decl_real): Make sure DECL has
11462 DECL_LANG_SPECIFIC.
11463
11464 2001-12-29 Nathan Sidwell <nathan@codesourcery.com>
11465
11466 PR c++/335
11467 * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
11468 for non-reference fields.
11469 * typeck.c (require_complete_type): Use resolve_offset_ref).
11470
11471 2001-12-26 Nathan Sidwell <nathan@codesourcery.com>
11472
11473 PR c++/196
11474 * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
11475
11476 2001-12-24 Nathan Sidwell <nathan@codesourcery.com>
11477
11478 PR c++/160
11479 * typeck.c (build_modify_expr): Remove old unreachable code & tidy
11480 up. Don't stabilize_references when initializing a reference.
11481
11482 2001-12-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
11483
11484 * decl2.c (lang_f_options): Const-ify.
11485
11486 2001-12-20 Joseph S. Myers <jsm28@cam.ac.uk>
11487
11488 * config-lang.in (diff_excludes): Remove.
11489
11490 2001-12-19 Nathan Sidwell <nathan@codesourcery.com>
11491
11492 PR c++/90
11493 * typeck.c (build_function_call_real): Use original function
11494 expression for errors.
11495
11496 2001-12-18 Jason Merrill <jason@redhat.com>
11497
11498 PR c++/3242
11499 * class.c (add_method): Do compare 'this' quals when trying to match a
11500 used function. Don't defer to another used function.
11501
11502 2001-12-18 Nathan Sidwell <nathan@codesourcery.com>
11503
11504 * pt.c (instantiate_clone): Remove, fold into ...
11505 (instantiate_template): ... here. Simplify by removing mutual
11506 recursion.
11507 * typeck2.c (build_m_component_ref): Don't cv qualify the function
11508 pointed to by a pointer to function.
11509 * class.c (delete_duplicate_fields_1): Typo.
11510
11511 2001-12-18 Jason Merrill <jason@redhat.com>
11512
11513 C++ ABI change: destroy value arguments in caller.
11514 * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
11515 create an extra binding level for the parameters.
11516 * decl.c (store_parm_decls): Don't do parameter cleanups.
11517
11518 2001-12-18 Nathan Sidwell <nathan@codesourcery.com>
11519
11520 * call.c (build_new_method_call): Use '%#V'.
11521 * error.c (cv_to_string): Use V parameter to determine padding.
11522
11523 2001-12-18 Joseph S. Myers <jsm28@cam.ac.uk>
11524
11525 * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
11526 spellings in messages.
11527
11528 2001-12-17 Zack Weinberg <zack@codesourcery.com>
11529
11530 * cp-tree.h: Delete #defines for cp_error, cp_warning,
11531 cp_pedwarn, and cp_compiler_error.
11532 * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
11533 except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
11534 rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
11535 typeck2.c: Change calls to the above macros to use their
11536 language-independent equivalents: error, warning, pedwarn, and
11537 internal_error respectively.
11538
11539 2001-12-16 Neil Booth <neil@daikokuya.demon.co.uk>
11540
11541 * decl2.c (finish_file): Remove back_end_hook.
11542
11543 2001-12-16 Joseph S. Myers <jsm28@cam.ac.uk>
11544
11545 * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
11546 cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
11547 pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
11548
11549 2001-12-15 Joseph S. Myers <jsm28@cam.ac.uk>
11550
11551 * lang-options.h: Use American spelling in messages.
11552
11553 2001-12-13 Jason Merrill <jason@redhat.com>
11554
11555 * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
11556
11557 Use cleanups to run base and member destructors.
11558 * init.c (push_base_cleanups): New function, split out from...
11559 (build_delete): ...here. Lose !TYPE_HAS_DESTRUCTOR code.
11560 * decl.c (finish_destructor_body): Move vbase destruction code to
11561 push_base_cleanups.
11562 (begin_function_body, finish_function_body): New fns.
11563 (finish_function): Move [cd]tor handling and call_poplevel to
11564 finish_function_body.
11565 (pushdecl): Skip the new level.
11566 * semantics.c (genrtl_try_block): Don't call end_protect_partials.
11567 (setup_vtbl_ptr): Call push_base_cleanups.
11568 * method.c (synthesize_method): Call {begin,end}_function_body.
11569 * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
11570 * cp-tree.h: Declare new fns.
11571 * parse.y (function_body, .begin_function_body): New nonterminals.
11572 (fndef, pending_inline, function_try_block): Use function_body.
11573 (ctor_initializer_opt, function_try_block): No longer has a value.
11574 (base_init): Remove .set_base_init token.
11575 (.set_base_init, compstmt_or_error): Remove.
11576 * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
11577
11578 * optimize.c (maybe_clone_body): Fix parameter updating.
11579
11580 2001-12-12 Jason Merrill <jason@redhat.com>
11581
11582 * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
11583 * semantics.c (genrtl_start_function): Don't pass
11584 parms_have_cleanups or push an extra binding level.
11585 (genrtl_finish_function): Lose cleanup_label cruft.
11586
11587 * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
11588 (ctor_label): Remove.
11589 * semantics.c (finish_return_stmt): Lose ctor_label support.
11590 * decl.c (finish_constructor_body, mark_lang_function): Likewise.
11591 * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
11592 dtor_label.
11593
11594 * call.c (build_new_method_call): Let resolves_to_fixed_type_p
11595 check for [cd]tors.
11596 * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
11597
11598 * decl.c (finish_function): Check VMS_TARGET, not VMS.
11599
11600 * decl.c (start_cleanup_fn): Remove redundant pushlevel.
11601 (end_cleanup_fn): And poplevel.
11602
11603 * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
11604 if we're in a template.
11605
11606 2001-12-12 Jakub Jelinek <jakub@redhat.com>
11607
11608 * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
11609 ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
11610 THIS_NAME_P): Delete.
11611 * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
11612 THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
11613 with internal naming scheme.
11614 * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
11615
11616 2001-12-12 Nathan Sidwell <nathan@codesourcery.com>
11617
11618 * decl.c (grokdeclarator): Deprecated implicit typename use.
11619
11620 2001-12-11 Nathan Sidwell <nathan@codesourcery.com>
11621
11622 PR g++/51
11623 * parse.y (frob_specs): Indicate it is a language linkage which
11624 contained the extern.
11625 * decl.c (grokdeclarator): Allow extern language linkage with
11626 other specifiers.
11627
11628 2001-12-10 Nathan Sidwell <nathan@codesourcery.com>
11629
11630 PR g++/72
11631 * decl.c (add_binding): Don't reject duplicate typedefs involving
11632 template parameters.
11633
11634 2001-12-10 Neil Booth <neil@daikokuya.demon.co.uk>
11635
11636 * parse.y, semantics.c: Similarly.
11637
11638 2001-12-09 Nathan Sidwell <nathan@codesourcery.com>
11639
11640 PR g++/87
11641 * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
11642 (copy_args_p): Rename to ...
11643 (copy_fn_p): ... here.
11644 (grok_special_member_properties): New function.
11645 (grok_op_properties): Lose VIRTUALP parameter.
11646 (copy_assignment_arg_p): Remove.
11647 * call.c (build_over_call): Use copy_fn_p.
11648 * decl.c (grokfndecl): Reformat. Adjust call to
11649 grok_op_properties.
11650 (copy_args_p): Rename to ...
11651 (copy_fn_p): ... here. Reject template functions. Check for pass
11652 by value.
11653 (grok_special_member_properties): Remember special functions.
11654 (grok_ctor_properties): Don't remember them here, just check.
11655 (grok_op_properties): Likewise.
11656 (start_method): Call grok_special_member_properties.
11657 * decl2.c (grokfield): Likewise.
11658 (copy_assignment_arg_p): Remove.
11659 (grok_function_init): Don't remember abstract assignment here.
11660 * pt.c (instantiate_class_template): Call
11661 grok_special_member_properties.
11662 (tsubst_decl): Adjust grok_op_properties call.
11663
11664 2001-12-08 Aldy Hernandez <aldyh@redhat.com>
11665
11666 * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
11667 RID_TYPES_COMPATIBLE_P.
11668
11669 2001-12-08 John David Anglin <dave@hiauly1.hia.nrc.ca>
11670
11671 * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
11672 call to build_aggr_init.
11673 * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
11674
11675 2001-12-08 Neil Booth <neil@daikokuya.demon.co.uk>
11676
11677 * parse.y: Replace uses of the string non-terminal with STRING.
11678 Don't perform string concatentaion here.
11679 (string): Remove non-terminal.
11680 * semantics.c (finish_asm_stmt): Don't concatenate strings here.
11681
11682 2001-12-05 Jason Merrill <jason@redhat.com>
11683
11684 * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
11685 (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
11686 * tree.c (cp_start_inlining, cp_end_inlining): New fns.
11687 * pt.c (push_tinst_level): No longer static.
11688 * cp-tree.h: Declare them.
11689
11690 * init.c (resolve_offset_ref): Don't check access for the base
11691 conversion to access a FIELD_DECL.
11692
11693 * cp-tree.h (TYPE_REFFN_P): New macro.
11694 * decl.c (bad_specifiers): Check it, too.
11695
11696 * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
11697 on the __*_type_info type if we haven't seen a definition.
11698
11699 2001-12-05 Neil Booth <neil@daikokuya.demon.co.uk>
11700
11701 * decl.c: Include c-common.h.
11702 (shadow_warning): Move to c-common.c.
11703
11704 2001-12-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
11705
11706 * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
11707
11708 2001-12-04 Nathan Sidwell <nathan@codesourcery.com>
11709
11710 * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
11711
11712 2001-12-04 Nathan Sidwell <nathan@codesourcery.com>
11713
11714 PR g++/164
11715 * init.c (sort_base_init): Allow binfos to be directly specified.
11716 * method.c (do_build_copy_constructor): Explicitly convert to the
11717 base instance.
11718 (do_build_assign_ref): Likewise.
11719
11720 2001-12-03 Hans-Peter Nilsson <hp@bitrange.com>
11721
11722 * decl.c (xref_basetypes): Don't use C99 construct in tag_code
11723 declaration and initialization.
11724
11725 2001-12-03 Neil Booth <neil@daikokuya.demon.co.uk>
11726
11727 * typeck2.c: Remove leading capital from diagnostic messages, as
11728 per GNU coding standards.
11729
11730 2001-12-03 Mumit Khan <khan@nanotech.wisc.edu>
11731
11732 PR c++/3394
11733 * decl.c (xref_basetypes): Handle attributes between
11734 'class' and name.
11735
11736 2001-12-03 Nathan Sidwell <nathan@codesourcery.com>
11737
11738 PR g++/3381
11739 * parse.y (named_complex_class_head_sans_basetype): Add new
11740 reduction.
11741 * Make-lang.in (parse.c): Adjust expected conflict count.
11742
11743 2001-12-03 Jason Merrill <jason@redhat.com>
11744
11745 * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
11746 immediate binfos for our virtual bases.
11747
11748 2001-12-02 Neil Booth <neil@daikokuya.demon.co.uk>
11749
11750 * call.c (build_java_interface_fn_ref): Similarly.
11751 * except.c (is_admissible_throw_operand): Similarly.
11752 * init.c (build_java_class_ref): Similarly.
11753 * xref.c (open_xref_file): Similarly.
11754
11755 2001-12-01 Neil Booth <neil@daikokuya.demon.co.uk>
11756
11757 * class.c (finish_struct): Remove trailing periods from messages.
11758 * decl.c (check_tag_decl): Similarly.
11759 * lex.c (cxx_set_yydebug): Similarly.
11760 * typeck2.c (friendly_abort): Similarly.
11761
11762 2001-11-29 Mark Mitchell <mark@codesourcery.com>
11763
11764 PR c++/3048
11765 * cp-tree.h (ovl_member): Remove.
11766 * decl2.c (merge_functions): Handle extern "C" functions
11767 specially.
11768 * tree.c (ovl_member): Remove.
11769
11770 2001-11-29 Mark Mitchell <mark@codesourcery.com>
11771
11772 PR c++/4842
11773 * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
11774 FUNCTION_DECL, as input.
11775 (mark_overriders): Remove.
11776 (warn_hidden): Rework for the new ABI.
11777
11778 2001-11-29 Mark Mitchell <mark@codesourcery.com>
11779
11780 PR c++/3471
11781 * call.c (convert_like_real): Do not build additional temporaries
11782 for rvalues of class type.
11783
11784 2001-11-28 Nathan Sidwell <nathan@codesourcery.com>
11785
11786 * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
11787 (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
11788 (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
11789 (DERIVED_FROM_P): Likewise.
11790 (enum base_access): Renumber, add ba_quiet bit mask.
11791 (get_binfo): Remove.
11792 (get_base_distance): Remove.
11793 (binfo_value): Remove.
11794 (ACCESSIBLY_DERIVED_FROM_P): Remove.
11795 * call.c (standard_conversion): Use lookup_base.
11796 * class.c (strictly_overrides): Likewise.
11797 (layout_virtual_bases): Likewise.
11798 (warn_about_ambiguous_direct_bases): Likewise.
11799 (is_base_of_enclosing_class): Likewise.
11800 (add_vcall_offset_vtbl_entries_1): Likewise.
11801 * cvt.c (build_up_reference): Adjust comment.
11802 * init.c (build_member_call): Reformat.
11803 * search.c (get_binfo): Remove.
11804 (get_base_distance_recursive): Remove.
11805 (get_base_distance): Remove.
11806 (lookup_base_r): Tweak.
11807 (lookup_base): Add ba_quiet control. Complete the types here.
11808 (covariant_return_p): Use lookup_base.
11809 * tree.c (binfo_value): Remove.
11810 (maybe_dummy_object): Use lookup_base.
11811 * typeck.c (build_static_cast): Use lookup_base.
11812 (get_delta_difference): Likewise.
11813 * typeck2.c (binfo_or_else): Use lookup_base.
11814 (build_scoped_ref): Add back error_mark_check.
11815 (build_m_component_ref): Use lookup_base.
11816
11817 2001-11-29 Joseph S. Myers <jsm28@cam.ac.uk>
11818
11819 * Make-lang.in (c++.generated-manpages): New dummy target.
11820
11821 2001-11-27 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
11822
11823 * Make-lang.in (cp-lang.o): Depends on c-common.h.
11824 * cp-lang.c (c-common.h): Include.
11825 (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
11826 * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
11827 * expr.c (init_cplus_expand): Don't set lang_expand_constant.
11828
11829 2001-11-26 Neil Booth <neil@daikokuya.demon.co.uk>
11830
11831 * decl2.c (c_language): Move to c-common.c.
11832 * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
11833 functions.
11834 (cxx_init): Update.
11835
11836 2001-11-26 Jason Merrill <jason@redhat.com>
11837
11838 * call.c (joust): Remove COND_EXPR hack.
11839
11840 2001-11-25 Aldy Hernandez <aldyh@redhat.com>
11841
11842 * search.c (lookup_base_r): Declare bk in variable declaration
11843 space.
11844
11845 2001-11-25 Nathan Sidwell <nathan@codesourcery.com>
11846
11847 PR g++/3145
11848 * class.c (build_vbase_pointer): Remove.
11849 (build_vbase_path): Remove.
11850 (build_base_path): New function.
11851 * cp-tree.h (base_access, base_kind): New enumerations.
11852 (build_base_path): Declare.
11853 (convert_pointer_to_real): Remove.
11854 (convert_pointer_to): Remove.
11855 (lookup_base): Declare.
11856 (convert_pointer_to_vbase): Remove.
11857 * call.c (build_scoped_method_call): Use lookup_base &
11858 build_base_path instead of convert_pointer_to_real,
11859 get_base_distance & get_binfo.
11860 (build_over_call): Likewise.
11861 * cvt.c (cp_convert_to_pointer): Likewise.
11862 (convert_to_pointer_force): Likewise.
11863 (build_up_reference): Likewise.
11864 (convert_pointer_to_real): Remove.
11865 (convert_pointer_to): Remove.
11866 * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
11867 instead of convert_pointer_to_vbase & build_vbase_path.
11868 (emit_base_init): Use build_base_path instead of
11869 convert_pointer_to_real.
11870 (expand_virtual_init): Lose unrequired conversions.
11871 (resolve_offset_ref): Use lookup_base and build_base_path
11872 instead of convert_pointer_to.
11873 * rtti.c (build_dynamic_cast_1): Use lookup_base &
11874 build_base_path instead of get_base_distance & build_vbase_path.
11875 * search.c (get_vbase_1): Remove.
11876 (get_vbase): Remove.
11877 (convert_pointer_to_vbase): Remove.
11878 (lookup_base_r): New function.
11879 (lookup_base): New function.
11880 * typeck.c (require_complete_type): Use lookup_base &
11881 build_base_path instead of convert_pointer_to.
11882 (build_component_ref): Likewise.
11883 (build_x_function_call): Likewise.
11884 (get_member_function_from_ptrfunc): Likewise.
11885 (build_component_addr): Likewise.
11886 * typeck2.c (build_scoped_ref): Likewise.
11887
11888 2001-11-22 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
11889
11890 * cp-tree.h (CP_TYPE_QUALS): Removed.
11891 * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
11892 * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
11893 LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
11894 * dump.c (cp_dump_tree): Use void* dump_info argument to match
11895 lang-hooks prototype.
11896 * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
11897 rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
11898 CP_TYPE_QUALS changed to cp_type_quals.
11899 * Make-lang.in: References to c-dump.h changed to tree-dump.h.
11900 (CXX_C_OBJS): Remove c-dump.o.
11901
11902 2001-11-21 Mark Mitchell <mark@codesourcery.com>
11903
11904 PR c++/3637
11905 * pt.c (lookup_template_class): Ensure that all specializations
11906 are registered on the list corresponding to the most general
11907 template.
11908
11909 2001-11-20 Mark Mitchell <mark@codesourcery.com>
11910
11911 * call.c (non_reference): Add documentation.
11912 (convert_class_to_reference): Do not strip reference types
11913 from conversion operators.
11914 (maybe_handle_ref_bind): Simplify.
11915 (compare_ics): Correct handling of references.
11916
11917 2001-11-19 John Wilkinson <johnw@research.att.com>
11918
11919 * dump.c (dump_op): New function.
11920 (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION. Use
11921 dump_op. Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
11922 DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
11923
11924 2001-11-19 Mark Mitchell <mark@codesourcery.com>
11925
11926 PR4629
11927 * semantics.c (finish_sizeof): Make sure that expression created
11928 while processing a template do not have a type.
11929 (finish_alignof): Likewise.
11930 * typeck.c (c_sizeof): Likewise.
11931 (expr_sizeof): Likewise.
11932
11933 2001-11-18 Neil Booth <neil@daikokuya.demon.co.uk>
11934
11935 * lex.c (cxx_finish): Call c_common_finish.
11936 (finish_parse): Remove.
11937
11938 2001-11-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
11939
11940 * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
11941 when displaying error message about missing array bounds.
11942
11943 2001-11-17 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
11944
11945 * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
11946 CONST_CAST_EXPR.
11947 * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
11948
11949 2001-11-16 Neil Booth <neil@daikokuya.demon.co.uk>
11950
11951 * cp-tree.h (print_class_statistics): Restore.
11952
11953 2001-11-15 Jason Merrill <jason@redhat.com>
11954
11955 * method.c (use_thunk): Don't emit debugging information for thunks.
11956
11957 * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
11958 * decl.c (make_typename_type): Handle getting a class template.
11959 * search.c (lookup_field_r): A class template is good enough for
11960 want_type.
11961
11962 * call.c (convert_like_real): Only use cp_convert for the bad part.
11963 (standard_conversion): Also allow bad int->enum.
11964 * typeck.c (ptr_reasonably_similar): Also allow functions to
11965 interconvert. Pointers to same-size integers are reasonably
11966 similar.
11967
11968 * cvt.c (convert_to_void): If we build a new COND_EXPR, always
11969 give it void type.
11970
11971 2001-11-15 Nathan Sidwell <nathan@codesourcery.com>
11972
11973 PR g++/3154
11974 * init.c (sort_base_init): Remove unreachable code.
11975 (expand_member_init): Adjust comment to reflect reality. Simplify
11976 and remove unreachable code.
11977
11978 2001-11-15 Neil Booth <neil@daikokuya.demon.co.uk>
11979
11980 * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
11981 (cxx_init): Update prototype.
11982 * decl.c (init_decl_processing): Rename. Move null node init
11983 to its creation time.
11984 * lex.c (cxx_init_options): Update.
11985 (cxx_init): Combine with old init_parse; also call
11986 cxx_init_decl_processing.
11987
11988 2001-11-14 Richard Sandiford <rsandifo@redhat.com>
11989
11990 * decl.c (check_initializer): Try to complete the type of an
11991 array element before checking whether it's complete. Don't
11992 complain about arrays with complete element types but an
11993 unknown size.
11994 (cp_finish_decl): Build the hierarchical constructor before
11995 calling maybe_deduce_size_from_array_init.
11996
11997 2001-11-14 Joseph S. Myers <jsm28@cam.ac.uk>
11998
11999 * Make-lang.in: Change all uses of $(manext) to $(man1ext).
12000
12001 2001-11-13 Nathan Sidwell <nathan@codesourcery.com>
12002
12003 PR g++/4206
12004 * parse.y (already_scoped_stmt): Remove.
12005 (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
12006
12007 2001-11-12 H.J. Lu <hjl@gnu.org>
12008
12009 * cvt.c (ocp_convert): Don't warn the address of a weak
12010 function is always `true'.
12011
12012 2001-11-09 Neil Booth <neil@daikokuya.demon.co.uk>
12013
12014 * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
12015 LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
12016 LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
12017 * cp-tree.h (print_class_statistics): Remove.
12018 (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
12019 cxx_print_identifier, cxx_set_yydebug): New.
12020 * lex.c (set_yydebug): Rename c_set_yydebug.
12021 * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
12022 lang_print_xnode): Rename.
12023 * tree.c (print_lang_statistics): Rename.
12024
12025 2001-11-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12026
12027 * class.c (dump_array): Fix format specifier warning.
12028
12029 2001-11-09 Neil Booth <neil@daikokuya.demon.co.uk>
12030
12031 * cp-lang.c (LANG_HOOKS_NAME): Override.
12032 (struct lang_hooks): Constify.
12033 * lex.c (cxx_init_options): Update.
12034 (lang_identify): Remove.
12035 * parse.y (language_string): Remove.
12036
12037 2001-11-08 Andreas Franck <afranck@gmx.de>
12038
12039 * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
12040 DEMANGLER_CROSS_NAME): Handle program_transform_name the way
12041 suggested by autoconf.
12042 (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
12043 (c++.install-common): Use the transformed target alias names.
12044
12045 2001-11-06 Neil Booth <neil@cat.daikokuya.demon.co.uk>
12046
12047 * Make-lang.in: Update.
12048 * cp-lang.c: Include langhooks-def.h.
12049
12050 2001-11-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12051
12052 * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
12053
12054 2001-11-03 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12055
12056 * lex.c (copy_lang_type): Add static prototype.
12057
12058 2001-11-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12059
12060 * pt.c (unify): Handle SCOPE_REF.
12061
12062 2001-11-01 Jakub Jelinek <jakub@redhat.com>
12063
12064 * tree.c (cp_copy_res_decl_for_inlining): Adjust
12065 DECL_ABSTRACT_ORIGIN for the return variable.
12066
12067 2001-10-31 Zack Weinberg <zack@codesourcery.com>
12068
12069 * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
12070
12071 2001-10-28 Joseph S. Myers <jsm28@cam.ac.uk>
12072
12073 * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
12074 semantics.c, spew.c: Fix spelling errors.
12075
12076 2001-10-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12077
12078 * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
12079
12080 2001-10-25 Zack Weinberg <zack@codesourcery.com>
12081
12082 * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
12083 pop_everything.
12084
12085 2001-10-23 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
12086
12087 * cp-lang.c (cxx_get_alias_set): New function.
12088 Point LANG_HOOKS_GET_ALIAS_SET to it.
12089
12090 2001-10-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12091
12092 * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
12093 * cp-tree.h (make_unbound_class_template): Prototype new function.
12094 * decl.c (make_unbound_class_template): New function.
12095 * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
12096 * error.c (dump_type): Likewise.
12097 * mangle.c (write_type): Likewise.
12098 * parse.y (template_parm): Likewise.
12099 (template_argument): Use make_unbound_class_template.
12100 * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
12101 (tsubst): Likewise.
12102 (tsubst_copy): Likewise.
12103 (unify): Likewise.
12104 * tree.c (walk_tree): Likewise.
12105 * typeck.c (comptypes): Likewise.
12106
12107 2001-10-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12108
12109 * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
12110 extra calls into fewer ones.
12111
12112 2001-10-18 Alexandre Oliva <aoliva@redhat.com>
12113
12114 * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
12115 Warn when merging inline with attribute noinline.
12116 (start_decl, start_function): Warn if inline and attribute
12117 noinline appear in the same declaration.
12118
12119 2001-10-16 H.J. Lu <hjl@gnu.org>
12120
12121 * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
12122 for tree checking disabled.
12123
12124 2001-10-16 Hans-Peter Nilsson <hp@axis.com>
12125
12126 * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
12127 NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
12128
12129 2001-10-15 Richard Sandiford <rsandifo@redhat.com>
12130
12131 * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
12132 (unify): Only handle MINUS_EXPR specially if the above flag is set
12133 and the subtracted constant is 1. Clear the flag on recursive calls.
12134 Set it when unifying the maximum value in an INTEGER_TYPE's range.
12135
12136 2001-10-15 Richard Sandiford <rsandifo@redhat.com>
12137
12138 * decl.c (bad_specifiers): Don't allow exception specifications
12139 on any typedefs.
12140
12141 2001-10-14 Neil Booth <neil@daikokuya.demon.co.uk>
12142
12143 * cp/lex.c (init_cp_pragma): Similarly.
12144
12145 2001-10-13 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12146
12147 * pt.c (lookup_template_class): Build complete template arguments
12148 for BOUND_TEMPLATE_TEMPLATE_PARM.
12149
12150 2001-10-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12151
12152 * cp-tree.h (TYPE_BINFO): Update comment.
12153 (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
12154 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
12155 (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
12156 (copy_type): Prototype new function.
12157 * lex.c (copy_lang_decl): Gather tree node statistics.
12158 (copy_lang_type): New function.
12159 (copy_type): Likewise.
12160 (cp_make_lang_type): Create lang_type for
12161 BOUND_TEMPLATE_TEMPLATE_PARM. Set TYPE_BINFO for TYPENAME_TYPE
12162 and BOUND_TEMPLATE_TEMPLATE_PARM.
12163 * pt.c (tsubst): Use copy_type instead of copy_node.
12164 * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
12165
12166 2001-10-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12167
12168 * pt.c (determine_specialization): Ignore functions without
12169 DECL_TEMPLATE_INFO.
12170
12171 2001-10-12 Nathan Sidwell <nathan@codesourcery.com>
12172
12173 PR g++/4476
12174 * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
12175
12176 2001-10-11 Jason Merrill <jason_merrill@redhat.com>
12177
12178 * typeck2.c (store_init_value): Don't re-digest a bracketed
12179 initializer.
12180
12181 * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
12182 ANON_AGGR_TYPE_P.
12183
12184 2001-10-11 Richard Henderson <rth@redhat.com>
12185
12186 * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
12187 of an asm statement.
12188 (build_vtbl_ref_1): Split out from build_vtbl_ref.
12189 (build_vfn_ref): Use it to handle vtable descriptors before
12190 calling build_vtable_entry_ref.
12191 * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
12192
12193 2001-10-10 Richard Henderson <rth@redhat.com>
12194
12195 * parse.y (asm_operand): Allow named operands.
12196 * semantics.c (finish_asm_stmt): Tweek for changed location
12197 of the operand constraint.
12198
12199 2001-10-09 Jason Merrill <jason_merrill@redhat.com>
12200
12201 * call.c (standard_conversion): Add bad conversion between
12202 integers and pointers.
12203 (convert_like_real): Don't use convert_for_initialization for bad
12204 conversions; complain here and use cp_convert.
12205 (build_over_call): Don't handle bad conversions specially.
12206 (perform_implicit_conversion): Allow bad conversions.
12207 (can_convert_arg_bad): New fn.
12208 * cp-tree.h: Declare it.
12209 * typeck.c (convert_for_assignment): Use it.
12210 (ptr_reasonably_similar): Any target type is similar to void.
12211
12212 2001-10-08 Alexandre Oliva <aoliva@redhat.com>
12213
12214 * Make-lang.in (CXX_OBJS): Added cp-lang.o.
12215 (cp/cp-lang.o): New rule.
12216 * cp-tree.h: Declare hooks.
12217 * tree.c: Make hooks non-static.
12218 (init_tree): Don't initialize hooks here.
12219 * lex.c: Likewise. Move definition of lang_hooks to...
12220 * cp-lang.c: ... new file.
12221
12222 2001-10-08 Richard Henderson <rth@redhat.com>
12223
12224 * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
12225 (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
12226
12227 2001-10-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12228
12229 * class.c (build_vtable_entry_ref): Const-ify.
12230 * decl.c (predefined_identifier,
12231 initialize_predefined_identifiers): Likewise.
12232 * init.c (build_new_1): Likewise.
12233 * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
12234 Likewise.
12235
12236 2001-10-05 Alexandre Oliva <aoliva@redhat.com>
12237
12238 * optimize.c (struct inline_data): Moved to ../tree-inline.c.
12239 (INSNS_PER_STMT): Likewise.
12240 (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
12241 (copy_body, initialize_inlined_parameters): Likewise.
12242 (declare_return_variable, inlinable_function_p): Likewise.
12243 (expand_call_inline, expand_calls_inline): Likewise.
12244 (optimize_inline_calls, clone_body): Likewise.
12245 * tree.c (walk_tree): Moved to ../tree-inline.c.
12246 (walk_tree_without_duplicates): Likewise.
12247 (copy_tree_r, remap_save_expr): Likewise.
12248
12249 2001-10-04 Alexandre Oliva <aoliva@redhat.com>
12250
12251 * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
12252 (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
12253 * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
12254 (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
12255 (flag_inline_trees): Moved declaration to ../tree-inline.h.
12256 (walk_tree): Moved declaration to ../tree-inline.h.
12257 (walk_tree_without_duplicates, copy_tree_r): Likewise.
12258 (remap_save_expr): Likewise.
12259 * decl.c: Include tree-inline.h.
12260 (lang_mark_tree): Don't mark inlined_fns.
12261 * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
12262 * optimize.c: Include tree-inline.h.
12263 (optimize_inline_calls): Move declaration to ../tree.h, as
12264 non-static.
12265 (remap_decl): Use language-independent constructs and hooks.
12266 (remap_block, copy_body_r, declare_return_variable): Likewise.
12267 (inlinable_function_p): Likewise. Don't test for
12268 DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
12269 no longer language-specific.
12270 (optimize_inline_calls): Likewise. Make it non-static. Moved
12271 call of dump_function to...
12272 (optimize_function): Here...
12273 (clone_body): New function, extracted from...
12274 (maybe_clone_body): ... here. Build decl_map locally and pass
12275 it on to clone_body.
12276 * pt.c, semantics.c: Include tree-inline.h.
12277 * tree.c: Likewise.
12278 (cp_walk_subtrees): New language-specific hook for tree inlining.
12279 (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
12280 cp_is_overload_p, cp_auto_var_in_fn_p,
12281 cp_copy_res_decl_for_inlining): Likewise.
12282 (walk_tree): Move language-specific constructs into...
12283 (cp_walk_subtrees): this new function.
12284 (copy_tree_r): Use language-independent constructs and hooks.
12285 (init_tree): Initialize tree inlining hooks.
12286 (remap_save_expr): Adjust prototype so that the declaration
12287 does not require the definition of splay_tree.
12288
12289 2001-10-03 John David Anglin <dave@hiauly1.hia.nrc.ca>
12290
12291 * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
12292 to build the declaration instead of the declaration itself.
12293
12294 2001-10-02 Jason Merrill <jason_merrill@redhat.com>
12295
12296 * decl2.c (cxx_decode_option): Add 'else'.
12297
12298 * spew.c (end_input): No longer static.
12299 * cp-tree.h: Declare it.
12300 * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
12301
12302 2001-10-02 Joseph S. Myers <jsm28@cam.ac.uk>
12303
12304 * call.c (build_over_call), typeck.c (build_function_call_real):
12305 Pass type attributes to check_function_format rather than name or
12306 assembler name. Don't require there to be a name or assembler
12307 name to check formats.
12308
12309 2001-10-02 Joseph S. Myers <jsm28@cam.ac.uk>
12310
12311 * decl.c (init_decl_processing): Don't call
12312 init_function_format_info. Initialize lang_attribute_table
12313 earlier.
12314 (builtin_function): Call decl_attributes.
12315 (insert_default_attributes): New.
12316
12317 2001-10-01 Jason Merrill <jason_merrill@redhat.com>
12318
12319 * decl.c (grokdeclarator): Copy array typedef handling from C
12320 frontend.
12321
12322 * decl.c (grokdeclarator): Copy too-large array handling from C
12323 frontend.
12324
12325 2001-09-29 Alexandre Oliva <aoliva@redhat.com>
12326
12327 * config-lang.in (target_libs): Added target-gperf, so that we
12328 don't try to build it if C++ is disabled.
12329
12330 2001-09-23 Zack Weinberg <zack@codesourcery.com>
12331
12332 * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
12333 (cp/errfn.o): Delete rule.
12334 (cp/error.o): Depend on flags.h.
12335 * errfn.c: Delete file.
12336 * cp-tree.h: Declare warn_deprecated. Remove definitions of
12337 TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
12338 and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
12339 cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
12340 internal_error respectively. Make cp_deprecated into a macro.
12341 Don't define cp_printer typedef or declare cp_printers.
12342 * error.c: Include flags.h.
12343 Delete: struct tree_formatting_info, print_function_argument_list,
12344 print_declaration, print_expression, print_function_declaration,
12345 print_function_parameter, print_type_id, print_cv_qualifier_seq,
12346 print_type_specifier_seq, print_simple_type_specifier,
12347 print_elaborated_type_specifier, print_rest_of_abstract_declarator,
12348 print_parameter_declaration_clause, print_exception_specification,
12349 print_nested_name_specifier, and definition of cp_printers.
12350 (locate_error): New function.
12351 (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
12352 rewritten in terms of locate_error and diagnostic.c.
12353 (cp_tree_printer): Rename cp_printer; wire up to *_to_string
12354 instead of deleted print_* routines. Handle %C, %L, %O, %Q also.
12355 (init_error): Adjust to match.
12356
12357 2001-09-22 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
12358
12359 * Make-lang.in (CXX_C_OBJS): Add attribs.o.
12360
12361 2001-09-21 Richard Henderson <rth@redhat.com>
12362
12363 * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
12364 (build_vtbl_initializer): Likewise.
12365 (build_vfn_ref): New.
12366 * cp-tree.h: Declare it.
12367 * call.c (build_over_call): Use it.
12368 * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
12369 * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
12370
12371 2001-09-21 J"orn Rennecke <amylaar@redhat.com>
12372
12373 * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
12374
12375 2001-09-21 Joseph S. Myers <jsm28@cam.ac.uk>
12376
12377 Table-driven attributes.
12378 * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
12379 * decl2.c (cplus_decl_attributes): Only take one attributes
12380 parameter.
12381 * cp-tree.c (cplus_decl_attributes): Update prototype.
12382 * class.c (finish_struct), decl.c (start_decl, start_function),
12383 decl2.c (grokfield), friend.c (do_friend), parse.y
12384 (parse_bitfield): Update calls to cplus_decl_attributes.
12385 * decl.c (grokdeclarator): Take a pointer to a single ordinary
12386 attribute list.
12387 * decl.h (grokdeclarator): Update prototype.
12388 * decl2.c (grokfield): Take a single ordinary attribute list.
12389 * friend.c (do_friend): Likewise.
12390 * decl.c (shadow_tag, groktypename, start_decl,
12391 start_handler_parms, grokdeclarator, grokparms, start_function,
12392 start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
12393 parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
12394 (process_template_parm, do_decl_instantiation): Pass single
12395 ordinary attribute lists around.
12396 * decl.c (grokdeclarator): Correct handling of nested attributes.
12397 Revert the patch
12398 1998-10-18 Jason Merrill <jason@yorick.cygnus.com>
12399 * decl.c (grokdeclarator): Embedded attrs bind to the right,
12400 not the left.
12401 .
12402 * cp-tree.h (cp_valid_lang_attribute): Remove declaration
12403 (cp_attribute_table): Declare.
12404 * decl.c (valid_lang_attribute): Don't define.
12405 (lang_attribute_table): Define.
12406 (init_decl_processing): Initialize lang_attribute_table instead of
12407 valid_lang_attribute.
12408 * tree.c (cp_valid_lang_attribute): Remove.
12409 (handle_java_interface_attribute, handle_com_interface_attribute,
12410 handle_init_priority_attribute): New functions.
12411 (cp_attribute_table): New array.
12412 * decl2.c (import_export_class): Don't use
12413 targetm.valid_type_attribute.
12414
12415 2001-09-15 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
12416
12417 * Make-lang.in (cp/error.o): Depend on real.h
12418 * error.c: #include "real.h"
12419
12420 2001-09-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12421
12422 * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
12423 xmalloc/strcpy/strcat.
12424
12425 2001-09-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12426
12427 * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
12428 Const-ification.
12429 * pt.c (tsubst_decl): Likewise.
12430
12431 2001-09-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12432
12433 * decl2.c (lang_f_options): Const-ification.
12434 * lex.c (cplus_tree_code_name): Likewise.
12435 * spew.c (yyerror): Likewise.
12436
12437 2001-09-06 Nathan Sidwell <nathan@codesourcery.com>
12438
12439 PR c++/3986
12440 * class.c (force_canonical_binfo_r): Check & move an indirect
12441 primary base first.
12442 (force_canonical_binfo): Check that it's not already
12443 canonical.
12444 (mark_primary_virtual_base): Remove BINFO parameter.
12445 (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
12446
12447 2001-09-06 Nathan Sidwell <nathan@codesourcery.com>
12448
12449 Remove TYPE_NONCOPIED_PARTS.
12450 * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
12451 CLASSTYPE_PURE_VIRTUALS.
12452 (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
12453 * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
12454 (layout_class_type): Don't call fixup_inline_methods here ...
12455 (finish_struct_1): ... call it here.
12456
12457 2001-09-04 Mark Mitchell <mark@codesourcery.com>
12458
12459 * decl.c (duplicate_decls): Remove code deadling with
12460 DECL_SAVED_INSNS.
12461 * decl2.c (finish_file): Likewise.
12462 * pt.c (instantiate_decl): Likewise.
12463 * semantics.c (expand_body): Don't defer local functions if
12464 they wouldn't be deferred for some other reason. Don't
12465 generate RTL for functions that will not be emitted.
12466 (genrtl_start_function): Remove code deadling with
12467 DECL_SAVED_INSNS.
12468 (genrtl_finish_function): Likewise.
12469
12470 2001-09-04 Nathan Sidwell <nathan@codesourcery.com>
12471
12472 PR c++/4203
12473 * call.c (build_over_call): Do not optimize any empty base
12474 construction.
12475
12476 2001-08-31 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12477
12478 * error.c (dump_template_decl): Output template parameters
12479 together with their specifiers.
12480 Output `class' prefix for template template parameter.
12481 (dump_decl): Fix formatting.
12482
12483 2001-08-30 Kurt Garloff <garloff@suse.de>
12484
12485 * optimize.c (inlinable_function_p): Allow only smaller single
12486 functions. Halve inline limit after reaching recursive limit.
12487
12488 2001-08-30 Joern Rennecke <amylaar@redhat.com>
12489 Jason Merrill <jason_merrill@redhat.com>
12490
12491 * class.c (build_vtable_entry_ref): Subtract in char*, not
12492 ptrdiff_t.
12493
12494 2001-08-23 Jason Merrill <jason_merrill@redhat.com>
12495
12496 * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
12497 (build_cplus_array_type): Use cp_build_qualified_type, not
12498 TYPE_MAIN_VARIANT, to get an unqualified version.
12499
12500 * decl2.c (grok_alignof): Lose.
12501 (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
12502 * typeck.c (c_alignof): Lose.
12503 * semantics.c (finish_sizeof, finish_alignof): New.
12504 * parse.y: Use them.
12505 * cp-tree.h: Declare them.
12506
12507 2001-08-22 Jason Merrill <jason_merrill@redhat.com>
12508
12509 * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
12510 Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
12511 * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
12512
12513 2001-08-19 Jakub Jelinek <jakub@redhat.com>
12514
12515 * typeck2.c (add_exception_specifier): Only require complete type if
12516 not in processing template declaration.
12517
12518 2001-08-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
12519
12520 * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
12521 GNU_xref_start_scope and GNU_xref_end_scope.
12522
12523 * tree.c (TYPE_HASH): Moved to ../tree.h.
12524
12525 2001-08-16 Mark Mitchell <mark@codesourcery.com>
12526
12527 * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
12528 on COMPOUND_EXPRs.
12529
12530 2001-08-14 Richard Henderson <rth@redhat.com>
12531
12532 * class.c, cp-tree.h (build_vfn_ref): Remove.
12533 * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
12534
12535 2001-08-13 Mark Mitchell <mark@codesourcery.com>
12536
12537 * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
12538 empty class assignment as having side-effects to avoid
12539 spurious warnings.
12540
12541 2001-08-13 Zack Weinberg <zackw@panix.com>
12542
12543 * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
12544 * except.c: Include libfuncs.h.
12545
12546 2001-08-11 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
12547
12548 * decl.c (grokdeclarator): Clarify diagnostic message.
12549
12550 2001-08-13 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12551
12552 * decl2.c (do_nonmember_using_decl): Replace using directive
12553 with using declaration in the error message.
12554
12555 2001-08-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12556
12557 * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
12558 criterion to avoid rebuilding expression tree instead of
12559 processing_template_decl.
12560
12561 2001-08-07 Jason Merrill <jason_merrill@redhat.com>
12562
12563 Support named return value optimization for inlines, too.
12564 * decl.c (finish_function): Nullify returns here.
12565 * semantics.c (genrtl_start_function): Not here.
12566 (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
12567 (nullify_returns_r): No longer static. Just clear RETURN_EXPR.
12568 Also nullify the CLEANUP_STMT for the nrv.
12569 * cp-tree.h: Declare it.
12570 * optimize.c (declare_return_variable): Replace the nrv with the
12571 return variable.
12572 * typeck.c (check_return_expr): Be more flexible on alignment check.
12573 Ignore cv-quals when checking for a matching type.
12574
12575 2001-08-09 Richard Henderson <rth@redhat.com>
12576
12577 * decl2.c (finish_objects): Use target hooks instead of
12578 assemble_constructor and assemble_destructor.
12579
12580 2001-08-08 John David Anglin <dave@hiauly1.hia.nrc.ca>
12581
12582 * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
12583
12584 2001-08-07 Nathan Sidwell <nathan@codesourcery.com>
12585
12586 PR c++/3820
12587 Stop using TYPE_NONCOPIED_PARTS.
12588 * call.c (build_over_call): Be careful when copy constructing
12589 or assigning to an empty class.
12590 * class.c (check_bases_and_members): It has a
12591 COMPLEX_ASSIGN_REF if it has a vptr.
12592 (layout_class_type): Don't add empty class padding to
12593 TYPE_NONCOPIED_PARTS.
12594 (finish_struct_1): Don't add the VFIELD either.
12595 * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
12596 initialization.
12597
12598 2001-08-07 Jason Merrill <jason_merrill@redhat.com>
12599
12600 * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
12601
12602 2001-08-06 Richard Henderson <rth@redhat.com>
12603
12604 * decl2.c (finish_objects): Pass a symbol_ref and priority to
12605 assemble_{constructor,destructor}. Remove priority handling.
12606
12607 2001-08-05 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
12608
12609 Don't allow template-id in using-declaration.
12610 * decl2.c (validate_nonmember_using_decl): Handle template-ids.
12611 (do_class_using_decl): Likewise.
12612
12613 2001-08-04 Neil Booth <neil@cat.daikokuya.demon.co.uk>
12614
12615 * cp/spew.c (read_token): No need to pop buffers.
12616
12617 2001-08-02 Stan Shebs <shebs@apple.com>
12618
12619 * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
12620 (fnaddr_from_vtable_entry): Remove decl.
12621 * method.c (use_thunk): Update comment.
12622
12623 2001-08-01 Andrew Cagney <ac131313@redhat.com>
12624
12625 * repo.c (get_base_filename): Change return value to const char
12626 pointer.
12627
12628 2001-08-02 Nathan Sidwell <nathan@codesourcery.com>
12629
12630 Kill -fhonor-std.
12631 * NEWS: Document.
12632 * cp-tree.h (flag_honor_std): Remove.
12633 (CPTI_FAKE_STD): Remove.
12634 (std_node): Remove comment about it being NULL.
12635 (fake_std_node): Remove.
12636 * decl.c (in_fake_std): Remove.
12637 (walk_namespaces_r): Remove fake_std_node check.
12638 (push_namespace): Remove in_fake_std code.
12639 (pop_namespace): Likewise.
12640 (lookup_name_real): Remove fake_std_node check.
12641 (init_decl_processing): Always create std_node. Always add
12642 std:: things there.
12643 (builtin_function): Always put non '_' fns in std.
12644 * decl2.c (flag_honor_std): Remove.
12645 (lang_f_options): Remove honor-std.
12646 (unsupported_options): Add honor-std.
12647 (set_decl_namespace): Remove fake_std_node check.
12648 (validate_nonmember_using_decl): Likewise.
12649 (do_using_directive): Likewise.
12650 (handle_class_head): Likewise.
12651 * dump.c (cp_dump_tree): Likewise.
12652 * except.c (init_exception_processing): Adjust.
12653 * init.c (build_member_call): Remove fake_std_node check.
12654 (build_offset_ref): Likewise.
12655 * lang-options.h: Remove -fhonor-std, -fno-honor-std.
12656 * rtti.c (init_rtti_processing): Adjust.
12657
12658 2001-07-31 Alexandre Petit-Bianco <apbianco@redhat.com>
12659
12660 * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
12661 operand while calling cp_tree_equal.
12662
12663 2001-07-31 Nathan Sidwell <nathan@codesourcery.com>
12664
12665 The 3.0 ABI no longer has vbase pointer fields.
12666 * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
12667 FORMAT_VBASE_NAME): Remove.
12668 * method.c (do_build_copy_constructor): Adjust.
12669 (do_build_assign_ref): Adjust.
12670 * search.c (lookup_field_r): Adjust.
12671 * typeck.c (build_component_ref): Adjust.
12672
12673 The 3.0 ABI always has a vtable pointer at the start of every
12674 polymorphic class.
12675 * rtti.c (build_headof_sub): Remove.
12676 (build_headof): Adjust.
12677 (get_tinfo_decl_dynamic): No need to check flag_rtti
12678 here. Adjust.
12679 (create_real_tinfo_var): Explain why we need a hidden name.
12680
12681 2001-07-31 Nathan Sidwell <nathan@codesourcery.com>
12682
12683 PR c++/3631
12684 * class.c (update_vtable_entry_for_fn): The fixed adjustment
12685 of a virtual thunk should be from declaring base.
12686
12687 2001-07-31 Nathan Sidwell <nathan@codesourcery.com>
12688
12689 * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
12690 the shared virtual base, so preserving inheritance graph order.
12691
12692 2001-07-30 Andreas Jaeger <aj@suse.de>
12693
12694 * decl2.c: Remove unused var global_temp_name_counter.
12695
12696 2001-07-28 Richard Henderson <rth@redhat.com>
12697
12698 * method.c (pending_inlines): Remove.
12699
12700 2001-07-27 Nathan Sidwell <nathan@codesourcery.com>
12701
12702 * class.c (mark_primary_virtual_base): Don't adjust base
12703 offsets here.
12704 (dfs_unshared_virtual_bases): Adjust them here.
12705 (mark_primary_bases): Explain why we adjust at the end.
12706
12707 2001-07-27 Nathan Sidwell <nathan@codesourcery.com>
12708
12709 * class.c (finish_struct_1): When copying the primary base's
12710 VFIELD, make sure we find it is at offset zero.
12711
12712 2001-07-26 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
12713
12714 * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
12715 tsubst_expr for default template arguments.
12716
12717 2001-07-26 Nathan Sidwell <nathan@codesourcery.com>
12718
12719 PR c++/3621
12720 * spew.c (yylex): Only copy the token's lineno, if it is
12721 nonzero.
12722
12723 2001-07-26 Nathan Sidwell <nathan@codesourcery.com>
12724
12725 PR c++/3624
12726 * call.c (resolve_args): Simplify, call
12727 convert_from_reference.
12728 (build_new_op): Resolve and convert from reference ARG1
12729 earlier. Adjust ARG2 & ARG3 resolve and conversion.
12730
12731 2001-07-26 Nathan Sidwell <nathan@codesourcery.com>
12732
12733 * decl.c (last_function_parm_tags): Remove.
12734 (current_function_parm_tags): Remove.
12735 (init_decl_processing): Adjust.
12736 (start_function): Adjust.
12737 (store_parm_decls): Adjust.
12738
12739 PR c++/3152
12740 * decl.c (grokdeclarator): Detect when a function typedef is
12741 declaring a function, and create last_function_parms correctly.
12742
12743 2001-07-25 Jason Merrill <jason_merrill@redhat.com>
12744
12745 * call.c (joust): Only prefer a non-builtin candidate to a builtin
12746 one if they have the same signature.
12747
12748 * cvt.c (build_up_reference): Take DECL parm. Check TREE_STATIC on
12749 it rather than toplevel_bindings_p. Give it a mangled name if static.
12750 (convert_to_reference): Adjust.
12751 * decl2.c (get_temp_name): Lose.
12752 * mangle.c (mangle_ref_init_variable): New fn.
12753 (mangle_guard_variable): Strip the ref-init header.
12754 * cp-tree.h: Adjust.
12755 * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
12756 initializer.
12757 (grok_reference_init): Always use DECL_INITIAL.
12758
12759 2001-07-25 Nathan Sidwell <nathan@codesourcery.com>
12760
12761 PR c++/3416
12762 * call.c (build_conditional_expr): Recheck args after
12763 conversions.
12764 * cp-tree.h (build_conditional_expr): Move to correct file.
12765 * typeck.c (decay_conversion): Diagnose any unknown types
12766 reaching here.
12767 (build_binary_op): Don't do initial decay or default
12768 conversions on overloaded functions.
12769 (build_static_cast): Don't do a decay conversion here.
12770
12771 2001-07-25 Nathan Sidwell <nathan@codesourcery.com>
12772
12773 PR c++/3543
12774 * typeck.c (condition_conversion): Resolve an OFFSET_REF.
12775 * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
12776
12777 2001-07-25 Nathan Sidwell <nathan@codesourcery.com>
12778
12779 * class.c (build_vtbl_or_vbase_field): Remove, move into ...
12780 (create_vtbl_ptr): ... here.
12781
12782 2001-07-25 Nathan Sidwell <nathan@codesourcery.com>
12783
12784 * class.c (build_vbase_offset_vbtl_entries): Look for
12785 non-primary base of which we are a sub vtable.
12786
12787 2001-07-24 Phil Edwards <pme@sources.redhat.com>
12788
12789 * semantics.c (finish_this_expr): Remove unused code.
12790
12791 2001-07-24 Nathan Sidwell <nathan@codesourcery.com>
12792
12793 Simplify rtti, now we've only one ABI.
12794 * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
12795 CPTI_TINFO_VAR_ID.
12796 (tinfo_decl_id, tinfo_var_id): Remove.
12797 (get_typeid_1): Remove.
12798 * rtti.c
12799 (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
12800 (typeid_ok_p): New function.
12801 (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
12802 (get_tinfo_decl): Remove old abi documentation.
12803 (tinfo_from_decl): Remove.
12804 (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
12805 (get_typeid_1): Remove.
12806 (get_base_offset): Remove.
12807 (synthesize_tinfo_var): Absorb get_base_offset.
12808 (create_real_tinfo_var): Don't use tinfo_decl_id.
12809
12810 2001-07-23 Graham Stott <grahams@redhat.com>
12811
12812 * cp/class.c (type_requires_array_cookie): Fix use of uninitialized
12813 variable has_two_argument_delete_p.
12814
12815 2001-07-21 Nathan Sidwell <nathan@codesourcery.com>
12816
12817 Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
12818 * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
12819 (CPTI_INDEX_IDENTIFIER): Remove.
12820 (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
12821 (delta2_identifier): Remove.
12822 (index_identifier): Remove.
12823 (pfn_or_delta2_identifier): Remove.
12824 (flag_vtable_thunks): Remove.
12825 (VTABLE_DELTA2_NAME): Remove.
12826 (VTABLE_INDEX_NAME): Remove.
12827 (FNADDR_FROM_VTABLE_ENTRY): Adjust.
12828 (vfunc_ptr_type_node): Adjust.
12829 (VTABLE_NAME_PREFIX): Adjust.
12830 (build_vfn_ref): Lose first parameter.
12831 (fixup_all_virtual_upcast_offsets): Remove.
12832 * decl.c (initialize_predefined_identifiers): Remove
12833 delta2_identifier, index_identifier, pfn_or_delta2_identifier.
12834 (init_decl_processing): Remove no-vtable-thunk code.
12835 * decl2.c (flag_vtable_thunks): Remove.
12836 (mark_vtable_entries): Remove no-vtable-thunk code.
12837 * error.c (dump_decl): Remove no-vtable-thunk code.
12838 (dump_expr): Adjust ptr to member function code.
12839 * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
12840 code.
12841 * rtti.c (build_headof): Remove no-vtable-thunk code.
12842 (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
12843 * search.c (get_base_distance): Remove expand_upcast_fixups case.
12844 (virtual_context) Remove.
12845 (expand_upcast_fixups): Remove.
12846 (fixup_virtual_upcast_offsets): Remove.
12847 (fixup_all_virtual_upcast_offsets): Remove.
12848 * typeck.c (get_member_function_from_ptrfunc): Remove
12849 no-vtable-thunk code.
12850 * call.c (build_over_call): Adjust call to build_vfn_ref.
12851 * class.c (build_vfn_ref): Lose first parameter. Remove
12852 no-vtable-thunk code.
12853 (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
12854 (build_vtable_entry): Remove no-vtable-thunk code.
12855
12856 2001-07-20 Nathan Sidwell <nathan@codesourcery.com>
12857
12858 Remove old-abi remnants. Remove comments about old abi
12859 behavior. Remove references to 'new-abi' in comments.
12860 * cp-tree.h: Adjust comments.
12861 (vbase_offsets_in_vtable_p): Delete.
12862 (vcall_offsets_in_vtable_p): Delete.
12863 (vptrs_present_everywhere_p): Delete.
12864 (all_overridden_vfuns_in_vtables_p): Delete.
12865 (merge_primary_and_secondary_vtables_p): Delete.
12866 (TYPE_CONTAINS_VPTR_P): Adjust.
12867 (VTT_NAME_PREFIX): Remove.
12868 (CTOR_VTBL_NAME_PREFIX): Remove.
12869 (init_vbase_pointers): Remove.
12870 * class.c: Adjust coments.
12871 (build_vbase_pointer_fields): Delete.
12872 (build_vbase_pointer): Remove old-abi code.
12873 (build_secondary_vtable): Likewise.
12874 (modify_all_vtables): Likewise.
12875 (create_vtable_ptr): Likewise.
12876 (layout_class_type): Likewise.
12877 (finish_struct_1): Likewise.
12878 (finish_vtbls): Likewise.
12879 (dfs_finish_vtbls): Delete.
12880 (build_vbase_offset_vtbl_entries): Remove old-abi code.
12881 * cvt.c: Adjust comments.
12882 * decl.c: Adjust comments.
12883 * decl2.c: Adjust comments.
12884 * init.c: Adjust comments.
12885 (construct_virtual_bases): Remove old-abi code.
12886 * lang-specs.h: Remove -fno-new-abi.
12887 * mangle.c: Adjust comments.
12888 * rtti.c: Adjust comments.
12889 (get_base_offset): Remove old-abi-code.
12890 * search.c: Adjust comments.
12891 (dfs_init_vbase_pointers): Remove.
12892 (dfs_vtable_path_unmark): Remove.
12893 (init_vbase_pointers): Remove.
12894 * semantics.c: Adjust comments.
12895 (emit_associated_thunks): Remove old-abi code.
12896 * typeck.c: Adjust comments.
12897
12898 2001-07-20 Daniel Berlin <dan@cgsoftware.com>
12899
12900 * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
12901 params.h.
12902
12903 2001-07-19 Mark Mitchell <mark@codesourcery.com>
12904
12905 * class.c (finish_struct_anon): Forbid nested classes.
12906
12907 2001-07-19 Neil Booth <neil@daikokuya.demon.co.uk>
12908
12909 * decl2.c: Don't include dwarfout.h and dwarf2out.h.
12910 * optimize.c: Include debug.h.
12911 (maybe_clone_body): Use debug hook.
12912 * semantics.c: Include debug.h.
12913 (expand_body): Use debug hook.
12914
12915 2001-07-19 Neil Booth <neil@daikokuya.demon.co.uk>
12916
12917 * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
12918
12919 2001-07-18 Mark Mitchell <mark@codesourcery.com>
12920
12921 * class.c (type_requires_array_cookie): New function.
12922 (check_methods): Don't try to figure out whether the type needs a
12923 cookie here.
12924 (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
12925 * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
12926 (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
12927 * pt.c (instantiate_class_template): Don't set
12928 TYPE_VEC_DELETE_TAKES_SIZE.
12929 * NEWS: Document ABI changes from GCC 3.0.
12930
12931 2001-07-18 Xavier Delacour <xavier@fmaudio.net>,
12932 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
12933
12934 * NEWS (Changes in GCC 3.0): Fix typo.
12935
12936 2001-07-13 Joseph S. Myers <jsm28@cam.ac.uk>
12937
12938 * decl2.c (cplus_decl_attributes): Take a pointer to the node to
12939 which attributes are to be attached, and a flags argument. Update
12940 call to decl_attributes.
12941 (grokfield): Update call to decl_attributes.
12942 * class.c (finish_struct): Update call to cplus_decl_attributes.
12943 * cp-tree.h (cplus_decl_attributes): Update prototype.
12944 * decl.c (start_decl, grokdeclarator, start_function): Update
12945 calls to decl_attributes and cplus_decl_attributes.
12946 * friend.c (do_friend): Update call to cplus_decl_attributes.
12947 * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
12948
12949 2001-07-12 Mark Mitchell <mark@codesourcery.com>
12950
12951 * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
12952 for `register' variables with an asm-specification.
12953
12954 2001-07-11 Mark Mitchell <mark@codesourcery.com>
12955
12956 * semantics.c (finish_asm_stmt): Mark the output operands
12957 to an asm addressable, if necessary.
12958
12959 2001-07-11 Ben Elliston <bje@redhat.com>
12960
12961 * Revert this change -- there is a subtle bug.
12962
12963 PR c++/80
12964 * decl.c (finish_enum): New "attributes" argument; pass it to
12965 cplus_decl_attributes. Use a narrower type if the enum is packed.
12966 * cp-tree.h (finish_enum): Adjust prototype.
12967 * parse.y (enum_head): New non-terminal.
12968 (structsp): Use it. Enums now may be preceded or followed by
12969 optional attributes -- pass their chained tree to finish_enum().
12970 * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
12971
12972 2001-07-10 Mark Mitchell <mark@codesourcery.com>
12973
12974 * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
12975 variables.
12976
12977 2001-07-10 Jason Merrill <jason_merrill@redhat.com>
12978
12979 * semantics.c (cp_expand_stmt): Fix for null
12980 current_function_return_value.
12981
12982 2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl>
12983
12984 * call.c (build_op_delete_call): Initialize fn.
12985 (convert_like_real): Delete conditional.
12986 (joust): Initialize *w and *l.
12987 * class.c: Add prototype for binfo_ctor_vtable.
12988 (get_primary_binfo): Initialize result.
12989 * init.c (build_java_class_ref): Initialize name.
12990
12991 2001-07-09 Erik Rozendaal <dlr@acm.org>
12992
12993 * typeck.c (unary_complex_lvalue): Do not duplicate the
12994 argument to modify, pre-, or post-increment when used as an
12995 lvalue and when the argument has side-effects.
12996
12997 2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
12998
12999 * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
13000 (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES. Call
13001 cplus_decl_attributes even if attrs is NULL.
13002 * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
13003
13004 2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
13005
13006 * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
13007 calls to decl_attributes.
13008
13009 2001-07-06 Ira Ruben <ira@apple.com>
13010
13011 * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
13012 be DECL_TEMPLATE_RESULT.
13013
13014 2001-07-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
13015
13016 * cp-tree.h (copy_template_template_parm): Rename to ...
13017 (bind_template_template_parm): ... here.
13018 * tree.c (copy_template_template_parm): Rename to ...
13019 (bind_template_template_parm): ... here. Remove the case when
13020 NEWARGS is NULL_TREE.
13021 (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
13022 BOUND_TEMPLATE_TEMPLATE_PARM.
13023 * pt.c (lookup_template_class): Adjust.
13024
13025 2001-07-05 Jason Merrill <jason_merrill@redhat.com>
13026
13027 * cvt.c (convert_lvalue): New fn.
13028 * cp-tree.h: Declare it.
13029 * method.c (do_build_assign_ref): Use it.
13030 (do_build_copy_constructor): Convert parm to base types
13031 before calling base constructors.
13032
13033 * typeck.c (check_return_expr): Check DECL_ALIGN instead of
13034 DECL_USER_ALIGN. Check flag_elide_constructors instead of
13035 optimize.
13036 * semantics.c (cp_expand_stmt): Don't destroy the named return value.
13037
13038 2001-07-02 Nathan Sidwell <nathan@codesourcery.com>
13039
13040 * optimize.c (optimize_inline_calls): New function, broken out
13041 of ...
13042 (optimize_function): ... here. Call it. Don't inline if it is
13043 a thunk.
13044 (dump_function): Print name of dump flag causing this dump.
13045 * semantics.c (expand_body): Move thunk inline check to
13046 optimize_function.
13047
13048 2001-06-29 Joseph S. Myers <jsm28@cam.ac.uk>
13049
13050 * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
13051 (comptypes): Use target.comp_type_attributes.
13052
13053 2001-06-29 Nathan Sidwell <nathan@codesourcery.com>
13054
13055 * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
13056
13057 2001-06-28 Gabriel Dos Reis <gdr@merlin.codesourcery.com>
13058
13059 * error.c (lang_print_error_function): Add a `diagnostic_context *'
13060 parameter. Tweak.
13061
13062 2001-06-27 Neil Booth <neil@cat.daikokuya.demon.co.uk>
13063
13064 * decl2.c (import_export_class): Update.
13065
13066 2001-06-26 Gabriel Dos Reis <gdr@codesourcery.com>
13067
13068 * error.c (init_error): Adjust settings.
13069
13070 2001-06-26 Gabriel Dos Reis <gdr@codesourcery.com>
13071
13072 * error.c (init_error): Adjust settings.
13073
13074 2001-06-19 Richard Sandiford <rsandifo@redhat.com>
13075
13076 * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
13077 return pointers to data members by reference rather than by value.
13078
13079 2001-06-18 Jason Merrill <jason_merrill@redhat.com>
13080
13081 Implement the Named Return Value optimization.
13082 * cp-tree.h (struct cp_language_function): Add x_return_value.
13083 (current_function_return_value): Now a macro.
13084 * decl.c: Don't define it.
13085 (define_label, finish_case_label): Don't clear it.
13086 (init_decl_processing): Don't register it with GC.
13087 * semantics.c (genrtl_finish_function): Don't check it for
13088 no_return_label. Copy the RTL from the return value to
13089 current_function_return_value and walk, calling...
13090 (nullify_returns_r): ...this new fn.
13091 * typeck.c (check_return_expr): Set current_function_return_value.
13092
13093 2001-06-15 Jason Merrill <jason_merrill@redhat.com>
13094
13095 * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
13096 sharing a ctor vtable with. Merge code for cases 1 and 2.
13097 (binfo_ctor_vtable): New fn.
13098 (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
13099
13100 2001-06-14 Jason Merrill <jason_merrill@redhat.com>
13101
13102 * class.c (dfs_find_final_overrider): Fix logic.
13103
13104 * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
13105 virtual thunk instead of non-virtual.
13106 (get_matching_virtual): Uncomment.
13107
13108 * pt.c (unify): Don't recurse between the POINTER_TYPE and the
13109 OFFSET_TYPE. If we're adding cv-quals, the extra ones would be on
13110 PARM, not ARG.
13111
13112 2001-06-14 Nathan Sidwell <nathan@codesourcery.com>
13113
13114 * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
13115 we've not emerged from the hierarchy of RTTI_BINFO on reaching
13116 a non-virtual base.
13117
13118 2001-06-13 Mark Mitchell <mark@codesourcery.com>
13119
13120 * NEWS: Update release number.
13121
13122 2001-06-12 Nathan Sidwell <nathan@codesourcery.com>
13123
13124 PR c++/3130, c++/3131, c++/3132
13125 * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
13126 * class.c (force_canonical_binfo_r): Move
13127 BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
13128 virtual bases unless they're primary and what they're primary
13129 too has been moved.
13130 (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
13131 with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
13132 BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
13133 derived binfo.
13134 (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
13135 (layout_nonempty_base_or_field): Add most derived type
13136 parameter. Adjust.
13137 (layout_empty_base): Likewise.
13138 (build_base_field): Likewise.
13139 (build_base_fields): Likewise.
13140 (propagate_binfo_offsets): Add most derived type
13141 parameter. Skip non canonical virtual bases too.
13142 (dfs_set_offset_for_unshared_vbases): Don't skip primary
13143 bases. Do skip canonical bases.
13144 (layout_virtual_bases): Adjust.
13145 (layout_class_type): Adjust.
13146 (dfs_get_primary_binfo): Build list of virtual primary base
13147 candidates.
13148 (get_primary_binfo): Check that the shared virtual primary
13149 base candidate was found first.
13150 (accumulate_vtbl_inits): Don't do anything for non-vptr
13151 containing binfos. For case 1 primary virtual bases, keep
13152 checking that we've not emerged from the hierarchy of RTTI_BINFO.
13153
13154 2001-06-12 Nathan Sidwell <nathan@codesourcery.com>
13155
13156 PR c++/3089
13157 * class.c (dfs_accumulate_vtbl_inits): Always walk down the
13158 hierarchy looking for primary bases for a ctor
13159 vtable. Recursively call oneself, if we meet our primary via
13160 this route and haven't met it yet via inheritance graph order.
13161
13162 2001-06-11 Mark Mitchell <mark@codesourcery.com>
13163
13164 * lang-options.h: Emit documentation for -fno-honor-std, not
13165 -fhonor-std.
13166
13167 2001-06-10 Alexandre Oliva <aoliva@redhat.com>
13168
13169 * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
13170 Don't clobber delta.
13171 (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
13172
13173 2001-06-10 Mark Mitchell <mark@codesourcery.com>
13174 Gabriel Dos Reis <gdr@codesourcery.com>
13175
13176 * Make-lang.in (cp/call.o): Depend on diagnostic.h
13177 (cp/typeck.o): Depend on diagnostic.h
13178 (cp/typeck2.o): Depend on diagnostic.h
13179 (cp/repo.o): Depend on dignostic.h
13180 * typeck.c: #include diagnostic.h
13181 (convert_for_initialization): Remove extern declaration for
13182 warningcount and errorcount.
13183
13184 * call.c: #include diagnostic.h
13185 (convert_like_real): Remove extern declaration for warnincount and
13186 errorcount.
13187
13188 * repo.c: #include diagnostic.h
13189 * typeck2.c: #include diagnostic.h
13190
13191 2001-06-08 Nathan Sidwell <nathan@codesourcery.com>
13192
13193 * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
13194 in previous change.
13195
13196 2001-06-08 Nathan Sidwell <nathan@codesourcery.com>
13197
13198 PR c++/2929
13199 * friend.c (do_friend): Use push_decl_namespace for classes at
13200 namespace scope.
13201
13202 2001-06-08 Nathan Sidwell <nathan@codesourcery.com>
13203 Jason Merrill <jason_merrill@redhat.com>
13204
13205 PR c++/3061
13206 * class.c (build_secondary_vtable): Use assert, rather than an error
13207 message.
13208 (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
13209 (dfs_accumulate_vtbl_inits): A lost primary virtual base may
13210 be between ORIG_BINFO and RTTI_BINFO, but neither of them.
13211 Don't set BINFO_VTABLE for a primary virtual base.
13212
13213 2001-06-07 Mark Mitchell <mark@codesourcery.com>
13214
13215 * decl.c (duplicate_decls): Update source position information
13216 when a template function is defined.
13217
13218 2001-06-07 Phil Edwards <pme@sources.redhat.com>
13219
13220 * lang-specs.h: Move -D_GNU_SOURCE to config/linux.h.
13221
13222 2001-06-07 Nathan Sidwell <nathan@codesourcery.com>
13223
13224 PR c++/2914
13225 * decl.c (pushtag): Don't push into a complete type's scope.
13226
13227 2001-06-06 Jason Merrill <jason_merrill@redhat.com>
13228
13229 * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
13230 (struct lang_decl_flags): Lose generate_with_vtable_p.
13231 (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
13232 * class.c (copy_virtuals): Adjust.
13233 * decl2.c (mark_vtable_entries): Adjust.
13234 * method.c (make_thunk, build_vtable_entry): Adjust.
13235 * class.c (update_vtable_entry_for_fn): Only look as far as the
13236 first defining class.
13237 (build_vtbl_initializer): Put nothing in the slot for a function only
13238 defined in a lost primary virtual base.
13239 (add_vcall_offset_vtbl_entries_1): Use the same code for
13240 the lost primary case and the normal case.
13241 (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
13242 (get_vfield_offset, get_derived_offset): Lose.
13243 (dfs_find_final_overrider): Use look_for_overrides_here.
13244 (get_matching_virtual): New fn.
13245 * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
13246 not BV_VCALL_INDEX.
13247 * search.c (look_for_overrides_here): Split out from...
13248 (look_for_overrides_r): Here.
13249
13250 * class.c (find_final_overrider): Return error_mark_node on error.
13251
13252 * decl2.c (key_method): #if 0 accidental change.
13253
13254 2001-06-06 John David Anglin <dave@hiauly1.hia.nrc.ca>
13255
13256 * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
13257 (build_over_call): Likewise.
13258 * decl.c (grokparms): Likewise.
13259 * pt.c (tsubst_decl): Likewise.
13260 * typeck.c (convert_arguments): Likewise.
13261
13262 2001-06-05 Mark Mitchell <mark@codesourcery.com>
13263
13264 * semantics.c (begin_class_definition): Robustify.
13265
13266 * pt.c (instantiate_decl): Tell the repository code about the
13267 clones, not the cloned functions.
13268 * repo.c (repo_template_used): Explicitly instantiate the cloned
13269 function, not the clones.
13270
13271 2001-06-05 Nathan Sidwell <nathan@codesourcery.com>
13272
13273 * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
13274 ICS_BAD_FLAG on created conversion.
13275 (compare_ics): Break out rank.
13276
13277 2001-06-05 Nathan Sidwell <nathan@codesourcery.com>
13278
13279 * decl.c (xref_tag): Remove extraneous %s on dependent name
13280 lookup warning.
13281
13282 2001-06-05 Nathan Sidwell <nathan@codesourcery.com>
13283
13284 * class.c (layout_vtable_decl): Fix off by one error on
13285 build_index_type.
13286 (build_vtt): Likewise.
13287 (build_ctor_vtbl_group): Likewise.
13288
13289 2001-06-05 Nathan Sidwell <nathan@codesourcery.com>
13290
13291 * class.c (maybe_indent_hierarchy): New function.
13292 (dump_class_hierarchy_r): Add flags. Dump extra binfo
13293 information, if enabled. Use maybe_indent_hierarchy. Adjust
13294 output format.
13295 (dump_class_hierarchy): Adjust prototype. Adjust output format.
13296 (dump_array, dump_vtable, dump_vtt): New functions.
13297 (finish_struct_1): Adjust hierarchy dumping.
13298 (initialize_vtable): Call dump_vtable.
13299 (build_vtt): Call dump_vtt.
13300 (build_ctor_vtbl_group): Call dump_vtable.
13301 * decl2.c (flag_dump_class_layout): Remove.
13302 (cxx_decode_option): Remove dump translation unit
13303 and dump class hierarchy check. Call dump_switch_p.
13304 (finish_file): Adjust dumping.
13305 (dump.c): Only dump base classes if not TDF_SLIM.
13306 Only dump namespace members if not TDF_SLIM.
13307 * optimize.c (dump_function): New function.
13308 (optimize_function): Call dump_function.
13309 * semantics.c (expand_body): Use dump_enabled_p.
13310
13311 2001-06-01 Nathan Sidwell <nathan@codesourcery.com>
13312
13313 PR g++/2936
13314 Part missed from first commit
13315 * decl2.c (finish_anon_union): Copy context.
13316
13317 2001-05-30 Nathan Sidwell <nathan@codesourcery.com>
13318
13319 PR g++/2936
13320 * optimize.c (remap_decl): Remap anonymous aggregate members too.
13321
13322 2001-05-26 Nathan Sidwell <nathan@codesourcery.com>
13323
13324 PR g++/2823
13325 * semantics.c (expand_body): Don't optimize thunks.
13326
13327 2001-05-25 Sam TH <sam@uchicago.edu>
13328
13329 * cp-tree.h lex.h: Fix header include guards.
13330
13331 2001-05-25 Mark Mitchell <mark@codesourcery.com>
13332
13333 * decl.c (init_decl_processing): Tweak.
13334
13335 2001-05-24 Mark Mitchell <mark@codesourcery.com>
13336
13337 * decl.c (duplicate_decls): Tidy.
13338 (init_decl_processing): Always set flag_no_builtin.
13339
13340 2001-05-24 Nathan Sidwell <nathan@codesourcery.com>
13341
13342 PR c++/2184
13343 * decl2.c (do_local_using_decl): Push the decls, even in a
13344 template.
13345
13346 2001-05-22 Mark Mitchell <mark@codesourcery.com>
13347
13348 * optimize.c (initialize_inlined_parameters): Don't set
13349 TREE_READONLY for a VAR_DECL taking the place of an inlined
13350 PARM_DECL.
13351
13352 2001-05-22 Jason Merrill <jason_merrill@redhat.com>
13353
13354 * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
13355 * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
13356 attribute.
13357
13358 2001-05-22 Joseph S. Myers <jsm28@cam.ac.uk>
13359
13360 * parse.y: Refer to compound literals as such, not as
13361 constructor-expressions.
13362
13363 2001-05-21 Mark Mitchell <mark@codesourcery.com>
13364
13365 * call.c (build_op_delete_call): Ignore exception-specifications
13366 when looking for matching delete operators.
13367 * init.c (build_new_1): Compute whether or not the allocation
13368 function used is a placement allocation function or not, and
13369 communicate this information to build_op_delete_call.
13370
13371 2001-05-21 Jason Merrill <jason_merrill@redhat.com>
13372
13373 * class.c (build_vtable_entry_ref): Lose vtbl parm. Fix for new abi.
13374 (build_vtbl_ref): Adjust.
13375 (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
13376 * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
13377 Re-add vtable-gc.
13378 (unsupported_options): Correspondingly.
13379
13380 * decl2.c (maybe_make_one_only): Check flag_weak, not
13381 supports_one_only().
13382
13383 * cp-tree.def (START_CATCH_STMT): Lose.
13384 * dump.c (cp_dump_tree): Don't dump it. Do dump HANDLER_PARMS.
13385 * tree.c (cp_statement_code_p): Don't case it.
13386 * semantics.c (cp_expand_stmt): Likewise.
13387 * cp-tree.h (START_CATCH_TYPE): Lose.
13388 (HANDLER_TYPE): New.
13389 * except.c (expand_start_catch_block): Don't start any blocks.
13390 Return the type.
13391 (expand_end_catch_block): Don't end any blocks.
13392 * parse.y (handler): Don't pass anything from finish_handler_parms
13393 to finish_handler.
13394 * pt.c (tsubst_expr): Likewise.
13395 * semantics.c (begin_handler): Call note_level_for_catch here.
13396 (finish_handler_parms): Don't return anything.
13397 (genrtl_catch_block, begin_catch_block): Lose.
13398 (genrtl_handler): Call expand_start_catch here.
13399
13400 2001-05-18 Jason Merrill <jason_merrill@redhat.com>
13401
13402 * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
13403 (get_vtable_decl, build_vtt): Not here.
13404
13405 2001-05-20 Nathan Sidwell <nathan@codesourcery.com>
13406
13407 PR c++/2781
13408 * optimize.c (update_cloned_parm): Copy addressability and other
13409 flags.
13410
13411 2001-05-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
13412
13413 * pt.c (determine_specialization): Ignore artificial functions.
13414
13415 2001-05-20 Neil Booth <neil@daikokuya.demon.co.uk>
13416
13417 * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
13418 (C_RID_CODE): Remove.
13419 * lex.c (cxx_init_options): Call set_identifier_size. Update.
13420 (init_parse): Don't do it here.
13421
13422 2001-05-18 Diego Novillo <dnovillo@redhat.com>
13423
13424 * decl2.c (finish_objects): Use the original SYMBOL_REF from the
13425 function declaration to avoid stripping the symbol's attributes.
13426
13427 2001-05-18 Nathan Sidwell <nathan@codesourcery.com>
13428
13429 * decl.c (pushdecl): Adjust error string.
13430 (xref_tag): Adjust friend class injection warning. Remove the
13431 inherited name from the class shadowed scope.
13432
13433 2001-05-17 Mark Mitchell <mark@codesourcery.com>
13434
13435 * except.c (cp_protect_cleanup_actions): New function.
13436 (init_exception_processing): Don't set protect_cleanup_actions
13437 here. Do set lang_protect_cleanup_actions.
13438
13439 2001-05-16 Nathan Sidwell <nathan@codesourcery.com>
13440
13441 * spew.c (read_token): Call yyerror on all unexpected tokens.
13442
13443 2001-05-16 Nathan Sidwell <nathan@codesourcery.com>
13444
13445 * init.c (member_init_ok_or_else): Take a tree rather than
13446 string for name.
13447 (expand_member_init): Adjust.
13448
13449 2001-05-14 Nick Clifton <nickc@cambridge.redhat.com>
13450
13451 * decl.c (duplicate_decls): Suppress warning about duplicate
13452 decls if the first decl is a friend.
13453
13454 2001-05-12 Zack Weinberg <zackw@stanford.edu>
13455
13456 * except.c (choose_personality_routine): Export. Add
13457 explanatory comment. Take an enum languages, not a boolean.
13458 (initialize_handler_parm): Adjust to match.
13459 * cp-tree.h: Prototype choose_personality_routine.
13460 * lex.c (handle_pragma_java_exceptions): New function.
13461 (init_cp_pragma): Register #pragma GCC java_exceptions.
13462
13463 2001-05-12 Neil Booth <neil@cat.daikokuya.demon.co.uk>
13464
13465 * method.c (build_mangled_C99_name): Remove unused prototype.
13466
13467 2001-05-12 Alexandre Oliva <aoliva@redhat.com>
13468
13469 * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
13470 * typeck.c (get_member_function_from_ptrfunc,
13471 build_ptrmemfunc, expand_ptrmemfunc_cst): Take
13472 TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
13473
13474 Reverted Geoff Keating's 2001-05-03's patch.
13475
13476 2001-05-11 Ira Ruben <ira@apple.com>
13477
13478 * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
13479
13480 2001-05-11 Neil Booth <neil@daikokuya.demon.co.uk>
13481
13482 * cp-tree.h (finish_label_expr, lookup_label): Delete.
13483 * parse.y: Update for '&&'; don't issue warning here.
13484 * semantics.c (finish_label_expr): Delete.
13485
13486 2001-05-07 Mark Mitchell <mark@codesourcery.com>
13487
13488 * splay-tree.h (splay_tree_max): New function.
13489 (splay_tree_min): Likewise.
13490
13491 2001-05-03 Geoffrey Keating <geoffk@redhat.com>
13492
13493 * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
13494 (pfn_vflag_identifier): Define.
13495 Update comment about layout of pointer functions.
13496 (build_ptrmemfunc1): Update prototype.
13497 (expand_ptrmemfunc_cst): Update prototype.
13498 * decl.c (initialize_predefined_identifiers): Initialize
13499 pfn_vflag_identifier.
13500 (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
13501 an extra field to the type.
13502 * expr.c (cplus_expand_constant): Pass 'flag' between
13503 expand_ptrmemfunc_cst and build_ptrmemfunc1.
13504 * typeck.c (get_member_function_from_ptrfunc): When
13505 FUNCTION_BOUNDARY < 16, look at additional field to determine
13506 if a pointer-to-member is a real pointer or a vtable offset.
13507 (build_ptrmemfunc1): Add new parameter to contain extra field.
13508 (build_ptrmemfunc): Pass the extra field around.
13509 (expand_ptrmemfunc_cst): Add new parameter to return extra field.
13510 (pfn_from_ptrmemfunc): Ignore the extra field.
13511
13512 2001-05-03 Mark Mitchell <mark@codesourcery.com>
13513
13514 * cp-tree.h (flag_inline_trees): Update documentation.
13515 * decl.c (init_decl_processing): Adjust handling of
13516 flag_inline_functions and flag_inline_trees to support -O3.
13517 (grokfndecl): Set DECL_INLINE on all functions if that's what
13518 the user requested.
13519 (save_function_data): Clear DECL_INLINE in
13520 current_function_cannot_inline is non-NULL.
13521 * decl2.c (flag_inline_trees): Update documentation.
13522
13523 2001-05-03 Nathan Sidwell <nathan@codesourcery.com>
13524
13525 * dump.c (cp_dump_tree, USING_STMT case): New case.
13526 * tree.c (cp_statement_code_p): Add USING_STMT.
13527 * decl2.c (do_using_directive): Add the using directive statement.
13528
13529 * tree.c (walk_tree): Reformat an if block.
13530
13531 2001-05-02 Mark Mitchell <mark@codesourcery.com>
13532
13533 * decl.c (compute_array_index_type): Don't try to do anything with
13534 the indices when processing a template.
13535
13536 2001-05-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13537
13538 * call.c: NULL_PTR -> NULL.
13539 * class.c: Likewise.
13540 * cvt.c: Likewise.
13541 * decl.c: Likewise.
13542 * decl2.c: Likewise.
13543 * except.c: Likewise.
13544 * init.c: Likewise.
13545 * rtti.c: Likewise.
13546 * search.c: Likewise.
13547 * tree.c: Likewise.
13548 * typeck.c: Likewise.
13549 * typeck2.c: Likewise.
13550
13551 2001-05-02 Mark Mitchell <mark@codesourcery.com>
13552
13553 * decl2.c (do_using_directive): Revert previous patch.
13554
13555 2001-05-01 Nathan Sidwell <nathan@codesourcery.com>
13556
13557 * cp-tree.def (USING_STMT): New statement node.
13558 * cp-tree.h (USING_STMT_NAMESPACE): New macro.
13559 * decl2.c (do_using_directive): Add USING_STMT to statement
13560 tree. Don't emit errors when processing template decl.
13561 * pt.c (tsubst_expr, USING_STMT case): New case.
13562 * semantics.c (cp_expand_stmt, USING_STMT case): New case.
13563
13564 2001-05-01 Nathan Sidwell <nathan@codesourcery.com>
13565
13566 * call.c (build_new_op): Convert args from reference here.
13567 (build_conditional_expr): Don't convert here.
13568
13569 2001-05-01 Nathan Sidwell <nathan@codesourcery.com>
13570
13571 * spew.c (last_token_id): New static variable.
13572 (read_token): Set it here.
13573 (yyerror): Use it here.
13574
13575 2001-04-30 Richard Henderson <rth@redhat.com>
13576
13577 * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
13578 * decl.c: Likewise.
13579
13580 2001-04-30 Mark Mitchell <mark@codesourcery.com>
13581
13582 * gxxint.texi: Remove.
13583 * Make-lang.in: Remove all traces of gxxint.texi.
13584
13585 2001-04-30 Mark P Mitchell <mark@codesourcery.com>
13586
13587 * decl2.c (start_static_initialization_or_destruction): Correct
13588 logic to handle the -fno-use-cxa-atexit case.
13589
13590 2001-04-30 Mark Mitchell <mark@codesourcery.com>
13591
13592 * optimize.c (update_cloned_parm): New function.
13593 (maybe_clone_body): Use it. Update the `this' parameter too.
13594
13595 2001-04-29 Joseph S. Myers <jsm28@cam.ac.uk>
13596
13597 * decl2.c (unsupported_options): Add new-abi.
13598 * lang-options.h: Remove no longer supported options.
13599
13600 2001-04-27 Nathan Sidwell <nathan@codesourcery.com>
13601
13602 * except.c (can_convert_eh): Don't check template parms,
13603 typename types etc.
13604
13605 2001-04-27 Nathan Sidwell <nathan@codesourcery.com>
13606
13607 * optimize.c (maybe_clone_body): Copy parameter names and locations.
13608
13609 2001-04-27 Nathan Sidwell <nathan@codesourcery.com>
13610
13611 * cp-tree.h (adjust_clone_args): Prototype new function.
13612 * class.c (adjust_clone_args): New function.
13613 * decl.c (start_function): Call it for in charge ctors.
13614
13615 2001-04-26 Mark Mitchell <mark@codesourcery.com>
13616
13617 * method.c (use_thunk): Make sure that thunks really are emitted
13618 when requested.
13619
13620 2001-04-26 Nathan Sidwell <nathan@codesourcery.com>
13621
13622 * mangle.c (write_chars): New macro.
13623 (hwint_to_ascii): New function
13624 (write_number): Use it.
13625 (write_integer_cst): Deal with really big numbers.
13626
13627 2001-04-25 Mark Mitchell <mark@codesourcery.com>
13628
13629 * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
13630 the clone.
13631
13632 2001-04-25 Nathan Sidwell <nathan@codesourcery.com>
13633
13634 * decl.c (grokdeclarator): Set context of namespace scope
13635 TYPE_DECLS.
13636
13637 2001-04-24 Zack Weinberg <zackw@stanford.edu>
13638
13639 * cp/optimize.c: Include hashtab.h.
13640 (struct inline_data): Add tree_pruner.
13641 (expand_call_inline, expand_calls_inline): Use it when calling
13642 walk_tree.
13643 (optimize_function): Initialize and free tree_pruner.
13644
13645 2001-04-24 Nathan Sidwell <nathan@codesourcery.com>
13646
13647 Lazy __FUNCTION__ generation.
13648 * cp-tree.def (FUNCTION_NAME): Remove.
13649 * cp-tree.h (function_name_declared_p): Remove.
13650 (cp_fname_init): Prototype.
13651 * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
13652 don't call declare_function_name. Call start_fname_decls.
13653 (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
13654 clobber the line number.
13655 (cp_fname_init): New function.
13656 (start_function): Call start_fname_decls.
13657 (finish_function): Call finish_fname_decls.
13658 * lex.c (reswords): Add slots for __FUNCTION__ et al.
13659 (rid_to_yy): Add mappings for __FUNCTION__ et al.
13660 * optimize.c (maybe_clone_body): Remove function_name_declared_p.
13661 * parse.y (VAR_FUNC_NAME): New token.
13662 (primary): Add VAR_FUNC_NAME.
13663 * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
13664 generation.
13665 (tsubst, FUNCTION_NAME case): Remove.
13666 (tsubst_copy, FUNCTION_NAME case): Remove.
13667 (tsubst_expr, DECL_STMT case): Be careful with a
13668 DECL_PRETTY_FUNCTION_P.
13669 (instantiate_decl): Remove function_name_declared_p.
13670 * semantics.c (begin_compound_statement): Don't call
13671 declare_function_name here.
13672 (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
13673 (finish_translation_unit): Call finish_fname_decls.
13674 (expand_body): Remove function_name_declared_p.
13675 * typeck2.c (digest_init): Allow any ERROR_MARK.
13676
13677 2001-04-24 Nathan Sidwell <nathan@codesourcery.com>
13678
13679 * pt.c (tsubst_decl): Use VOID_TYPE_P.
13680 * semantics.c: Fix some typos.
13681
13682 2001-04-23 Phil Edwards <pme@sources.redhat.com>
13683
13684 * cp/decl2.c (flag_honor_std): Always initialize to 1.
13685
13686 2001-04-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13687
13688 * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
13689
13690 2001-04-23 Jason Merrill <jason_merrill@redhat.com>
13691
13692 * except.c (build_throw): Wrap the initialization of the exception
13693 object in a MUST_NOT_THROW_EXPR.
13694 (do_free_exception): #if 0.
13695
13696 2001-04-20 Mark Mitchell <mark@codesourcery.com>
13697
13698 * cp-tree.h (finish_enum): Change prototype.
13699 * decl.c (finish_enum): Reorganize.
13700 * parse.y (structsp): Adjust calls to finish_enum.
13701
13702 2001-04-20 Nathan Sidwell <nathan@codesourcery.com>
13703
13704 * tree.c (cp_tree_equal): Adjust final switch formatting. Add
13705 't' case.
13706
13707 2001-04-20 Nathan Sidwell <nathan@codesourcery.com>
13708
13709 * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
13710 (layout_empty_base): Return at end flag.
13711 (build_base_field): Likewise.
13712 (build_base_fields): Likewise.
13713 (layout_virtual_bases): Don't add 1 to eoc value.
13714 (end_of_class): Use full size for empty bases.
13715 (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
13716 empty bases. Don't add 1 to eoc value. Only add trailing padding
13717 if we're an empty class with no empty bases.
13718 (dump_class_hierarchy): Dump size and alignment.
13719
13720 2001-04-20 Jakub Jelinek <jakub@redhat.com>
13721
13722 * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
13723 ICS_BAD_FLAG.
13724
13725 2001-04-20 Jakub Jelinek <jakub@redhat.com>
13726
13727 * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
13728 is found, look first if name does not match the structure name.
13729
13730 2001-04-19 Mark Mitchell <mark@codesourcery.com>
13731
13732 * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
13733 set.
13734 (SET_DECL_LANGUAGE): New macro.
13735 * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
13736 (pushdecl): Likewise.
13737 (build_library_fn_1): Likewise.
13738 (build_cp_library_fn): Likewise.
13739 (grokfndecl): Likewise.
13740 (grokvardecl): Mark `extern "C"' variables as having C linkage.
13741 * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
13742 * lex.c (retrofit_lang_decl): Likewise.
13743 * mangle.c (mangle_decl_string): Don't mangle the names of
13744 variables declared with C language linkage.
13745 * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
13746
13747 2001-04-18 John David Anglin <dave@hiauly1.hia.nrc.ca>
13748
13749 * semantics.c (simplify_aggr_init_exprs_r): Don't restore
13750 flag_access_control from uninitialized storage.
13751
13752 2001-04-15 Mark Mitchell <mark@codesourcery.com>
13753
13754 * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
13755 * mangle.c (write_pointer_to_member_type): Fix mangling of
13756 pointers to cv-qualified member function types.
13757
13758 * init.c (build_delete): Create a SAVE_EXPR for the address if
13759 we're going to use it more than once.
13760
13761 2001-04-13 Mark Mitchell <mark@codesourcery.com>
13762
13763 * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
13764 (expand_ptremfunc_cst): Change prototype.
13765 (delta2_from_ptrmemfunc): Remove.
13766 * expr.c (cplus_expand_constant): Adjust call to
13767 expand_ptrmemfunc_cst.
13768 * typeck.c (build_ptrmemfunc1): Simplify.
13769 (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
13770 results in a constant.
13771 (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
13772 (delta2_from_ptrmemfunc): Remove.
13773 (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
13774
13775 2001-04-12 Jason Merrill <jason_merrill@redhat.com>
13776
13777 * cp-tree.h (decl_namespace_list): New macro.
13778 (struct saved_scope): Add decl_ns_list.
13779 * decl.c (mark_saved_scope): Mark it.
13780 * decl2.c: Lose static decl_namespace_list.
13781 (init_decl2): Don't save it.
13782
13783 2001-04-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13784
13785 * cp-tree.h (warn_return_type, yylex): Delete redundant
13786 declarations.
13787
13788 * decl.c (current_class_depth, global_namespace): Likewise.
13789
13790 * decl2.c (current_class_depth, flag_gnu_xref): Likewise
13791
13792 * repo.c (flag_use_repository): Likewise.
13793
13794 2001-04-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13795
13796 * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
13797 set_block, pushdecl, getdecls, gettags, init_decl_processing,
13798 maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
13799 lvalue_or_else, print_lang_statistics, comp_target_types,
13800 unsigned_type, signed_type, signed_or_unsigned_type,
13801 build_function_call, mark_addressable, incomplete_type_error):
13802 Delete redundant declarations.
13803
13804 2001-04-11 Jason Merrill <jason_merrill@redhat.com>
13805
13806 * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
13807 (TYPE_ANONYMOUS_P): New macro.
13808 (TAGGED_TYPE_P): New macro.
13809 * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
13810 (grokfndecl, grokvardecl, grokdeclarator): Likewise.
13811 * tree.c (no_linkage_helper): Likewise.
13812 * semantics.c (begin_class_definition): Likewise.
13813 * pt.c (convert_template_argument): Likewise.
13814 * lex.c (check_for_missing_semicolon): Likewise.
13815
13816 2001-04-12 Nathan Sidwell <nathan@codesourcery.com>
13817
13818 * class.c (dfs_unshared_virtual_bases): New function.
13819 (mark_primary_bases): Call it.
13820 (check_bases): Ignore virtual bases when determining
13821 nearly-emptiness.
13822
13823 2001-04-12 Nathan Sidwell <nathan@codesourcery.com>
13824
13825 * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
13826
13827 2001-04-11 Mark Mitchell <mark@codesourcery.com>
13828
13829 * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
13830 cloned function to the clone.
13831
13832 2001-04-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13833
13834 * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
13835
13836 * semantics.c: Include expr.h.
13837
13838 2001-04-11 Nathan Sidwell <nathan@codesourcery.com>
13839
13840 * method.c (implicitly_declare_fn): Commonize code for copy ctor
13841 and assignment op. Set TREE_USED for parameter.
13842
13843 2001-04-10 Mark Mitchell <mark@codesourcery.com>
13844
13845 * class.c (find_final_overrider_data): Add `candidates'.
13846 (dfs_find_final_overrider): Don't issue error messages
13847 prematurely.
13848 (find_final_overrider): Issue error messages here.
13849 (build_base_field): Don't warn about amgibuous direct bases here.
13850 (warn_about_ambiguous_direct_bases): New function.
13851 (layout_class_type): Use it.
13852
13853 2001-04-10 Richard Henderson <rth@redhat.com>
13854
13855 * typeck.c (build_array_ref): Push the array reference inside
13856 COMPOUND_EXPR and COND_EXPR.
13857
13858 2001-04-05 Mark Mitchell <mark@codesourcery.com>
13859
13860 * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
13861 * decl.c (duplicate_decls): Adjust accordingly.
13862 (maybe_commonize_var): Likewise.
13863 (grokfndecl): Likewise.
13864 (start_function): Likewise.
13865 (start_method): Likewise.
13866 * decl2.c (key_method): Likewise.
13867 (import_export_decl): Likewise.
13868 * method.c (implicitly_declare_fn): Likewise.
13869 * optimize.c (maybe_clone_body): Likewise.
13870
13871 2001-04-05 Benjamin Kosnik <bkoz@redhat.com>
13872
13873 * lang-specs.h: Add __DEPRECATED.
13874
13875 2001-04-05 J"orn Rennecke <amylaar@redhat.com>
13876
13877 * search.c (get_dynamic_cast_base_type): When building a new
13878 constant, set its type to ssizetype.
13879
13880 2001-04-04 Jakub Jelinek <jakub@redhat.com>
13881
13882 * optimize.c (expand_call_inline): Only add newly inlined statements
13883 into inlined_stmts.
13884
13885 2001-04-03 Mark Mitchell <mark@codesourcery.com>
13886
13887 * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
13888 (OPERATOR_FORMAT): Likewise.
13889 (OPERATOR_TYPENAME_FORMAT): Likewise.
13890 * operators.def: Remove old name-mangling information.
13891 * decl.c (grok_op_properties): Adjust accordingly.
13892 * lex.c (init_operators): Likewise.
13893 * rtti.c (get_tinfo_decl): Issue error messages about types that
13894 have variable size.
13895
13896 2001-04-03 Mark Mitchell <mark@codesourcery.com>
13897
13898 * decl2.c (import_export_decl): Don't call import_export_class
13899 when processing an inline member function.
13900 * semantics.c (expand_body): Call import_export_decl before
13901 emitting inline functions.
13902
13903 2001-03-28 Richard Henderson <rth@redhat.com>
13904
13905 IA-64 ABI Exception Handling:
13906 * cp-tree.def (EH_SPEC_BLOCK): New.
13907 (MUST_NOT_THROW_EXPR): New.
13908 * cp-tree.h: Update changed function declarations.
13909 (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
13910 (CPTI_CALL_UNEXPECTED): New.
13911 (struct cp_language_function): Rename x_eh_spec_try_block
13912 to x_eh_spec_block.
13913 (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
13914 * decl.c (current_binding_level): If no current function
13915 bindings, revert to scope_chain.
13916 (initialize_predefined_identifiers): Remove __cp_push_exception.
13917 (store_parm_decls): Use begin_eh_spec_block.
13918 (finish_function): Use finish_eh_spec_block.
13919 (mark_lang_function): Update for name changes.
13920 * decl2.c (finish_file): No mark_all_runtime_matches.
13921 * dump.c (cp_dump_tree): Handle new tree codes.
13922 * error.c (dump_expr) [BIND_EXPR]: Fix typo.
13923 * except.c (catch_language_init, catch_language): Remove.
13924 (init_exception_processing): Don't set language code.
13925 Initialize call_unexpected_node, protect_cleanup_actions,
13926 eh_personality_libfunc, lang_eh_runtime_type.
13927 (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
13928 (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
13929 (prepare_eh_type): Split out type canonicalizations ...
13930 (build_eh_type_type): ... from here.
13931 (build_eh_type_type_ref): Remove.
13932 (mark_all_runtime_matches): Remove.
13933 (build_exc_ptr): New.
13934 (do_begin_catch, do_end_catch): New.
13935 (do_pop_exception): Remove.
13936 (build_terminate_handler): Remove.
13937 (choose_personality_routine): Split out language choice from ...
13938 (initialize_handler_parm): ... here.
13939 Use MUST_NOT_THROW_EXPR.
13940 (expand_start_catch_block): Use do_begin_catch. Simplify Java
13941 exception object handling.
13942 (expand_start_eh_spec, expand_end_eh_spec): Remove.
13943 (expand_exception_blocks, alloc_eh_object): Remove.
13944 (begin_eh_spec_block, finish_eh_spec_block): New.
13945 (do_allocate_exception, do_free_exception): New.
13946 (expand_throw): Merge into ...
13947 (build_throw): ... here. Update for abi.
13948 * expr.c (cplus_expand_expr): No expand_internal_throw.
13949 Handle MUST_NOT_THROW_EXPR.
13950 * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
13951 * semantics.c (*) Update for except.h name changes.
13952 (genrtl_try_block): No protect_with_terminate.
13953 (genrtl_eh_spec_block): New.
13954 (genrtl_handler): Don't emit the goto here.
13955 (cp_expand_stmt): Handle EH_SPEC_BLOCK.
13956 (genrtl_finish_function): Don't expand_exception_blocks.
13957 * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
13958
13959 2001-03-28 Richard Henderson <rth@redhat.com>
13960
13961 * decl.c (struct named_label_list): Rename eh_region to
13962 in_try_scope, add in_catch_scope.
13963 (struct binding_level): Rename eh_region to is_try_scope,
13964 add is_catch_scope.
13965 (note_level_for_try): Rename from note_level_for_eh.
13966 (note_level_for_catch): New.
13967 (poplevel): Copy both is_try_scope and is_catch_scope to
13968 the named_label_list struct.
13969 (check_previous_goto_1): Don't check for catch block via
13970 DECL_ARTIFICIAL; use in_try_scope instead.
13971 (check_goto): Likewise.
13972 * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
13973 * except.c (expand_start_catch_block): Call note_level_for_catch.
13974 * semantics.c (begin_compound_stmt): Update for note_level_for_try.
13975
13976 2001-03-27 Richard Henderson <rth@redhat.com>
13977
13978 * except.c: Use USING_SJLJ_EXCEPTIONS instead of
13979 exceptions_via_longjmp.
13980
13981 2001-03-27 Phil Edwards <pme@sources.redhat.com>
13982
13983 * pt.c (check_default_tmpl_args): Make error messages clearer.
13984
13985 2001-03-26 Phil Edwards <pme@sources.redhat.com>
13986
13987 * error.c: Also undefine 'A' macro used for cp_printers definition.
13988
13989 2001-03-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
13990
13991 * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
13992
13993 2001-03-26 Mike Yang <yang@research.att.com>
13994 Mark Mitchell <mark@codesourcery.com>
13995
13996 * dump.c (dump_access): New function.
13997 (cp_dump_tree): Use it. Dump basetype information for class
13998 types.
13999
14000 2001-03-26 Mark Mitchell <mark@codesourcery.com>
14001
14002 * Makefile.in (optimize.o): Depend on params.h.
14003 (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
14004 (init_decl_processing): Set flag_no_inline when doing
14005 inlining-on-trees.
14006 * optimize.c: Include params.h.
14007 (struct inline_data): Improve documentation of FNS. Add
14008 FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
14009 (INSNS_PER_STMT): New macro.
14010 (remap_block): Use CLONING_P.
14011 (inlinable_function_p): Don't inline big functions.
14012 (expand_call_inline): Keep track of how much inlining we've done.
14013 (optimize_function): Set FIRST_INLINED_FN.
14014 (maybe_clone_body): Set CLONING_P.
14015 * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
14016 tree nodes.
14017 (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
14018 rest_of_compilation. Clear DECL_RTL for local variables
14019 afterwards.
14020 (clear_decl_rtl): New function.
14021
14022 2001-03-26 Nathan Sidwell <nathan@codesourcery.com>
14023
14024 Implement DR 209
14025 * cp-tree.h (skip_type_access_control,
14026 reset_type_access_control): Prototype.
14027 * decl.c (grokdeclarator): Access of friends is not checked.
14028 * parse.y (component_decl_list): Reset type access control.
14029 * semantics.c (decl_type_access_control): Clear
14030 current_type_lookups.
14031 (save_type_access_control): Don't save if not deferring.
14032 (skip_type_access_control, reset_type_access_control): New
14033 functions.
14034 (begin_class_definition): Do type access control for basetypes.
14035 Start deferred access control.
14036 (finish_class_definition): Resume immediate access control if
14037 this is a local class.
14038
14039 2001-03-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
14040
14041 * class.c (add_method): Use memcpy/memmove, not bcopy.
14042
14043 * decl.c (duplicate_decls): Likewise.
14044
14045 2001-03-23 Jakub Jelinek <jakub@redhat.com>
14046
14047 * mangle.c (write_discriminator): Use `_0' for discriminator 1,
14048 not `_'.
14049
14050 2001-03-23 Jakub Jelinek <jakub@redhat.com>
14051
14052 * decl.c (local_names): Define.
14053 (push_local_name): New.
14054 (grok_reference_init): Return init if initializing static reference
14055 variable with non-constant instead of emitting it.
14056 Move expand_static_init call to cp_finish_decl.
14057 (layout_var_decl): Call push_local_name.
14058 (maybe_commonize_var): Allow inlining functions even if they have
14059 static local variables, use comdat_linkage for them if flag_weak.
14060 (check_initializer): Call obscure_complex_init if
14061 grok_reference_init returned nonzero.
14062 (save_function_data): Clear x_local_names.
14063 (pop_cp_function_context): Free x_local_names.
14064 (mark_inlined_fns): Remove.
14065 (mark_lang_function): Mark x_local_names.
14066 (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
14067 Mark inlined_fns as tree, remove call to mark_inlined_fns.
14068 * class.c (alter_access): Ensure DECL_ACCESS is never set if
14069 DECL_DISCRIMINATOR_P.
14070 * cp-tree.h (cp_language_function): Add x_local_names.
14071 (lang_decl_flags): Add discriminator into u2.
14072 (lang_decl_inlined_fns): Remove.
14073 (lang_decl): inlined_fns is now a TREE_VEC.
14074 (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
14075 * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
14076 TREE_VEC, not a custom structure.
14077 (optimize_function): Likewise.
14078 * mangle.c (discriminator_for_local_entity): Discriminate among
14079 VAR_DECL local entities.
14080 * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
14081 is not valid.
14082
14083 2001-03-22 Bryce McKinlay <bryce@albatross.co.nz>
14084
14085 Add support for Java interface method calls.
14086 * cp-tree.h (struct lang_type): Add java_interface flag.
14087 (TYPE_JAVA_INTERFACE): New macro.
14088 * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
14089 by setting TYPE_JAVA_INTERFACE.
14090 * call.c (java_iface_lookup_fn): New static.
14091 (build_over_call): If calling a method declared in a
14092 TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
14093 expression which resolves the function address.
14094 (build_java_interface_fn_ref): New function.
14095
14096 2001-03-22 Richard Henderson <rth@redhat.com>
14097
14098 * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
14099 * except.c: Don't include it.
14100
14101 2001-03-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
14102 based on an idea from Joe Buck <jbuck@synopsys.com>
14103
14104 * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
14105 New nonterminals.
14106 (data_def, component_decl): Add reductions to bad_decl.
14107
14108 2001-03-22 Jakub Jelinek <jakub@redhat.com>
14109
14110 * method.c (do_build_assign_ref): Don't use build_modify_expr for
14111 anonymous aggregates, since they don't have assignment operator
14112 method.
14113 * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
14114 assignment operators for anonymous structure fields.
14115
14116 2001-03-21 Jason Merrill <jason@redhat.com>
14117
14118 * pt.c (instantiate_decl): Abort if we see a member constant
14119 instantiation that doesn't already have its initializer.
14120 Downgrade explicit instantiation without definition to pedwarn.
14121
14122 * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
14123 * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
14124 (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
14125
14126 * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
14127 (pending_vtables): Remove.
14128 * decl2.c (pending_vtables): Remove.
14129 (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
14130 CLASSTYPE_VTABLE_NEEDS_WRITING.
14131 (import_export_class): Likewise.
14132 (init_decl2): Don't mark pending_vtables.
14133 * lex.c (handle_pragma_vtable): Just sorry.
14134 * pt.c (instantiate_class_template): Don't mess with
14135 CLASSTYPE_VTABLE_NEEDS_WRITING.
14136 (mark_class_instantiated): Likewise.
14137 * ptree.c (print_lang_type): Don't print it.
14138 * semantics.c (begin_class_definition): Don't set it.
14139
14140 * pt.c (template_tail): Replace with last_pending_template.
14141 (maybe_templates, maybe_template_tail): Remove.
14142 (add_pending_template): Adjust.
14143 (instantiate_pending_templates): Adjust.
14144
14145 * cp-tree.h (struct saved_scope): Remove lang_stack field.
14146 (current_lang_stack): Remove.
14147 * decl.c (maybe_push_to_top_level): Don't initialize it.
14148 (duplicate_decls): Use current_lang_depth.
14149 (xref_basetypes): Likewise.
14150 * class.c (current_lang_depth): New fn.
14151 (push_lang_context): Use more varray functionality.
14152 (pop_lang_context): Likewise.
14153
14154 * error.c (GLOBAL_THING): Always use '__'.
14155
14156 2001-03-21 Mark Mitchell <mark@codesourcery.com>
14157
14158 * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
14159
14160 * mangle.c (mangle_decl_string): Mangle the names of overloaded
14161 operators, even when they have `extern "C"' linkage.
14162
14163 2001-03-19 Mark Mitchell <mark@codesourcery.com>
14164
14165 * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
14166 COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
14167 where it's not necessary.
14168 (add_method): Remove optimization involving comparison of
14169 DECL_ASSEMBLER_NAME.
14170 (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
14171 COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
14172 where it's not necessary.
14173 (check_methods): Likewise.
14174 (build_clone): Likewise.
14175 (built_vtt): Likewise.
14176 * cp-tree.h (DECL_NEEDED_P): Likewise.
14177 * decl.c (pushtag): Likewise.
14178 (duplicate_decls): Likewise.
14179 (pushdecl): Likewise.
14180 (builtin_function): Likewise.
14181 (build_library_fn_1): Set DECL_LANGUAGE for library functions.
14182 (build_cp_library_fn): Likewise.
14183 (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
14184 COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
14185 where it's not necessary.
14186 (make_rtl_for_nonlocal_decl): Likewise.
14187 (cp_finish_decl): Likewise.
14188 (grokfndecl): Likewise.
14189 (grokvardecl): Likewise.
14190 (grokdeclarator): Likewise.
14191 (start_function): Likewise.
14192 (cp_missing_return_ok_p): Likewise.
14193 * decl2.c (grokclassfn): Likewise.
14194 (check_classfn): Likewise.
14195 (finish_static_data_member_decl): Likewise.
14196 (grokfield): Likewise.
14197 * error.c (GLOBAL_IORD_P): Remove.
14198 (dump_global_iord): Improve output.
14199 (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
14200 * except.c (nothrow_libfn_p): Summarily reject any function not in
14201 namespace-scope.
14202 * init.c (build_java_class_ref): Don't explicitly set
14203 DECL_ASSEMBLER_NAME after calling mangle_decl.
14204 * mangle.c (mangle_decl_string): Handle extern "C" functions.
14205 (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
14206 * method.c (set_mangled_name_for_decl): Don't explicitly set
14207 DECL_ASSEMBLER_NAME after calling mangle_decl.
14208 (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
14209 IDENTIFIER_GLOBAL_VALUE for the thunk.
14210 * pt.c (set_mangled_name_for_template_decl): Remove.
14211 (check_explicit_specialization): Don't use it.
14212 (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
14213 (tsubst_friend_function): Likewise.
14214 (tsubst_decl): Likewise.
14215 (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
14216 * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
14217 COPY_DECL_ASSEMBLER_NAME, etc. Don't set DECL_ASSEMBLER_NAME
14218 where it's not necessary.
14219 (tinfo_base_init): Likewise.
14220 (create_real_tinfo_var): Likewise.
14221 * search.c (looup_field_1): Likewise.
14222 * semantics.c (finish_named_return_value): Likewise.
14223 * tree.c (init_tree): Set lang_set_decl_assembler_name.
14224
14225 2001-03-15 Gabriel Dos Reis <gdr@codesourcery.com>
14226
14227 Correct semantics restrictions checking in throw-expression.
14228 * except.c (is_admissible_throw_operand): New function.
14229 (build_throw): Use it.
14230
14231 2001-03-14 Mark Mitchell <mark@codesourcery.com>
14232
14233 * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
14234 and its ilk.
14235
14236 2001-03-14 Mark Mitchell <mark@codesourcery.com>
14237
14238 * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
14239 * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
14240 * decl.c (duplicate_decls): Likewise.
14241 (builtin_function): Likewise.
14242 (build_library_fn): Likewise.
14243 (build_cp_library_fn): Likewise.
14244 (check_initializer): Likewise.
14245 (cp_finish_decl): Likewise.
14246 * decl2.c (grokfield): Likewise.
14247 (grok_function_init): Remove #if 0'd code.
14248 (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
14249 * friend.c (do_friend): Likewise.
14250 * init.c (get_temp_regvar): Likewise.
14251 * method.c (make_thunk): Likewise.
14252 * pt.c (tsubst_friend_function): Likewise.
14253 (tsubst_decl): Likewise.
14254 (regenerate_decl_from_template): Likewise.
14255 * semantics.c (genrtl_named_return_value): Likewise.
14256 (expand_body): Likewise.
14257 (genrtl_finish_function): Likewise.
14258 * tree.c (cp_tree_equal): Likewise.
14259
14260 2001-03-12 Nathan Sidwell <nathan@codesourcery.com>
14261
14262 * call.c (convert_like_real): Add extra semantics to INNER
14263 parameter. Don't convert to temporary if a user conversion
14264 gives us an lvalue that we're about to bind to a reference.
14265 Set INNER to indicate pending reference binding on recursive
14266 calls.
14267
14268 2001-03-10 Neil Booth <neil@daikokuya.demon.co.uk>
14269
14270 * cp/lex.c: Delete duplicate pending_lang_change.
14271
14272 2001-03-10 Neil Booth <neil@daikokuya.demon.co.uk>
14273
14274 * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
14275 Similarly.
14276 * cp/repo.c (get_base_filename, open_repo_file): Similarly.
14277 * cp/cp-tree.h: Remove file_name_nondirectory prototype.
14278
14279 2001-03-09 Zack Weinberg <zackw@stanford.edu>
14280
14281 * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
14282
14283 2001-03-08 Stan Shebs <shebs@apple.com>
14284
14285 * cp-tree.h (set_identifier_local_value): Remove unused decl.
14286
14287 2001-03-06 Zack Weinberg <zackw@stanford.edu>
14288
14289 * spew.c: Remove references to CPP_OSTRING.
14290
14291 2001-03-06 Andrew Haley <aph@redhat.com>
14292
14293 * typeck.c (convert_arguments): Check that we have an fndecl.
14294
14295 2001-03-05 Andrew Haley <aph@redhat.com>
14296
14297 * typeck.c (convert_arguments): Don't do ellipsis conversion for
14298 __built_in_constant_p.
14299
14300 2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
14301
14302 * typeck.c (build_static_cast): Allow enum to enum conversions
14303 as per DR 128.
14304
14305 2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
14306
14307 * class.c (check_field_decls): Pointers to member do not a
14308 non-pod struct make, as per DR 148.
14309
14310 2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
14311
14312 * call.c (joust): cp_pedwarn when using gnu extension concerning
14313 worst conversion sequences.
14314
14315 2001-03-01 Zack Weinberg <zackw@stanford.edu>
14316
14317 * decl.c: Replace all uses of 'boolean' with 'bool'.
14318
14319 2001-03-01 Zack Weinberg <zackw@stanford.edu>
14320
14321 * lang-specs.h: Add zero initializer for cpp_spec field to
14322 all array elements that need one. Don't put an #ifdef inside
14323 the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
14324 use it.
14325
14326 2001-03-01 Nathan Sidwell <nathan@codesourcery.com>
14327
14328 Implement using decls inside template functions.
14329 * decl2.c (validate_nonmember_using_decl): Don't special case
14330 fake_std_node in the global namespace. Don't reject early when
14331 processing a template.
14332 (do_local_using_decl): Add to statement tree. Don't do further
14333 processing when building a template.
14334 * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
14335
14336 2001-03-01 Nathan Sidwell <nathan@codesourcery.com>
14337
14338 * decl2.c (do_nonmember_using_decl): Don't complain if we find
14339 same function. Do complain about ambiguating extern "C"
14340 declarations.
14341
14342 2001-02-28 Nathan Sidwell <nathan@codesourcery.com>
14343
14344 Remove floating point and complex type template constant parms.
14345 * pt.c (convert_nontype_argument): Remove REAL_TYPE and
14346 COMPLEX_TYPE extensions.
14347 (invalid_nontype_parm_type_p): Likewise.
14348
14349 2001-02-27 Jeffrey Oldham <oldham@codesourcery.com>
14350
14351 * except.c (call_eh_info): Revert "match_function"'s type.
14352
14353 2001-02-27 Nathan Sidwell <nathan@codesourcery.com>
14354
14355 Fix ctor vtable vcall offsets.
14356 * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
14357 (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
14358 (get_matching_base): Remove.
14359 (get_original_base): New function.
14360 (build_vtbl_initializer): Initialize vid.rtti_binfo.
14361 Use a virtual thunk for a ctor vtable with an index
14362 (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
14363 primary base within a constructor vtable. Only set
14364 BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
14365 when primary base has been lost.
14366 * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
14367
14368 2001-02-26 Jeffrey Oldham <oldham@codesourcery.com>
14369
14370 * call.c (joust): Ensure more_specialized()'s argument length
14371 parameter has correct value for constructors.
14372
14373 2001-02-26 Nathan Sidwell <nathan@codesourcery.com>
14374
14375 * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
14376
14377 * decl.c (mark_inlined_fns): Prototype.
14378
14379 2001-02-22 Mark Mitchell <mark@codesourcery.com>
14380
14381 * spew.c (yylex): Correct handling of friends.
14382
14383 2001-02-22 Mark Mitchell <mark@codesourcery.com>
14384
14385 * mangle.c (write_encoding): Pass write_function_type the
14386 FUNCTION_DECL for the function being encoded.
14387 (write_function_type): Pass it along to write_bare_function_type.
14388 (write_bare_function_type): Pass it along to write_method_parms.
14389 (write_method_parms): Don't mangle the compiler-generated
14390 parameters to a constructor or destructor.
14391
14392 2001-02-22 Andreas Jaeger <aj@suse.de>
14393
14394 * optimize.c: Include toplev.h for
14395 note_deferral_of_defined_inline_function prototype.
14396
14397 2001-02-22 Jakub Jelinek <jakub@redhat.com>
14398
14399 * cp-tree.h (struct lang_decl_inlined_fns): New.
14400 (struct lang_decls): Add inlined_fns.
14401 (DECL_INLINED_FNS): New macro.
14402 * optimize.c (struct inline_data): Add inlined_fns.
14403 (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
14404 (inlinable_function_p): Likewise, fix typo in comment,
14405 function is not inlinable if it already inlined function currently
14406 being optimized.
14407 (expand_call_inline): Add fn to inlined_fns if necessary.
14408 (optimize_function): Initialize inlined_fns.
14409 Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
14410 * decl.c (mark_inlined_fns): New function.
14411 (lang_mark_tree): Call it.
14412
14413 2001-02-21 Jason Merrill <jason@redhat.com>
14414
14415 * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
14416 (DECL_UNINLINABLE): Move to middle-end.
14417
14418 * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
14419 * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
14420 * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
14421 * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
14422 parms and outer BLOCK. note_deferral_of_defined_inline_function.
14423
14424 * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
14425 second parm of op=.
14426
14427 2001-02-19 Mark Mitchell <mark@codesourcery.com>
14428
14429 * decl2.c (set_decl_namespace): Allow explicit instantiations in
14430 any namespace.
14431
14432 2001-02-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
14433
14434 * optimize.c (expand_call_inline): Don't walk subtrees of type
14435 nodes.
14436
14437 2001-02-18 Mark Mitchell <mark@codesourcery.com>
14438
14439 * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
14440 for a destructor.
14441
14442 2001-02-18 Jason Merrill <jason@redhat.com>
14443
14444 Do put the VTT parameter in DECL_ARGUMENTS.
14445 * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
14446 (current_vtt_parm): New macro.
14447 (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
14448 (DECL_HAS_VTT_PARM_P): New macro.
14449 (DECL_VTT_PARM): Remove.
14450 (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
14451 * decl.c (duplicate_decls): Only copy the operator code if
14452 appropriate.
14453 (start_function): Set current_vtt_parm.
14454 (lang_mark_tree): Don't mark vtt_parm.
14455 * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
14456 DECL_ARGUMENTS. Set DECL_HAS_VTT_PARM_P.
14457 * class.c (build_clone): Maybe remove the VTT parm.
14458 * optimize.c (maybe_clone_body): Set up the VTT parm.
14459 * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
14460 * call.c (build_over_call): Just allow the VTT arg.
14461 * method.c (make_thunk): Don't set DECL_VTT_PARM.
14462 (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
14463 (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
14464 * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
14465 * error.c (dump_function_decl): Likewise.
14466 * call.c (build_user_type_conversion_1, convert_like_real): Abort
14467 if we try to call a constructor with in-charge or VTT parms.
14468 * method.c (skip_artificial_parms_for): New fn.
14469 * call.c (add_function_candidate, build_over_call): Call it.
14470 * call.c (build_new_method_call): Use current_vtt_parm.
14471 * init.c (expand_virtual_init): Likewise.
14472 * class.c (same_signature_p): No longer static.
14473 * cp-tree.h: Declare it.
14474 * search.c (look_for_overrides_r): Use it.
14475
14476 2001-02-17 Mark Mitchell <mark@codesourcery.com>
14477
14478 * cp-tree.h (new_abi_rtti_p): Remove.
14479 (name_mangling_version): Likewise.
14480 (flag_do_squangling): Likewise.
14481 * class.c (build_rtti_vtbl_entries): Remove old ABI support.
14482 * decl.c (grokfndecl): Likewise.
14483 * decl2.c (name_mangling_version): Remove.
14484 (flag_do_squangling): Likewise.
14485 (lang_f_options): Remove `squangle'.
14486 (unsupported_options): Add `squangle'.
14487 (cxx_decode_option): Issue a warning about uses of
14488 -fname-mangling-version.
14489 (finish_file): Remove old ABI support.
14490 * pt.c (check_explicit_specialization): Likewise.
14491 (tsubst_decl): Likewise.
14492 * rtti.c (init_rtti_processing): Likewise.
14493 (build_headof): Likewise.
14494 (get_tinfo_decl_dynamic): Likewise.
14495 (tinfo_from_decl): Likewise.
14496 (build_dynamic_cast_1): Likewise.
14497 (synthesize_tinfo_var): Likewise.
14498 * init.c (build_new): Allow enumeration types for the array-bounds
14499 in a direct-new-declarator.
14500
14501 * semantics.c (finish_typeof): Resolve OFFSET_REFs.
14502
14503 * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
14504 TREE_PROTECTED from the template being specialized.
14505
14506 2001-02-17 Jason Merrill <jason@redhat.com>
14507
14508 * decl2.c (build_artificial_parm): Set TREE_READONLY.
14509
14510 * decl.c (bad_specifiers): Allow throw specs on things with
14511 pointer-to-function or -member-function type.
14512 * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
14513 a pmf.
14514
14515 2001-02-17 Mark Mitchell <mark@codesourcery.com>
14516
14517 * call.c (check_dtor_name): Handle template names correctly.
14518
14519 2001-02-16 Jason Merrill <jason@redhat.com>
14520
14521 * cp-tree.h (DECL_USE_VTT_PARM): Remove.
14522 * decl2.c (maybe_retrofit_in_chrg): Don't create it.
14523 * optimize.c (maybe_clone_body): Don't substitute it.
14524 * call.c (build_new_method_call): Check in_chrg instead.
14525 * init.c (expand_virtual_init): Likewise.
14526
14527 2001-02-16 Gabriel Dos Reis <gdr@codesourcery.com>
14528
14529 * decl.c (check_tag_decl): Make sure a typedef for an anonymous
14530 class-type introduces at least a type-name.
14531
14532 2001-02-16 Jakub Jelinek <jakub@redhat.com>
14533
14534 * call.c (convert_like_real): Create a temporary for non-lvalue.
14535
14536 2001-02-16 Jeffrey Oldham <oldham@codesourcery.com>
14537
14538 * cp-tree.h: Fix typos in comments.
14539
14540 2001-02-16 Jason Merrill <jason@redhat.com>
14541
14542 * optimize.c (remap_block): If we're compiling a clone, pass the
14543 new block to insert_block.
14544
14545 2001-02-16 Mark Mitchell <mark@codesourcery.com>
14546
14547 * semantics.c (finish_asm_stmt): Robustify.
14548
14549 2001-02-15 Mark Mitchell <mark@codesourcery.com>
14550
14551 * pt.c (push_template_decl_real): Don't remangle the name of a
14552 class template.
14553
14554 2001-02-15 Jim Meyering <meyering@lucent.com>
14555
14556 * Make-lang.in (c++.install-common): Depend on installdirs.
14557 (c++.install-info): Likewise.
14558 (c++.install-man): Likewise.
14559
14560 2001-02-15 Mark Mitchell <mark@codesourcery.com>
14561
14562 * typeck2.c (build_m_component_ref): Robustify.
14563
14564 2001-02-15 Alexandre Oliva <aoliva@redhat.com>
14565
14566 * friend.c (do_friend): Don't take the nested [template] class
14567 into account when deciding whether to warn about the friend
14568 function not referring to a template function.
14569
14570 2001-02-14 Jakub Jelinek <jakub@redhat.com>
14571
14572 * typeck.c (build_unary_op): Clarify error message.
14573
14574 2001-02-08 Aldy Hernandez <aldyh@redhat.com>
14575
14576 * parse.y (component_constructor_declarator): allow optional
14577 parentheses around constructor class name.
14578
14579 2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
14580
14581 * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
14582 section.
14583 * init.c (emit_base_init): Remove incorrect comment about
14584 virtual bases.
14585 * method.c (make_thunk): Fix comment alignment.
14586
14587 2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
14588
14589 Kill remnants of this is variable.
14590 * cp-tree.h (flag_this_is_variable): Remove.
14591 * decl2.c (flag_this_is_variable): Remove.
14592 * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
14593 (build_vbase_path): The path is non-static, even in a cdtor.
14594 (resolves_to_fixed_type_p): Add additional return value.
14595 * search.c (init_vbase_pointers): Adjust.
14596 * tree.c (lvalue_p_1): Adjust.
14597 * typeck.c (mark_addressable): Adjust.
14598
14599 2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
14600
14601 * pt.c (unify): Don't check cv quals of array types.
14602
14603 2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
14604
14605 * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
14606 check whether we already have the type.
14607
14608 2001-02-13 Mark Mitchell <mark@codesourcery.com>
14609
14610 * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
14611 * call.c (build_op_delete_call): Simplify to remove duplicate
14612 code.
14613 * class.c (clone_function_decl): Don't build the deleting variant
14614 of a non-virtual destructor.
14615 * decl.c (finish_destructor_body): Don't call delete if this is a
14616 non-virtual destructor.
14617 * init.c (build_delete): Explicitly call `operator delete' when
14618 deleting an object with a non-virtual destructor.
14619
14620 2001-02-13 Jason Merrill <jason@redhat.com>
14621
14622 * lang-specs.h: Add more __EXCEPTIONS.
14623
14624 2001-02-12 Nathan Sidwell <nathan@codesourcery.com>
14625
14626 * typeck2.c (process_init_constructor): Check
14627 TREE_HAS_CONSTRUCTOR before issuing missing init warning.
14628
14629 2001-02-12 Nathan Sidwell <nathan@codesourcery.com>
14630
14631 * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
14632 Remove spurious information in comment. Allow further
14633 adjustments of REFERENCE_TYPE args.
14634
14635 2001-02-12 Nathan Sidwell <nathan@codesourcery.com>
14636
14637 * errfn.c (cp_deprecated): Tweak diagnostic text.
14638 * parse.y (new_initializer): Deprecate initializer lists
14639 extension.
14640
14641 2001-02-12 Mark Mitchell <mark@codesourcery.com>
14642
14643 Remove old ABI support.
14644
14645 2001-02-11 Mark Mitchell <mark@codesourcery.com>
14646
14647 * decl2.c (flag_vtable_thunks): Always set it to 1.
14648 (flag_new_abi): Likewise.
14649 * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
14650
14651 * Makefile.in (g++spec.o): Fix typo.
14652
14653 2001-02-09 Jason Merrill <jason@redhat.com>
14654
14655 * lang-specs.h: Restore definition of __EXCEPTIONS.
14656
14657 2001-02-08 Jason Merrill <jason@redhat.com>
14658
14659 * search.c (shared_member_p): New function.
14660 (lookup_field_r): Use it.
14661 * cp-tree.h (SHARED_MEMBER_P): Remove.
14662
14663 * method.c (process_overload_item): Handle template-dependent array
14664 bounds.
14665 * pt.c (type_unification_real): If we end up with undeduced nontype
14666 parms, try again.
14667
14668 * decl.c (lookup_name_real): Tweak warning to refer to decls, not
14669 types.
14670
14671 * typeck2.c (friendly_abort): Don't say anything if we have
14672 earlier errors or sorries.
14673
14674 * decl.c (check_tag_decl): Notice attempts to redefine bool and
14675 wchar_t. Ignore if in_system_header.
14676
14677 * decl.c (maybe_push_cleanup_level): New fn...
14678 (start_decl_1): ...split out from here.
14679 * cvt.c (build_up_reference): Use it.
14680 * cp-tree.h: Declare it.
14681
14682 2001-02-07 Mark Mitchell <mark@codesourcery.com>
14683
14684 * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
14685 spec.
14686
14687 2001-02-06 Nathan Sidwell <nathan@codesourcery.com>
14688
14689 * pt.c (lookup_template_class): Make sure it's a primary
14690 template or template_template_parm when called from the parser.
14691 (instantiate_template_class): Add assertion.
14692
14693 2001-02-05 Alexandre Oliva <aoliva@redhat.com>
14694
14695 * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
14696 from error_mark_node.
14697
14698 2001-02-05 Nathan Sidwell <nathan@codesourcery.com>
14699
14700 Fix specification and implementation bugs in V3 ABI
14701 construction vtables.
14702 * cp-tree.h (flag_dump_class_layout): New flag.
14703 (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
14704 (BINFO_LOST_PRIMARY_P): New flag.
14705 (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
14706 (BINFO_PRIMARY_MARKED_P): Rename to ...
14707 (BINFO_PRIMARY_P): ... here.
14708 (binfo_via_virtual): New prototype.
14709 * decl2.c (flag_dump_class_layout): New flag.
14710 (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
14711 use `=' as a file name separator.
14712 * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
14713 bases.
14714 (build_vtbl_address): If this is a virtual primary base, then
14715 get the vtbl of what it is ultimately primary for.
14716 * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
14717 for BINFO_PRIMARY_P.
14718 (dfs_skip_nonprimary_vbases_markedp): Likewise.
14719 (get_shared_vbase_if_not_primary): Likewise.
14720 (dfs_get_pure_virtuals): Likewise.
14721 (expand_upcast_fixups): Likewise.
14722 (fixup_virtual_upcast_offsets): Likewise.
14723 (dfs_find_vbase_instance): Likewise.
14724 (find_vbase_instance): Likewise.
14725 (binfo_from_vbase): Adjust comment to reflect reality.
14726 (binfo_via_virtual): New function.
14727 * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
14728 for binfo walking during VTT construction.
14729 (dfs_mark_primary_bases): Remove.
14730 (force_canonical_binfo_r): New function.
14731 (force_canonical_binfo): New function.
14732 (mark_primary_virtual_base): New function.
14733 (mark_primary_bases): Walk in inheritance graph order, use
14734 mark_primary_virtual_base.
14735 (determine_primary_base): Use some more intermediate variables.
14736 (dfs_find_final_overrider): Don't check for overriding along a
14737 virtual path.
14738 (dfs_modify_vtables): Walk into primary virtual bases too.
14739 (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
14740 (build_base_fields): Likewise.
14741 (dfs_set_offset_for_unshared_vbases): Likewise.
14742 (layout_virtual_bases): Likewise.
14743 (end_of_class): Likewise.
14744 (finish_struct_1): Call dump_class_hierarchy, if requested.
14745 (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
14746 (dump_class_hierarchy_r): Add stream parameter. Emit more information.
14747 (dump_class_hierarchy): Add file parameter. Append to file, if
14748 required.
14749 (finish_vtbls): Adjust accumulate_vtbl_inits call.
14750 Use canonical base for virtual bases.
14751 (build_vtt): Add more comments. Adjust build_vtt_inits call.
14752 (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
14753 Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
14754 VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
14755 virtual VTTs.
14756 (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
14757 from DATA. We want virtual primary bases and all bases via virtual.
14758 Only set BINFO_VPTR_INDEX for top level. Look up from a primary
14759 virtual base when not a construction vtable.
14760 (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
14761 (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
14762 Use canonical bases when processing virtual bases.
14763 (accumulate_vtbl_inits): We're interested in any base via a
14764 virtual path.
14765 (dfs_accumulate_vtbl_inits): If this is a primary virtual base
14766 within a construction vtable, determine what is being overridden.
14767 (build_vtbl_initializer): Add more comments
14768 (add_vcall_offset_vtbl_entries_1): Adjust comment.
14769 (build_rtti_vtbl_entries): Check if the base has lost its
14770 primary.
14771
14772 2001-02-05 Mark Mitchell <mark@codesourcery.com>
14773
14774 * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
14775
14776 2001-02-04 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
14777
14778 * decl.c (pushdecl): Call abort instead of fatal.
14779 * except.c (decl_is_java_type): Call fatal_error instead of fatal.
14780 * init.c (build_new_1): Likewise.
14781 (build_java_class_ref): Call internal_error and fatal_error, not fatal.
14782 * decl.c (build_typename_type): hash_table_init now returns void.
14783 decl.c (init_decl_processing): Make an error non-fatal.
14784
14785 2001-02-04 Mark Mitchell <mark@codesourcery.com>
14786
14787 * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
14788 Document.
14789 (CLASSTYPE_INTERFACE_KNOWN): Likewise.
14790 (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
14791 (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
14792 (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
14793 * decl.c (maybe_commonize_var): Use the new name-mangling where
14794 appropriate.
14795 * decl2.c (comdat_linkage): Enhance comments. Make all
14796 compiler-generated things static, if COMDAT is not available.
14797 (get_tinfo_decl): Do not make typeinfo objects that belong in the
14798 library COMDAT.
14799 (tinfo_base_init): Use the correct mangled name for typeinfo
14800 strings, and push them into the global scope.
14801 (typeinfo_in_lib_p): New function.
14802 (synthesize_tinfo_var): Use it.
14803 (create_real_tinfo_var): Likewise.
14804
14805 2001-02-03 Jakub Jelinek <jakub@redhat.com>
14806
14807 * decl.c (push_class_binding): Use context_for_name_lookup instead
14808 of CP_DECL_CONTEXT.
14809 * search.c (context_for_name_lookup): Remove static. Check for NULL
14810 context in the loop.
14811 * cp-tree.h (context_for_name_lookup): Add prototype.
14812
14813 2001-02-02 Jakub Jelinek <jakub@redhat.com>
14814
14815 * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
14816 * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
14817 Remove.
14818 * call.c (convert_class_to_reference, build_user_type_conversion_1,
14819 add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
14820
14821 2001-02-02 Mark Mitchell <mark@codesourcery.com>
14822
14823 * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
14824 of macros used when compiling g++spec.c.
14825 * g++spec.c (lang_specific_driver): Link with the shared
14826 libgcc by default.
14827
14828 2001-01-29 Joseph S. Myers <jsm28@cam.ac.uk>
14829
14830 * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
14831 make_reference_declarator, make_call_declarator), method.c
14832 (implicitly_declare_fn), parse.y (namespace_using_decl,
14833 notype_unqualified_id, expr_or_declarator, new_type_id,
14834 after_type_declarator, direct_after_type_declarator,
14835 notype_declarator, complex_notype_declarator,
14836 complex_direct_notype_declarator, qualified_id,
14837 notype_qualified_id, overqualified_id, direct_new_declarator,
14838 absdcl, direct_abstract_declarator, conversion_declarator), pt.c
14839 (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
14840 instead of build_parse_node.
14841
14842 2001-01-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
14843
14844 * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
14845 (minus_one_node): Moved to top level gcc directory. Renamed
14846 to integer_minus_one_node.
14847
14848 * init.c (init_init_processing): Don't set minus_one_node.
14849 (build_vec_init): Use integer_minus_one_node.
14850
14851 * rtti.c (get_tinfo_decl_dynamic): Likewise.
14852
14853 2001-01-28 Jakub Jelinek <jakub@redhat.com>
14854
14855 * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
14856 identical and they would be replaced with constant, remove
14857 MODIFY_EXPR from the tree.
14858
14859 2001-01-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
14860
14861 * Make-lang.in: Remove all dependencies on defaults.h.
14862 * call.c: Don't include defaults.h.
14863 * decl.c: Likewise.
14864 * decl2.c: Likewise.
14865 * except.c: Likewise.
14866 * pt.c: Likewise.
14867 * rtti.c: Likewise.
14868 * tree.c: Likewise.
14869 * typeck.c: Likewise.
14870
14871 2001-01-25 Jakub Jelinek <jakub@redhat.com>
14872
14873 * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
14874 operators even in "C" linkage.
14875 * method.c (set_mangled_name_for_decl): Likewise.
14876 * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
14877 overloaded operators in "C" linkage.
14878
14879 2001-01-24 Nathan Sidwell <nathan@codesourcery.com>
14880
14881 * pt.c (tsubst_decl): Remove IN_DECL parameter.
14882 (tsubst_arg_types): Check parameter is not void.
14883 (tsubst): Adjust tsubst_decl call.
14884
14885 2001-01-24 Nathan Sidwell <nathan@codesourcery.com>
14886
14887 * call.c (add_builtin_candidate): Quote std properly, from
14888 previous change.
14889
14890 2001-01-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
14891
14892 * pt.c (check_explicit_specialization): Clone constructors and
14893 destructors.
14894
14895 2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
14896
14897 * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
14898 indicates anything special about template depth. Make sure we
14899 only count the user visible template classes.
14900
14901 2001-01-23 Nathan Sidwell <nathan@codesourcery.com>
14902
14903 * call.c (build_conv): Typo in comment.
14904 (add_builtin_candidate): Add more explanation.
14905 Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
14906 Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
14907 when we have enumeral types.
14908 (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
14909 candidates for relops and eqops.
14910 (joust): Simplify control flow. Allow a non-template user
14911 function to hide a builtin.
14912
14913 2001-01-22 Nathan Sidwell <nathan@codesourcery.com>
14914
14915 * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
14916 (more_specialized): Add deduction parameter.
14917 * call.c (joust): Adjust more_specialized call.
14918 * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
14919 UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
14920 (get_bindings_order): Remove.
14921 (get_bindings_real): Add DEDUCE parameter.
14922 (maybe_adjust_types_for_deduction): Return extra unify flags. Do
14923 REFERENCE_TYPE jig for DEDUCE_ORDER.
14924 (type_unification_real): Deal with DEDUCE_ORDER. Use result of
14925 maybe_adjust_types_for_deduction.
14926 (more_specialized): Add DEDUCE parameter. Call get_bindings_real
14927 directly.
14928 (try_one_overload): Use result of maybe_adjust_types_for_deduction.
14929 (check_cv_quals_for_unify): Use new unify qualifier flags.
14930 (unify): Clear new unify qualifier flags.
14931 (get_bindings_real): Add DEDUCE parameter.
14932 (get_bindings): Adjust call to get_bindings_real.
14933 (get_bindings_overload): Likewise.
14934 (most_specialized_instantiation): Adjust call to
14935 more_specialized.
14936
14937 2001-01-19 Jason Merrill <jason@redhat.com>
14938
14939 * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
14940
14941 * decl.c (init_decl_processing): Just force -fvtable-thunks on if
14942 -fnew-abi.
14943
14944 2001-01-19 Ute Pelkmann <scope.muc@t-online.de>
14945
14946 * decl2.c (arg_assoc_class): Fix double iteration logic.
14947
14948 2001-01-19 Jason Merrill <jason@redhat.com>
14949
14950 * init.c (build_delete): Always call convert_force to strip cv-quals.
14951
14952 * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
14953 * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
14954 * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
14955
14956 2001-01-19 Nathan Sidwell <nathan@codesourcery.com>
14957
14958 * search.c (get_vbase_1): Count only virtual bases.
14959
14960 2001-01-19 Nathan Sidwell <nathan@codesourcery.com>
14961
14962 * class.c (duplicate_tag_error): Robustify flag clearing.
14963
14964 2001-01-19 Nathan Sidwell <nathan@codesourcery.com>
14965
14966 * cp-tree.h (lookup_template_class): Add complain parm.
14967 * decl.c (lookup_namespace_name): Adjust call to
14968 lookup_template_class.
14969 (make_typename_type): Likewise.
14970 * semantics.c (finish_template_type): Likewise.
14971 * pt.c (lookup_template_class): Add complain parm. Adjust.
14972 (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
14973 (tsubst): Likewise.
14974
14975 2001-01-19 Nathan Sidwell <nathan@codesourcery.com>
14976
14977 * pt.c (copy_default_args_to_explicit_spec): Preserve
14978 object's CV quals. Reorganize.
14979
14980 2001-01-18 Nathan Sidwell <nathan@codesourcery.com>
14981
14982 * typeck.c (build_modify_expr): Say `initialization' for
14983 INIT_EXPRs.
14984 * init.c (build_default_init): Convert to enumeral type, if
14985 needed.
14986
14987 2001-01-18 Jakub Jelinek <jakub@redhat.com>
14988
14989 * parse.y (nomods_initdcl0): Properly set things up for
14990 initdcl0_innards.
14991
14992 2001-01-18 Nathan Sidwell <nathan@codesourcery.com>
14993
14994 * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
14995 (type_unification_real): Set it.
14996 (unify): Use it.
14997
14998 2001-01-18 Nathan Sidwell <nathan@codesourcery.com>
14999
15000 * decl.c (finish_destructor_body): Convert to vbase pointer here.
15001
15002 2001-01-18 Nathan Sidwell <nathan@codesourcery.com>
15003
15004 * semantics.c (begin_class_definition): Check we're not inside a
15005 template parm list.
15006
15007 2001-01-18 Nathan Sidwell <nathan@codesourcery.com>
15008
15009 * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
15010 BASELINK_P.
15011
15012 2001-01-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
15013
15014 * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
15015 * call.c (build_over_call): Add comment.
15016
15017 2001-01-16 Daniel Berlin <dberlin@redhat.com>
15018
15019 * cvt.c (ocp_convert): Handle vector type conversion
15020 * typeck2.c (digest_init): Handle vector type initializations
15021
15022 2001-01-16 Phil Edwards <pme@sources.redhat.com>
15023
15024 * g++spec.c: Don't add libraries needlessly if -fsyntax-only
15025 was given.
15026
15027 2001-01-15 Nathan Sidwell <nathan@codesourcery.com>
15028
15029 * pt.c (check_nontype_parm): Rename to ...
15030 (invalid_nontype_parm_type_p): ... here.
15031 (process_template_parm): Adjust.
15032 (convert_template_argument): Adjust.
15033
15034 2001-01-15 Nathan Sidwell <nathan@codesourcery.com>
15035
15036 * pt.c (check_nontype_parm): New function.
15037 (process_template_parm): Use it.
15038 (convert_template_argument): Use it.
15039 (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
15040 member.
15041
15042 2001-01-14 Jeffrey Oldham <oldham@codesourcery.com>
15043
15044 * tree.c: Add defaults.h
15045 (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
15046 * Make-lang.in (cp/tree.o): Add defaults.h.
15047
15048 2001-01-13 Joseph S. Myers <jsm28@cam.ac.uk>
15049
15050 * Make-lang.in (CXX_C_OBJS): Add c-format.o.
15051
15052 2001-01-13 Joseph S. Myers <jsm28@cam.ac.uk>
15053
15054 * g++.1: Change to be ".so man1/gcc.1".
15055
15056 2001-01-13 Joseph S. Myers <jsm28@cam.ac.uk>
15057
15058 * Make-lang.in (c++.info, c++.install-info): Build and install g++
15059 internals info.
15060 (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
15061 ($(srcdir)/cp/g++int.info): New target.
15062 * gxxint.texi: Add info directory entry. Use @@ in email address.
15063 * .cvsignore: Update.
15064
15065 2001-01-12 Nathan Sidwell <nathan@codesourcery.com>
15066
15067 * typeck.c (build_c_cast): Do template processing earlier.
15068 Always pedwarn on array casts.
15069
15070 2001-01-12 Nathan Sidwell <nathan@codesourcery.com>
15071
15072 * friend.c (make_friend_class): Make sure a templated class is
15073 actually a template.
15074
15075 2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
15076
15077 * decl2.c (get_guard): Set linkage from guarded decl.
15078
15079 2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
15080
15081 * call.c (convert_default_arg): Check for unprocessed
15082 DEFAULT_ARG.
15083 * cp-tree.h (replace_defarg): Move to spew.c.
15084 (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
15085 spew.c, which is where they really are.
15086 (done_pending_defargs): Declare.
15087 (unprocessed_defarg_fn): Declare.
15088 * decl.c (replace_defarg): Move to spew.c
15089 * parse.y (structsp): Call done_pending_defargs.
15090 * spew.c (defarg_fns): Rearrange list structure.
15091 (defarg_fnsdone): New static variable.
15092 (defarg_depfns): New static variable.
15093 (init_spew): Adjust.
15094 (add_defarg_fn): Store the type in TREE_TYPE.
15095 (do_pending_defargs): Detect and deal with ordering constraints
15096 and circularity.
15097 (done_pending_defargs): New function.
15098 (unprocessed_defarg_fn): New function.
15099 (replace_defarg): Moved from decl.c. Robustify. Don't save
15100 if circularity detected.
15101
15102 2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
15103
15104 * pt.c (unify): Check array has a domain, before checking
15105 whether it is variable sized.
15106
15107 2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
15108
15109 * decl.c (grokparms): Unobfuscate and get correct diagnostic for
15110 parameters with pointers to arrays of unknown bound.
15111
15112 2001-01-11 Nathan Sidwell <nathan@codesourcery.com>
15113
15114 * parse.y (template_parm_header, template_spec_header): New
15115 reductions. Split out from ...
15116 (template_header): ... here. Use them.
15117 (template_template_parm): Use template_parm_header.
15118 * semantics.c (finish_template_template_parm): Add assert.
15119
15120 2001-01-10 Mark Mitchell <mark@codesourcery.com>
15121
15122 * mangle.c (write_builtin_type): Fix thinko.
15123
15124 * pt.c (copy_default_args_to_explicit_spec_1): New function.
15125 (copy_default_args_to_explicit_spec): Likewise.
15126 (check_explicit_specialization): Use it.
15127
15128 * class.c (finish_struct_1): Remove last argument in call to
15129 make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
15130 * decl.c (builtin_function): Likewise.
15131 (build_cp_library_fn): Likewise.
15132 (check_initializer): Likewise.
15133 (make_rtl_for_nonlocal_decl): Likewise.
15134 (cp_finish_decl): Likewise.
15135 (start_function): Likewise.
15136 * decl2.c (finish_anon_union): Likewise.
15137 * friend.c (do_friend): Likewise.
15138 * init.c (build_java_class_ref): Likewise.
15139 * method.c (make_thunk): Likewise.
15140 * pt.c (tsubst_friend_function): Likewise.
15141 * semantics.c (expand_body): Likewise.
15142
15143 2001-01-10 Mark Mitchell <mark@codesourcery.com>
15144
15145 * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
15146 looking at DECL_CLONED_FUNCTION for non-functions.
15147
15148 2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
15149
15150 * error.c (dump_template_parameter): Use parm to determine how
15151 to print default value.
15152
15153 2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
15154
15155 * class.c (duplicate_tag_error): Clear more flags.
15156
15157 2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
15158
15159 * call.c (build_new_method_call): Use binfo_for_vbase.
15160
15161 2001-01-10 Joseph S. Myers <jsm28@cam.ac.uk>
15162
15163 * cp-tree.h (flag_cond_mismatch): Don't declare.
15164 * decl2.c (flag_cond_mismatch): Don't define.
15165 (lang_f_options): Remove cond-mismatch.
15166 (unsupported_options): Add cond-mismatch.
15167
15168 2001-01-09 Nathan Sidwell <nathan@codesourcery.com>
15169
15170 * class.c (handle_using_decl): Reject using of constructor name
15171 of sourcing class. Allow injecting of a method with same name as
15172 nested class. Fixup error messages.
15173
15174 2001-01-09 Joseph S. Myers <jsm28@cam.ac.uk>
15175
15176 * decl2.c (lang_decode_option): Handle -Wformat=2.
15177
15178 2001-01-08 Nathan Sidwell <nathan@codesourcery.com>
15179
15180 * cp-tree.h (lang_decl_flags): Rename defined_in_class to
15181 initialized_in_class.
15182 (DECL_DEFINED_IN_CLASS_P): Rename to ...
15183 (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
15184 * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
15185 (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
15186 * pt.c (check_default_tmpl_args): Adjust for
15187 DECL_INITIALIZED_IN_CLASS_P.
15188 (instantiate_class_template): Likewise.
15189 (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
15190
15191 * class.c (finish_struct): Constify saved_filename.
15192
15193 2001-01-08 Nathan Sidwell <nathan@codesourcery.com>
15194
15195 * class.c (duplicate_tag_error): Adjust diagnostic.
15196 (finish_struct): Locally set location to start of struct.
15197 * decl.c (fixup_anonymous_aggr): Use cp_error_at.
15198
15199 2001-01-08 Nathan Sidwell <nathan@codesourcery.com>
15200
15201 * decl.c (struct binding_level): Adjust class_shadowed comments
15202 to reflect reality.
15203 (push_class_level_binding): Adjust comments to reflect reality.
15204 Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
15205 Don't set TREE_VALUE on the class_shadowed list.
15206
15207 2001-01-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
15208
15209 * decl2.c (acceptable_java_type): Allow references too.
15210 * init.c (build_java_class_ref): When using the new ABI, search
15211 `class$' and have it mangled with `mangle_decl.'
15212 * mangle.c (write_java_integer_type_codes): New function.
15213 (write_builtin_type): Detect and mangle Java integer and real
15214 types.
15215
15216 2001-01-07 Mark Mitchell <mark@codesourcery.com>
15217
15218 * decl2.c (grokfield): Don't accept `asm' specifiers for
15219 non-static data members.
15220
15221 2001-01-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
15222
15223 * expr.c (cplus_expand_expr): Don't reset `target'.
15224
15225 2001-01-07 Neil Booth <neil@daikokuya.demon.co.uk>
15226
15227 * cp/decl2.c (cxx_post_options): Call cpp_post_options.
15228
15229 2001-01-05 Nathan Sidwell <nathan@codesourcery.com>
15230
15231 * parse.y (template_datadef): Check for error_mark_node.
15232
15233 2001-01-05 Nathan Sidwell <nathan@codesourcery.com>
15234
15235 * cp-tree.def (DEFAULT_ARG): Make `x' class.
15236
15237 2001-01-04 Joseph S. Myers <jsm28@cam.ac.uk>
15238
15239 * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
15240 (record_builtin_type): Make non-static.
15241 (flag_short_double): Don't declare.
15242 (init_decl_processing): Remove the creation of many tree nodes now
15243 in c_common_nodes_and_builtins.
15244 (build_void_list_node): New function.
15245 * decl2.c (flag_short_double, flag_short_wchar): Don't define.
15246 * cp-tree.h (flag_short_wchar): Don't declare.
15247
15248 2001-01-04 Mark Mitchell <mark@codesourcery.com>
15249
15250 * call.c (build_conv): Don't use build1 for USER_CONV.
15251 * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
15252
15253 2001-01-03 Joseph S. Myers <jsm28@cam.ac.uk>
15254
15255 * lex.c (lang_init): Call c_common_lang_init.
15256
15257 2001-01-03 Nathan Sidwell <nathan@codesourcery.com>
15258
15259 * search.c (lookup_fnfields_here): Remove.
15260 (look_for_overrides_r): Use lookup_fnfields_1.
15261 Ignore functions from using declarations.
15262
15263 2001-01-03 Nathan Sidwell <nathan@codesourcery.com>
15264
15265 Implement exceptions specifiers for implicit member functions.
15266 * cp-tree.h (merge_exceptions_specifiers): Declare new function.
15267 * method.c (synthesize_exception_spec): New function.
15268 (locate_dtor, locate_ctor, locate_copy): New functions.
15269 (implicitly_declare_fn): Generate the exception spec too.
15270 * search.c (check_final_overrider): Check artificial functions
15271 too.
15272 * typeck2.c (merge_exception_specifiers): New function.
15273
15274 2001-01-03 Jason Merrill <jason@redhat.com>
15275
15276 * init.c (build_default_init): New fn.
15277 (perform_member_init): Split out from here.
15278 (build_new_1): Use it. Simplify initialization logic.
15279 (build_vec_init): Take an array, rather than a pointer and maxindex.
15280 Speed up simple initializations. Don't clean up if we're assigning.
15281 * cp-tree.h: Adjust.
15282 * decl2.c (do_static_initialization): Remove TREE_VEC case.
15283 * parse.y (new_initializer): Return void_zero_node for ().
15284 * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
15285 * typeck2.c (digest_init): Only complain about user-written
15286 CONSTRUCTORs.
15287
15288 2000-12-22 Mike Stump <mrs@wrs.com>
15289
15290 * decl2.c: (max_tinst_depth): Increase to 50.
15291
15292 2001-01-02 Mark Mitchell <mark@codesourcery.com>
15293
15294 * class.c (invalidate_class_lookup_cache): Zero the
15295 previous_class_values.
15296 * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
15297 TREE_INT_CST_HIGH.
15298 (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
15299 * decl.c (free_bindings): New variable.
15300 (push_binding): Don't create a new binding if we have one on the
15301 free list.
15302 (pop_binding): Put old bindings on the free list.
15303 (init_decl_processing): Use size_int, not build_int_2.
15304 Register free_bindings as a GC root.
15305 (cp_make_fname_decl): Use size_int, not build_int_2.
15306 (push_inline_template_parms_recursive): Likewise.
15307 (end_template_parm_list): Likewise.
15308 (for_each_template_parm): Do not use walk_tree_without_duplicates.
15309 (tsubst_template_parms): Use size_int, not build_int_2.
15310 (tsubst): Likewise.
15311 * rtti.c (get_vmi_pseudo_type_info): Likewise.
15312
15313 2001-01-02 Richard Henderson <rth@redhat.com>
15314
15315 * parse.y (asm): Set ASM_INPUT_P.
15316
15317 2001-01-02 Jason Merrill <jason@redhat.com>
15318
15319 * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
15320 for v3 ABI.
15321
15322 * typeck.c (cp_truthvalue_conversion): New fn.
15323 * cvt.c (ocp_convert): Use it.
15324
15325 * cp-tree.h: Lose c-common.c decls.
15326
15327 * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
15328 * cvt.c (convert_to_void): Use type_unknown_p.
15329
15330 * typeck.c (strip_all_pointer_quals): Also strip quals from
15331 pointer-to-member types.
15332
15333 * Make-lang.in (cp/TAGS): Use --no-globals. Ignore parse.c, and treat
15334 parse.y as C.
15335
15336 * call.c (build_new_method_call): Do evaluate the object parameter
15337 when accessing a static member.
15338 * typeck.c (build_component_ref): Likewise.
15339
15340 2001-01-02 Andreas Jaeger <aj@suse.de>
15341
15342 * decl.c (cp_missing_noreturn_ok_p): New.
15343 (init_decl_processing): Set lang_missing_noreturn_ok_p.
15344
15345 2000-12-29 Jakub Jelinek <jakub@redhat.com>
15346
15347 * decl.c (init_decl_processing): Fix sign of wchar_type_node.
15348
15349 2000-12-29 Mark Mitchell <mark@codesourcery.com>
15350
15351 * class.c (pushclass): Remove #if 0'd code.
15352 * cp-tree.h (overload_template_name): Remove.
15353 * decl.c (store_bindings): Simplify.
15354 (pop_from_top_level): Likewise.
15355 * pt.c (overload_template_name): Remove.
15356 (instantiate_decl): Don't call push_to_top_level if it's not
15357 needed.
15358
15359 2000-12-28 Mark Mitchell <mark@codesourcery.com>
15360
15361 * pt.c (register_local_specialization): Don't return a value.
15362 (lookup_template_class): Use move-to-front heuristic when looking
15363 up template instantiations.
15364 (instantiate_decl): Only push_to_top_level when we're actually
15365 going to instantiate the template.
15366
15367 2000-12-29 Hans-Peter Nilsson <hp@bitrange.com>
15368
15369 * search.c (binfo_for_vtable): Return least derived class, not
15370 most. Handle secondary vtables.
15371
15372 2000-12-22 Jason Merrill <jason@redhat.com>
15373
15374 * pt.c (more_specialized): Don't optimize len==0.
15375 (fn_type_unification): If we're adding the return type, increase len.
15376
15377 * typeck.c (build_binary_op): Fix pmf comparison logic.
15378
15379 * call.c (joust): Use DECL_NONSTATIC_MEMBER_FUNCTION_P, not
15380 DECL_STATIC_FUNCTION_P.
15381
15382 * semantics.c (genrtl_finish_function): Don't try to jump to
15383 return_label unless it exists.
15384
15385 In partial ordering for a call, ignore parms for which we don't have
15386 a real argument.
15387 * call.c (joust): Pass len to more_specialized.
15388 (add_template_candidate_real): Strip 'this', pass len.
15389 * pt.c (more_specialized): Pass len down. Lose explicit_args parm.
15390 (get_bindings_order): New fn. Pass len down.
15391 (get_bindings_real): Strip 'this', pass len.
15392 (fn_type_unification): Likewise.
15393 (type_unification_real): Succeed after checking 'len' args.
15394 (most_specialized_instantiation): Lose explicit_args parm.
15395 * class.c (resolve_address_of_overloaded_function): Strip 'this',
15396 pass len.
15397
15398 2000-12-21 Jason Merrill <jason@redhat.com>
15399
15400 * pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
15401 DECL_TEMPLATE_RESULT.
15402
15403 * search.c (lookup_field_r): Call lookup_fnfields_1, not
15404 lookup_fnfields_here.
15405
15406 * parse.y (typename_sub2): Return the TYPE_DECL, not the type.
15407
15408 * call.c (build_object_call): Also allow conversions that return
15409 reference to pointer to function.
15410 (add_conv_candidate): Handle totype being ref to ptr to fn.
15411 (build_field_call): Also allow members of type reference to function.
15412 Lose support for calling pointer to METHOD_TYPE fields.
15413
15414 * error.c (dump_expr): Handle *_CAST_EXPR.
15415
15416 * typeck2.c (build_scoped_ref): Always convert to the naming class.
15417
15418 * tree.c (break_out_cleanups): Lose.
15419 * cp-tree.h: Remove prototype.
15420 * typeck.c (build_component_ref): Don't break_out_cleanups.
15421 (build_compound_expr): Likewise.
15422 * semantics.c (finish_expr_stmt): Likewise.
15423
15424 2000-12-20 Richard Henderson <rth@redhat.com>
15425
15426 * cp-tree.h: Update declarations.
15427 * decl.c (finish_case_label): Return the new stmt node.
15428 * semantics.c (finish_goto_stmt): Likewise.
15429 (finish_expr_stmt, finish_return_stmt): Likewise.
15430 (finish_break_stmt, finish_continue_stmt): Likewise.
15431 (finish_asm_stmt): Likewise.
15432 * parse.y (already_scoped_stmt): Set STMT_LINENO.
15433 (compstmt, implicitly_scoped_stmt, stmt): Likewise.
15434 (simple_if, simple_stmt): Return the new stmt node.
15435 (save_lineno): New.
15436
15437 2000-12-18 Joseph S. Myers <jsm28@cam.ac.uk>
15438
15439 * cp-tree.h: Don't declare warn_long_long.
15440
15441 2000-12-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
15442
15443 * tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of
15444 IS_AGGR_TYPE.
15445
15446 2000-12-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
15447
15448 * pt.c (unify): Handle when both ARG and PARM are
15449 BOUND_TEMPLATE_TEMPLATE_PARM.
15450
15451 2000-12-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
15452
15453 * pt.c (reduce_template_parm_level): Set DECL_ARTIFICIAL and
15454 DECL_TEMPLATE_PARM_P.
15455
15456 2000-12-15 Jason Merrill <jason@redhat.com>
15457
15458 * init.c (build_new_1): Reorganize. Now with 100% fewer SAVE_EXPRs!
15459
15460 * init.c (build_new_1): Don't strip quals from type.
15461
15462 * decl.c (pushdecl): Don't check for linkage on a non-decl.
15463
15464 * call.c (build_op_delete_call): See through ARRAY_TYPEs.
15465
15466 * call.c (build_new_function_call): Lose space before paren in
15467 error message.
15468 (build_new_method_call): Likewise.
15469
15470 * typeck2.c (build_m_component_ref): Propagate quals from datum.
15471
15472 2000-12-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
15473
15474 * pt.c (check_explicit_specialization): Propagate default
15475 function arguments to explicit specializations.
15476
15477 2000-12-13 DJ Delorie <dj@redhat.com>
15478
15479 * typeck.c (build_binary_op): Do signed/unsigned warnings for >?
15480 and <? operators.
15481
15482 2000-12-08 Jason Merrill <jason@redhat.com>
15483
15484 * error.c (dump_function_name): Don't let the user see __comp_ctor.
15485
15486 Clean up copy-initialization in overloading code.
15487 * call.c (build_user_type_conversion_1): Die if we are asked to
15488 convert to the same or a base type.
15489 (implicit_conversion): Avoid doing so. Lose reference binding code.
15490 (convert_like_real): Treat BASE_CONV and RVALUE_CONV as implicit
15491 direct-initialization. Also do direct-init part of copy-init.
15492 (build_user_type_conversion): Don't provide context to convert_like.
15493 * cvt.c (ocp_convert): build_user_type_conversion will now provide
15494 the constructor call for copy-init.
15495
15496 * pt.c (tsubst_decl): Call clone_function_decl here if this is an
15497 instantiation of a member template.
15498 (do_decl_instantiation): Not here.
15499
15500 2000-12-07 Nathan Sidwell <nathan@codesourcery.com>
15501
15502 * class.c (check_field_decls): Don't special case anonymous
15503 fields in error messages.
15504 (note_name_declared_in_class): Use %D on diagnostic.
15505
15506 * tree.c (pod_type_p): Use strip_array_types.
15507 (cp_valid_lang_attribute): Likewise.
15508 * typeck.c (cp_type_quals): Strip arrays separately, to avoid
15509 multiple evaluations.
15510 (cp_has_mutable_p): Use strip_array_types.
15511
15512 2000-12-07 Nathan Sidwell <nathan@codesourcery.com>
15513
15514 * cp-tree.h (sufficient_parms_p): Declare new function.
15515 * call.c (sufficient_parms_p): New function, broken out of ...
15516 (add_function_candidate): ... here. Use it.
15517 (add_conv_candidate): Use it.
15518 * decl.c (grok_ctor_properties): Use it.
15519
15520 2000-12-07 Jakub Jelinek <jakub@redhat.com>
15521
15522 * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
15523
15524 2000-12-07 Joseph S. Myers <jsm28@cam.ac.uk>
15525
15526 * decl2.c (lang_decode_option): Handle -Wformat-security.
15527
15528 2000-12-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
15529
15530 * pt.c (verify_class_unification): New function.
15531 (get_class_bindings): Use it.
15532 (try_class_unification): Tidy.
15533 (unify): Handle when argument of a template-id is not
15534 template parameter dependent.
15535 (template_args_equal): Handle when TREE_CODE's do not match.
15536
15537 2000-12-06 Alexandre Oliva <aoliva@redhat.com>
15538
15539 * lang-specs.h (c++): When invoking the stand-alone preprocessor
15540 for -save-temps, pass all relevant -Defines to it, and then don't
15541 pass them to cc1plus.
15542
15543 2000-12-05 Will Cohen <wcohen@redhat.com>
15544
15545 * decl.c (finish_case_label): Cleared
15546 more_cleanups_ok in surrounding function scopes.
15547 (define_label): Likewise.
15548
15549 2000-12-05 Nathan Sidwell <nathan@codesourcery.com>
15550
15551 * cp-tree.h (IDENTIFIER_VIRTUAL_P): Document.
15552 (get_matching_virtual): Remove.
15553 (look_for_overrides): Declare new function.
15554 * decl.c (grokfndecl): Don't set IDENTIFIER_VIRTUAL_P or
15555 DECL_VINDEX here.
15556 * class.c (check_for_override): Move base class iteration code
15557 to look_for_overrides.
15558 * search.c (next_baselink): Remove.
15559 (get_virtuals_named_this): Remove.
15560 (get_virtual_destructor): Remove.
15561 (tree_has_any_destructors_p): Remove.
15562 (struct gvnt_info): Remove.
15563 (check_final_overrider): Remove `virtual' from error messages.
15564 (get_matching_virtuals): Remove. Move functionality to ...
15565 (look_for_overrides): ... here, and ...
15566 (look_for_overrides_r): ... here. Set DECL_VIRTUAL_P, if found
15567 to be overriding.
15568
15569 2000-12-05 Nathan Sidwell <nathan@codesourcery.com>
15570
15571 * typeck.c (get_delta_difference): If via a virtual base,
15572 return zero.
15573 * cvt.c (cp_convert_to_pointer): If via a virtual base, do no
15574 adjustment.
15575
15576 2000-12-04 Richard Henderson <rth@redhat.com>
15577
15578 * error.c (dump_tree): Use output_add_string not OB_PUTS.
15579
15580 2000-12-04 Jason Merrill <jason@redhat.com>
15581
15582 * mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
15583 (write_builtin_type): Pass intSI_type_node and the like through
15584 type_for_mode.
15585 * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
15586 Pass intSI_type_node and the like through type_for_mode.
15587 * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
15588 * pt.c (tsubst, unify): Likewise.
15589 * tree.c (walk_tree): Likewise.
15590 * error.c (dump_type): Likewise.
15591 (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.
15592
15593 * Make-lang.in: Tweak top comment for emacs.
15594 (cp/TAGS): Restore.
15595
15596 * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.
15597
15598 * class.c (clone_function_decl): Robustify.
15599
15600 2000-12-04 Michael Matz <matzmich@cs.tu-berlin.de>
15601
15602 * decl.c (store_bindings): Only search in the non modified
15603 old_bindings for duplicates.
15604
15605 2000-12-04 Nathan Sidwell <nathan@codesourcery.com>
15606
15607 * error.c (dump_function_decl): Use DECL_VIRTUAL_P, not
15608 TYPE_POLYMORPHIC_P.
15609
15610 * typeck.c (build_static_cast): Remove unused variable.
15611
15612 2000-12-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
15613
15614 * pt.c: Fix typo in comment.
15615
15616 2000-12-01 Joseph S. Myers <jsm28@cam.ac.uk>
15617
15618 * decl2.c (warn_format): Remove definition.
15619 (lang_decode_option): Handle -Wformat-nonliteral,
15620 -Wno-format-extra-args and -Wno-format-y2k. Use set_Wformat.
15621
15622 2000-12-01 Joseph S. Myers <jsm28@cam.ac.uk>
15623
15624 * decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
15625 (init_decl_processing): Don't create string_type_node,
15626 const_string_type_node, wint_type_node, intmax_type_node,
15627 uintmax_type_node, default_function_type, ptrdiff_type_node and
15628 unsigned_ptrdiff_type_node. Adjust position of call to
15629 c_common_nodes_and_builtins.
15630 (identifier_global_value): New function.
15631
15632 2000-12-01 Nathan Sidwell <nathan@codesourcery.com>
15633
15634 * call.c (standard_conversion): Reject pointer to member
15635 conversions from ambiguous, inaccessible or virtual bases.
15636 * typeck.c (build_static_cast): Don't check pointers to members
15637 specially.
15638
15639 2000-11-30 Nathan Sidwell <nathan@codesourcery.com>
15640
15641 * method.c (do_build_copy_constructor): Preserve cv
15642 qualifications when accessing source object members.
15643 (do_build_assign_ref): Likewise. Remove separate diagnostics for
15644 unnamed fields.
15645
15646 2000-11-30 Nathan Sidwell <nathan@codesourcery.com>
15647
15648 * method.c (do_build_assign_ref): Construct appropriately
15649 CV-qualified base reference. Don't allow const casts in base
15650 conversion.
15651
15652 2000-11-30 Nathan Sidwell <nathan@codesourcery.com>
15653
15654 * call.c (build_over_call): Use VOID_TYPE_P. Don't die on
15655 incomplete return type.
15656
15657 2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
15658
15659 * parse.y (base_class.1): Produce a _TYPE not a _DECL.
15660 * semantics.c (finish_base_specifier): Accept a _TYPE not a
15661 _DECL.
15662
15663 2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
15664
15665 * spew.c (yyerror): Cope if yylval.ttype is NULL.
15666
15667 2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
15668
15669 * decl.c (grokdeclarator): Diagnose undefined template contexts.
15670
15671 2000-11-28 Nathan Sidwell <nathan@codesourcery.com>
15672
15673 * decl.c (grokdeclarator): Do type access control on friend
15674 class.
15675
15676 2000-11-27 Nathan Sidwell <nathan@codesourcery.com>
15677
15678 * decl.c (grokfndecl): Undo COMPONENT_REF damage caused by
15679 bison parser ickiness.
15680 * pt.c (tsubst_friend_function): Enter namespace scope when
15681 tsubsting the function name.
15682 * cp-tree.h (DECL_TI_TEMPLATE): Update comment to reflect reality.
15683
15684 2000-11-27 Nathan Sidwell <nathan@codesourcery.com>
15685
15686 * cp-tree.h (binfo_from_vbase): Return the virtual base's binfo.
15687 * cvt.c (cp_convert_to_pointer): Add force parameter.
15688 Allow conversions via virtual base if forced.
15689 (convert_to_pointer_force): Adjust call to cp_convert_to_pointer.
15690 (ocp_convert): Likewise.
15691 * search.c (binfo_from_vbase): Return the virtual base's binfo.
15692 * typeck.c (get_delta_difference): Adjust handling of virtual
15693 bases.
15694
15695 2000-11-26 Mark Mitchell <mark@codesourcery.com>
15696
15697 * tree.c (struct list_hash): Remove.
15698 (list_hash_table): Make it be an htab.
15699 (struct list_proxy): New type.
15700 (list_hash_eq): New function.
15701 (list_hash_pieces): Renamed from ...
15702 (list_hash): ... this.
15703 (list_hash_lookup): Remove.
15704 (list_hash_add): Remove.
15705 (hash_tree_cons): Use the generic hashtable.
15706 (mark_list_hash): Remove.
15707 (init_tree): Create the hashtable.
15708
15709 2000-11-25 Joseph S. Myers <jsm28@cam.ac.uk>
15710
15711 * method.c (build_mangled_C9x_name): Rename to
15712 build_mangled_C99_name. Change C9X references in comments to
15713 refer to C99.
15714
15715 2000-11-24 Nathan Sidwell <nathan@codesourcery.com>
15716
15717 * parse.y (unary_expr): Move VA_ARG from here ...
15718 (primary): ... to here.
15719
15720 2000-11-24 Nathan Sidwell <nathan@codesourcery.com>
15721
15722 * semantics.c (finish_id_expr): If type is error_mark, return
15723 error_mark.
15724
15725 2000-11-23 Nathan Sidwell <nathan@codesourcery.com>
15726
15727 * pt.c (lookup_template_class): Simplify loop exit constructs.
15728 Cope when there is no partial instantiation of a template
15729 template member.
15730
15731 2000-11-23 J"orn Rennecke <amylaar@redhat.com>
15732
15733 * Make-lang.in (g++spec.o, cxxmain.o): Depend on $(CONFIG_H).
15734
15735 2000-11-22 Mark Mitchell <mark@codesourcery.com>
15736
15737 * mangle.c (mangle_conv_op_name_for_type): Don't use `__op'
15738 prefix.
15739
15740 * pt.c (do_decl_instantiate): Explicitly clone constructors and
15741 destructors that haven't already been cloned.
15742
15743 2000-11-20 Richard Henderson <rth@redhat.com>
15744
15745 * parse.y (yyparse_1): Rename the parser entry point.
15746
15747 2000-11-20 Alex Samuel <samuel@codesourcery.com>
15748
15749 * mangle.c (write_name): Use <unscoped-name> for names directly in
15750 function scope.
15751 (write_unscoped_name): Accept names directly in function scope.
15752
15753 2000-11-20 Nathan Sidwell <nathan@codesourcery.com>
15754
15755 * lex.c (rid_to_yy, RID_EXPORT): Make unique keyword.
15756 * parse.y (extdef): Add EXPORT reduction.
15757 * spew.c (yylex): Don't skip export here.
15758
15759 2000-11-19 Mark Mitchell <mark@codesourcery.com>
15760
15761 * decl.c (init_decl_processing): Correct name of pure virtual
15762 function under the new ABI.
15763 * rtti.c (throw_bad_cast): Likewise, for bad cast function.
15764 (throw_bad_typeid): Likewise for bad typeid function.
15765
15766 2000-11-18 Mark Mitchell <mark@codesourcery.com>
15767
15768 * decl.c (grokparms): Don't even function types of `void' type,
15769 either.
15770 * mangle.c (write_type): Don't crash when confronted with the
15771 error_mark_node.
15772
15773 * decl.c (grokparms): Don't create parameters of `void' type.
15774
15775 2000-11-17 Zack Weinberg <zack@wolery.stanford.edu>
15776
15777 * lex.c (mark_impl_file_chain): Delete.
15778 (init_parse): Remove call to ggc_add_string_root. No need to
15779 ggc_strdup a string constant. Do not add impl_file_chain to GC
15780 roots.
15781 (handle_pragma_implementation): No need to ggc_strdup main_filename.
15782
15783 2000-11-17 Nathan Sidwell <nathan@codesourcery.com>
15784
15785 * pt.c (tsubst_expr, DECL_STMT): Instantiate decl's type.
15786
15787 2000-11-17 Nathan Sidwell <nathan@codesourcery.com>
15788
15789 * cp-tree.h (PARMLIST_ELLIPSIS_P): New macro.
15790 * decl.c (grokdeclarator): Don't reject void parms here.
15791 (require_complete_types_for_parms): Simplify, use
15792 complete_type_or_else.
15793 (grokparms): Remove bitrot. Remove funcdef parm.
15794 Deal with ellipsis parm lists here.
15795 * semantics.c (finish_parmlist): Don't append void_list_node
15796 here. Set PARMLIST_ELLIPSIS_P.
15797
15798 2000-11-17 Nathan Sidwell <nathan@codesourcery.com>
15799
15800 * typeck2.c (incomplete_type_error): Reorganize to avoid
15801 excessive diagnostics.
15802
15803 2000-11-16 Zack Weinberg <zack@wolery.stanford.edu>
15804
15805 * lex.c (struct impl_files, internal_filename): Constify a char *.
15806
15807 2000-11-16 Mark Mitchell <mark@codesourcery.com>
15808
15809 * mangle.c (write_special_name_constructor): Don't generate
15810 assembler junk when confronted with an old-style constructor.
15811 (write_special_name_destructor): Likewise.
15812 (mangle_decl_string): Do it here instead.
15813
15814 2000-11-16 Nathan Sidwell <nathan@codesourcery.com>
15815
15816 * call.c (op_error): Make error messages clearer.
15817
15818 2000-11-15 Mark Mitchell <mark@codesourcery.com>
15819
15820 * decl.c (wrapup_globals_for_namespace): Don't mark things
15821 TREE_ASM_WRITTEN when they're not.
15822
15823 2000-11-15 Jason Merrill <jason@redhat.com>
15824
15825 * typeck2.c (friendly_abort): Uncount the error before handing
15826 off to fancy_abort.
15827
15828 2000-11-15 Nathan Sidwell <nathan@codesourcery.com>
15829
15830 * typeck.c (lookup_anon_field): Cope with qv qualifiers.
15831
15832 2000-11-14 Mark Mitchell <mark@codesourcery.com>
15833
15834 * class.c (build_vtbl_initializer): Fix typo in comment.
15835 * typeck.c (expr_sizeof): Don't crash on errors.
15836
15837 2000-11-14 Jim Wilson <wilson@redhat.com>
15838
15839 * lang-specs.h: Add %2 after %(cc1_options).
15840
15841 2000-11-14 Richard Henderson <rth@redhat.com>
15842
15843 * typeck.c (c_sizeof): Be strict about casting result value
15844 back to c_size_type_node.
15845 (expr_sizeof, c_sizeof_nowarn, c_alignof): Likewise.
15846
15847 2000-11-13 Joseph S. Myers <jsm28@cam.ac.uk>
15848
15849 * typeck.c (build_unary_op): Use boolean_increment from
15850 c-common.c, moving the relevant code there.
15851
15852 2000-11-11 Jason Merrill <jason@redhat.com>
15853
15854 * typeck.c (mark_addressable): Don't call put_var_into_stack.
15855
15856 * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
15857 in inlines.
15858
15859 2000-11-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
15860
15861 * decl.c (grokdeclarator, save_function_data): Use memcpy, not bcopy.
15862 * lex.c (copy_lang_decl): Likewise.
15863
15864 2000-11-09 Mark Mitchell <mark@codesourcery.com>
15865
15866 * dump.c (cp_dump_tree): Don't dump function bodies here.
15867
15868 * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
15869 (dump.o): Update dependency list.
15870 * cp-tree.h (DECL_MAYBE_TEMPLATE): Remove.
15871 (flag_dump_translation_unit): Likewise.
15872 (CP_TYPE_QUALS): Adjust definition.
15873 (DECL_C_BIT_FIELD): Remove.
15874 (SET_DECL_C_BIT_FIELD): Likewise.
15875 (CLEAR_DECL_C_BIT_FIELD): Likewise.
15876 (add_maybe_template): Likewise.
15877 (strip_array_types): Likewise.
15878 (dump_node_to_file): Likewise.
15879 (cp_dump_tree): New function.
15880 * decl.c (init_decl_processing): Set lang_dump_tree.
15881 * decl2.c (flag_dump_translation_unit): Remove.
15882 * dump.c: Move most of it to ../c-dump.c.
15883 (cp_dump_tree): New function.
15884 * pt.c (add_maybe_template): Remove.
15885 * typeck.c (strip_array_types): Likewise.
15886
15887 2000-11-07 Eric Christopher <echristo@redhat.com>
15888
15889 * decl.c (init_decl_processing): Change definition of
15890 __wchar_t to wchar_t. Remove artificial declaration of
15891 wchar_t.
15892 * lex.c: Change instances of __wchar_t to wchar_t.
15893
15894 2000-11-09 Nathan Sidwell <nathan@codesourcery.com>
15895
15896 * lex.c (do_identifier): Don't lookup_name for operators.
15897 * parse.y (operator): Save looking_for_typename.
15898 (unoperator): Restore it.
15899 * spew.c (frob_opname): Use nth_token for lookahead.
15900
15901 2000-11-08 Nathan Sidwell <nathan@codesourcery.com>
15902
15903 * decl.c (grok_op_properties): Always use coerce_new_type and
15904 coerce_delete_type.
15905 * decl2.c (coerce_new_type): Use c_size_type_node. Preserve
15906 exception specification. Tidy up.
15907 (coerce_delete_type): Preserve exception specification. Tidy up.
15908
15909 2000-11-07 Joseph S. Myers <jsm28@cam.ac.uk>
15910
15911 * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
15912 (push_binding_level), error.c (cp_tree_printer), pt.c
15913 (process_partial_specialization, tsubst_template_arg_vector),
15914 search.c (lookup_member): Use memset () instead of bzero ().
15915
15916 2000-11-07 Nathan Sidwell <nathan@codesourcery.com>
15917
15918 * decl.c (build_ptrmemfunc_type): Allow error_mark_node.
15919
15920 2000-11-05 Joseph S. Myers <jsm28@cam.ac.uk>
15921
15922 * Make-lang.in (c++.distdir): Remove.
15923
15924 2000-11-04 Mark Mitchell <mark@codesourcery.com>
15925
15926 * decl2.c (do_nonmember_using_decl): Allow `extern "C"'
15927 declarations from different namespaces to be combined.
15928
15929 2000-11-03 Zack Weinberg <zack@wolery.stanford.edu>
15930
15931 * decl.c: Include tm_p.h.
15932
15933 2000-11-03 Joseph S. Myers <jsm28@cam.ac.uk>
15934
15935 * tree.c (cp_tree_equal): Use memcmp () instead of bcmp ().
15936
15937 2000-11-02 Joseph S. Myers <jsm28@cam.ac.uk>
15938
15939 * dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
15940 (build_overload_value), repo.c (open_repo_file), xref.c
15941 (open_xref_file): Use strchr () and strrchr () instead of index ()
15942 and rindex ().
15943
15944 2000-11-01 Bernd Schmidt <bernds@redhat.co.uk>
15945
15946 * call.c (build_over_call): Call fold on the CALL_EXPR.
15947
15948 2000-11-01 Gabriel Dos Reis <gdr@codesourcery.com>
15949
15950 * error.c (dump_template_decl): Separate template hearders with
15951 space not comma.
15952
15953 2000-10-31 Gabriel Dos Reis <gdr@codesourcery.com>
15954
15955 * error.c: Move TFF_ macros into cp-tree.h. Throughout, replace
15956 TS_* flags with corresponding TFF_*. Adjust prototypes of
15957 functions (which used to take a tree_string_flags) to take an int.
15958
15959 * cp-tree.h (enum tree_string_flags): Remove
15960 (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE,
15961 TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPEDEF, TFF_DECL_SPECIFIERS,
15962 TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
15963 TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
15964 TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS,
15965 TFF_TEMPLATE_NAME, TFF_EXPR_IN_PARENS, TFF_SCOPE): New macros.
15966 (type_as_string, decl_as_string, expr_as_string,
15967 context_as_string): Adjust prototype.
15968
15969 * class.c (dump_class_hierarchy_r): Use TFF_PLAIN_IDENTIFIER
15970 instead of TS_PLAIN.
15971
15972 * pt.c (mangle_class_name_for_template): Use TFF_CHASE_TYPEDEF
15973 instead of TF_CHASE_TYPEDEFS. Use TFF_PLAIN_IDENTIFIER instead of
15974 plain `0'.
15975
15976 2000-10-30 Mark Mitchell <mark@codesourcery.com>
15977
15978 * cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
15979 (linkage_kind): New enumeration.
15980 (decl_linkage): New function.
15981 * decl2.c (comdat_linkage): Extend comment.
15982 * error.c (dump_function_decl): Print the arguments used to
15983 instantiate a template, even when not printing the type of the
15984 function.
15985 * pt.c (convert_nontype_argument): Use DECL_EXTERNAL_LINKAGE_P,
15986 not TREE_PUBLIC, to test for external linkage.
15987 * tree.c (decl_linkage): New function.
15988
15989 2000-10-28 Mark Mitchell <mark@codesourcery.com>
15990
15991 * pt.c (instantiate_decl): Always instantiate static data members
15992 initialized in-class.
15993
15994 2000-10-27 Zack Weinberg <zack@wolery.stanford.edu>
15995
15996 * Make-lang.in: Move all build rules here from Makefile.in,
15997 adapt to new context. Wrap all rules that change the current
15998 directory in parentheses. Expunge all references to $(P).
15999 When one command depends on another and they're run all at
16000 once, use && to separate them, not ;. Add OUTPUT_OPTION to
16001 all object-file generation rules. Delete obsolete variables.
16002
16003 * Makefile.in: Delete.
16004 * config-lang.in: Delete outputs= line.
16005
16006 2000-10-26 Gabriel Dos Reis <gdr@codesourcery.com>
16007
16008 * error.c (dump_function_decl): Print no space between
16009 `ptr-operator' the `type-specifier' of the return type.
16010 (dump_type_prefix): Make sure we put space at the appropriate
16011 place.
16012
16013 2000-10-23 Jason Merrill <jason@redhat.com>
16014
16015 * call.c (equal_functions): Also call decls_match for extern "C" fns.
16016
16017 2000-10-22 Jason Merrill <jason@redhat.com>
16018
16019 * call.c (build_conditional_expr): Use ocp_convert to force
16020 rvalue conversion.
16021
16022 2000-10-22 Mark Mitchell <mark@codesourcery.com>
16023
16024 * call.c (standard_conversion): Use RVALUE_CONVs for all
16025 expressions that satisfy lvalue_p, not just those that satisfy
16026 real_lvalue_p.
16027
16028 * optimize.c (copy_body_r): Don't treat CALL_EXPRs specially.
16029
16030 * typeck.c (c_sizeof): Return an expression of `size_t' type,
16031 not one with TYPE_IS_SIZETYPE set.
16032 (dubious_conversion_warnings): Remove special-case code.
16033
16034 2000-10-21 Geoffrey Keating <geoffk@cygnus.com>
16035
16036 * decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
16037 * error.c (dump_type): Handle VECTOR_TYPE like POINTER_TYPE.
16038 (dump_type_prefix): Print vector-of-int as 'int vector'.
16039 (dump_type_suffix): Handle VECTOR_TYPE like POINTER_TYPE.
16040 * tree.c (walk_tree): Handle VECTOR_TYPE.
16041
16042 * decl.c (init_decl_processing): Call MD_INIT_BUILTINS.
16043
16044 2000-10-21 Jason Merrill <jason@redhat.com>
16045
16046 * parse.y (operator): Set got_object from got_scope.
16047 Set looking_for_typename.
16048 * decl.c (lookup_name_real): Clear val after setting from_obj.
16049 Reorganize diagnostic.
16050
16051 2000-10-20 Jason Merrill <jason@redhat.com>
16052
16053 * tree.c (walk_tree): Don't walk into default args.
16054
16055 * error.c (dump_expr): Use host_integerp.
16056
16057 2000-10-20 David Edelsohn <edelsohn@gnu.org>
16058
16059 * typeck2.c (abstract_virtuals_error): Use "because" instead of
16060 "since" in error message.
16061
16062 2000-10-20 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
16063
16064 * typeck.c (dubious_conversion_warning): Suppress if TYPE_IS_SIZETYPE.
16065
16066 2000-10-20 Jeffrey Oldham <oldham@codesourcery.com>
16067
16068 * decl.c (revert_static_member_fn): Fixed typo.
16069
16070 2000-10-19 Mark Mitchell <mark@codesourcery.com>
16071
16072 * class.c (subobject_offset_fn): New type.
16073 (dfs_record_base_offsets): Remove.
16074 (record_base_offsets): Likewise.
16075 (dfs_search_base_offsets): Likewise.
16076 (record_subobject_offset): New function.
16077 (check_subobject_offset): Likewise.
16078 (walk_subobject_offsets): Likewise.
16079 (record_subobject_offsets): Likewise.
16080 (layout_conflict_p): Reimplement.
16081 (layout_nonempty_base_or_field): Correct handling of type
16082 conflicts during layout.
16083 (layout_empty_base): Likewise.
16084 (build_base_field): Adjust to handle new representation of empty
16085 base offset table.
16086 (build_base_fields): Likewise.
16087 (layout_virtual_bases): Likewise.
16088 (splay_tree_compare_integer_csts): New function.
16089 (layout_class_type): Use a splay_tree, rather than a varray, to
16090 represent the offsets of empty bases.
16091
16092 * cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL.
16093 * decl.c (select_decl): Don't return declarations that are
16094 DECL_ANTICIPATED.
16095
16096 2000-10-18 Mark Mitchell <mark@codesourcery.com>
16097
16098 * cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
16099 (fake_std_node): New macro.
16100 * decl.c (in_std): Rename to ...
16101 (in_fake_std): ... this.
16102 (flag_no_builtin): Remove.
16103 (flag_no_nonansi_builtin): Likewise.
16104 (walk_namespaces_r): Use fake_std_node.
16105 (push_namespace): Use std_identifier.
16106 (pop_namespace): Use in_fake_std.
16107 (lookup_name_real): Use fake_std_node.
16108 (init_decl_processing): When -fhonor-std, create the `std'
16109 namespace. Don't create a dummy fake_std_node in that case.
16110 Adjust call to c_common_nodes_and_builtins. Use std_identifier.
16111 (builtin_function): Put builtins whose names don't begin
16112 with `_' in the std namespace.
16113 * decl2.c (flag_no_builtin): Remove.
16114 (flag_no_nonansi_builtin): Likewise.
16115 (set_decl_namespace): Use fake_std_node.
16116 (validate_nonmember_using_decl): Likewise.
16117 (do_using_directive): Likewise.
16118 (handle_class_head): Likewise.
16119 * dump.c (dequeue_and_dump): Likewise.
16120 * except.c (init_exception_processing): Use std_identifier.
16121 * init.c (build_member_call): Use fake_std_node.
16122 * rtti.c (init_rtti_processing): Use std_identifier.
16123
16124 2000-10-17 Mark Mitchell <mark@codesourcery.com>
16125
16126 * cp-tree.h (back_end_hook): Remove declaration.
16127 * decl2.c (back_end_hook): Remove definition.
16128
16129 * dump.c (dequeue_and_dump): Dump TREE_USED.
16130
16131 2000-10-17 Brad Lucier <lucier@math.purdue.edu>
16132
16133 * spew.c (snarf_defarg): Cast 2nd arg to obstack_blank to (int).
16134
16135 2000-10-17 Joseph S. Myers <jsm28@cam.ac.uk>
16136
16137 * decl.c (WINT_TYPE): Define.
16138 (init_decl_processing): Create types unsigned_ptrdiff_type_node,
16139 c_size_type_node, signed_size_type_node and wint_type_node.
16140
16141 2000-10-17 Joseph S. Myers <jsm28@cam.ac.uk>
16142
16143 * decl2.c (warn_missing_format_attribute): New variable.
16144 (lang_decode_option): Decode -Wmissing-format-attribute.
16145
16146 2000-10-16 Mark Mitchell <mark@codesourcery.com>
16147
16148 * typeck.c (qualify_type): Remove.
16149 (composite_pointer_type): Fix handling of conversions to `cv void*'.
16150
16151 2000-10-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16152
16153 * Makefile.in (parse.c, parse.h): Fix think-o in last patch.
16154
16155 2000-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16156
16157 * Makefile.in (parse.c, parse.h): Create atomically.
16158
16159 2000-10-12 Mark Mitchell <mark@codesourcery.com>
16160
16161 * class.c (current_obstack): Remove.
16162 * decl.c (ggc_p): Remove.
16163 (start_decl): Don't use decl_tree_cons.
16164 (grokdeclarator): Don't use build_decl_list.
16165 (start_function): Don't use decl_tree_cons.
16166 (finish_function): Don't mess with obstacks.
16167 * decl2.c (grok_x_components): Don't use build_decl_list.
16168 * lex.c (make_call_declarator): Don't call decl_tree_cons.
16169 (implicitly_declare_fn): Don't call build_decl_list.
16170 * parse.y (frob_specs): Don't call build_decl_list or
16171 decl_tree_cons.
16172 (expr_or_declarator_intern): Don't call decl_tree_cons.
16173 (primary): Don't call build_decl_list.
16174 (fcast_or_absdcl): Likewise.
16175 (typed_declspecs): Don't call decl_tree_cons.
16176 (reserved_declspecs): Don't call build_decl_list.
16177 (declmods): Likewise.
16178 (reserved_typespecquals): Likewise.
16179 (aggr): Likewise.
16180 (new_type_id): Likewise.
16181 (cv_qualifiers): Likewise.
16182 (after_type_declarator_intern): Likewise.
16183 (notype_declarator_intern): Likewise.
16184 (absdcl_intern): Likewise.
16185 (named_parm): Likewise.
16186 * pt.c (most_specialized_class): Likewise.
16187 * repo.c (temporary_obstack): Make it a structure, not a pointer.
16188 (init_repo): Initialize it.
16189 * search.c (current_obstack): Remove.
16190 * typeck2.c (add_exception_specifier): Don't call build_decl_list.
16191
16192 2000-10-09 Richard Henderson <rth@cygnus.com>
16193
16194 * Make-lang.in (CXX_EXTRA_HEADERS): Remove.
16195 (c++ language support bits for libgcc): Remove.
16196 (c++.clean): Remove cplib2.txt cleanup.
16197 * config-lang.in (headers, lib2funcs): Remove.
16198
16199 * exception.cc, new.cc, new1.cc, new2.cc: Remove files.
16200 * tinfo.cc, tinfo.h, tinfo2.cc, vec.cc: Remove files.
16201 * inc/cxxabi.h, inc/exception, inc/new: Remove files.
16202 * inc/new.h, inc/typeinfo: Remove files.
16203
16204 2000-10-08 Joseph S. Myers <jsm28@cam.ac.uk>
16205
16206 * decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
16207 defined.
16208 (init_decl_processing): Initialize intmax_type_node and
16209 uintmax_type_node.
16210
16211 2000-10-06 Richard Henderson <rth@cygnus.com>
16212
16213 * cp-tree.h (struct cp_language_function): Remove x_result_rtx.
16214 (original_result_rtx): Remove.
16215 * decl.c (save_function_data): Don't clear x_result_rtx.
16216 (mark_lang_function): Don't mark it either.
16217 * expr.c (fixup_result_decl): Remove.
16218 * semantics.c (genrtl_named_return_value): Frob the return decl
16219 before calling emit_local_var.
16220 (genrtl_finish_function): Don't call fixup_result_decl.
16221 Always emit the jump to return_label.
16222
16223 2000-10-06 Nathan Sidwell <nathan@codesourcery.com>
16224
16225 * pt.c (lookup_template_class): Set current access for enum.
16226 (tsubst_enum): Set file & line for enum decl.
16227
16228 * spew.c (yylex): Remove unused variable.
16229
16230 2000-10-05 Richard Henderson <rth@cygnus.com>
16231
16232 * semantics.c (genrtl_finish_function): Don't init or check
16233 can_reach_end; remove noreturn and return value checks.
16234
16235 2000-10-05 Tom Tromey <tromey@cygnus.com>
16236
16237 * init.c (build_java_class_ref): Use `build_static_name' with a
16238 suffix, not a prefix, to build the class object's name.
16239
16240 2000-10-05 Nathan Sidwell <nathan@codesourcery.com>
16241
16242 * cp-tree.h (access_kind): Fix comment typo.
16243 * decl2.c (grokfield): Fix diagnostic typo.
16244 * semantics.c (finish_template_type): Fix comment typo.
16245 (finish_qualified_object_call_expr): Likewise.
16246
16247 2000-10-05 Nathan Sidwell <nathan@codesourcery.com>
16248
16249 * pt.c (tsubst_expr, DECL_STMT case): Don't process if
16250 tsubsting fails.
16251
16252 2000-10-05 Nathan Sidwell <nathan@codesourcery.com>
16253
16254 * spew.c (frob_id): New static function.
16255 (frob_opname): Use it.
16256 (yylex): Use it.
16257
16258 2000-10-01 Mark Mitchell <mark@codesourcery.com>
16259
16260 * decl.c (lang_mark_false_label_stack): Remove.
16261 * lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.
16262
16263 2000-09-30 Joseph S. Myers <jsm28@cam.ac.uk>
16264
16265 * gxxint.texi: Use @email for formatting email addresses.
16266
16267 2000-09-29 Gabriel Dos Reis <gdr@codesourcery.com>
16268
16269 * error.c: Remove direct obstack manipulation. Replace with
16270 output_buffer-based formatting. Adjust calls to removed macros.
16271 (obstack_chunk_alloc, obstack_chunk_free): Remove.
16272 (OB_INIT, OB_PUTC, OB_PUTC2, OB_PUTS, OB_PUTID, OB_PUTCP,
16273 OB_FINISH, OB_PUTI, OB_END_TEMPLATE): Likewise.
16274
16275 2000-09-24 Mark Mitchell <mark@codesourcery.com>
16276
16277 * ir.texi: Move to ../c-tree.texi.
16278
16279 2000-09-20 Jason Merrill <jason@redhat.com>
16280
16281 * decl2.c (get_guard): Check DECL_FUNCTION_SCOPE_P.
16282
16283 2000-09-21 Andreas Jaeger <aj@suse.de>
16284
16285 * errfn.c: Move declaration of cp_printer and cp_printers to ...
16286 * cp-tree.h: ... here.
16287
16288 * error.c: Remove declaration of cp_printer.
16289
16290 2000-09-20 Mark Mitchell <mark@codesourcery.com>
16291
16292 * tree.c (mark_local_for_remap_r): Handle CASE_LABELs.
16293
16294 2000-09-20 Hans-Peter Nilsson <hp@axis.com>
16295
16296 * except.c: Delete #if 0:d EXCEPTION_SECTION_ASM_OP-default and
16297 users.
16298
16299 2000-09-18 Mark Mitchell <mark@codesourcery.com>
16300
16301 * decl.c (start_function): Robustify.
16302
16303 2000-09-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
16304
16305 * cp-tree.h (check_function_format): Accept a `status' parameter.
16306
16307 * call.c, typeck.c: Updates calls to `check_function_format'.
16308
16309 2000-09-17 Geoffrey Keating <geoffk@cygnus.com>
16310
16311 * decl2.c (handle_class_head): Always push some scope even
16312 in the error case.
16313
16314 2000-09-16 Mark Mitchell <mark@codesourcery.com>
16315
16316 * cp-tree.h (struct cp_language_function): Remove
16317 x_scope_stmt_stack and name_declared.
16318 (current_scope_stmt_stack): Remove.
16319 (function_name_declared_p): New macro.
16320 (struct lang_decl_flags): Use c_lang_decl as a base class.
16321 (context): Remove.
16322 (struct lang_decl): Replace saved_tree with context.
16323 (DECL_FRIEND_CONTEXT): Adjust accordingly.
16324 (SET_DECL_FRIEND_CONTEXT): Likewise.
16325 (DECL_VIRTUAL_CONTEXT): Likewise.
16326 (DECL_SAVED_TREE): Remove.
16327 (C_DECLARED_LABEL_FLAG): Likewise.
16328 (cplus_expand_expr_stmt): Don't declare.
16329 (add_decl_stmt): Likewise.
16330 (add_scope_stmt): Likewise.
16331 * decl.c (mark_stmt_tree): Remove.
16332 (case_compare): Likewise.
16333 (finish_case_label): Use c_add_case_label.
16334 (init_decl_processing): Set more language-specific hooks.
16335 (build_enumerator): Fix typo in comment.
16336 (cplus_expand_expr_stmt): Remove.
16337 (mark_lang_function): Use mark_c_language_function.
16338 (lang_mark_tree): Use c_mark_lang_decl.
16339 * decl2.c: Change order of inclusion.
16340 * except.c: Likewise.
16341 * expr.c (cplus_expand_expr): Remove handling of STMT_EXPR. Fall
16342 back on c_expand_expr.
16343 * friend.c: Include expr.h.
16344 * init.c: Change order of inclusion.
16345 * Makefile.in: Update dependencies.
16346 * lex.h (free_lang_decl_chain): Remove.
16347 * optimize.c (maybe_clone_body): Use function_name_declared_p.
16348 * pt.c (build_template_decl): Don't copy DECL_VIRTUAL_CONTEXT if
16349 it doesn't exist.
16350 (instantiate_decl): Use function_name_declared_p.
16351 * semantics.c (lang_expand_expr_stmt): Remove.
16352 (set_current_function_name_declared): Likewise.
16353 (current_function_name_declared): Likewise.
16354 (begin_compound_stmt): Use function_name_declared_p.
16355 (add_decl_stmt): Remove.
16356 (setup_vtbl_ptr): Use function_name_declared_p.
16357 (add_scope_stmt): Remove.
16358 (current_scope_stmt_stack): New function.
16359 (cp_expand_stmt): Don't handle SCOPE_STMTs.
16360 (expand_body): Use function_name_declared_p.
16361 * tree.c (cp_statement_code_p): Don't include SCOPE_STMT.
16362 * typeck.c: Change order of includes.
16363 (convert_sequence): Remove.
16364
16365 2000-09-14 Joseph S. Myers <jsm28@cam.ac.uk>
16366
16367 * lex.c (reswords): Add _Complex.
16368
16369 2000-09-14 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
16370
16371 * Make-lang.in (cplib2.txt): Depend on cp/Makefile.
16372
16373 2000-09-13 J. David Anglin <dave@hiauly1.hia.nrc.ca>
16374
16375 * init.c (begin_init_stmts): Don't use // comments.
16376
16377 2000-09-12 Jason Merrill <jason@redhat.com>
16378
16379 * decl.c (maybe_deduce_size_from_array_init): Set do_default for
16380 all non-extern arrays.
16381
16382 * decl.c (grokdeclarator): Complain about 'friend T' for implicit
16383 typenames, too. Downgrade complaint to pedwarn.
16384 (xref_tag): Warn about surprising behavior of 'friend struct T'.
16385 * decl2.c (handle_class_head): Generate a TYPENAME_TYPE for
16386 'class This::Inherited'.
16387
16388 2000-09-12 Mark Mitchell <mark@codesourcery.com>
16389
16390 * decl.c (finish_case_label): Given the LABEL_DECL a
16391 DECL_CONTEXT.
16392
16393 2000-09-12 Gabriel Dos Reis <gdr@codesourcery.com>
16394
16395 * error.c (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE,
16396 TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPDEF,
16397 TFF_DECL_SPECIFIERS, TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
16398 TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
16399 TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS, TFF_SCOPE):
16400 New macros.
16401 (sorry_for_unsupported_tree, print_scope_operator,
16402 print_left_paren, print_right_paren, print_left_bracket,
16403 print_right_bracket, print_whitespace): Likewise.
16404 (aggr_variety): Rename to class_key_or_enum.
16405 (print_type): Rename to print_type_id.
16406 (print_type_specifier_seq, print_simple_type_specifier,
16407 print_elaborated_type_specifier,
16408 print_rest_of_abstract_declarator,
16409 print_parameter_declaration_clause, print_exception_specification,
16410 print_nested_name_specifier, print_template_id,
16411 typedef_original_name, print_template_argument_list_start,
16412 print_template_argument_list_end): New functions.
16413
16414 2000-09-11 Gabriel Dos Reis <gdr@codesourcery.com>
16415
16416 * ir.texi: Add more documentation.
16417
16418 2000-09-11 Mark Mitchell <mark@codesourcery.com>
16419
16420 * cp-tree.h (struct saved_scope): Remove x_function_parms.
16421 (current_function_parms): Don't define.
16422 (struct cp_language_function): Remove parms_stored.
16423 (current_function_just_assigned_this): Don't define.
16424 (current_function_parms_stored): Likewise.
16425 (static_ctors): Declare.
16426 (static_dtors): Likewise.
16427 (SF_EXPAND): Don't define.
16428 (expand_start_early_try_stmts): Remove declaration.
16429 (store_parm_decls): Likewise.
16430 * decl.c (static_ctors): Don't declare.
16431 (static_dtors): Likewise.
16432 (struct binding_level): Remove this_block.
16433 (poplevel): Remove dead code.
16434 (set_block): Likewise.
16435 (mark_binding_level): Don't mark this_block.
16436 (mark_saved_scope): Don't mark x_function_parms.
16437 (init_decl_processing): Don't add current_function_parms as a GC
16438 root.
16439 (check_function_type): Change prototype.
16440 (start_function): Remove RTL-generation code.
16441 (expand_start_early_try_stmts): Remove.
16442 (store_parm_decls): Give it internal linkage. Remove
16443 RTL-generation code.
16444 (finish_function): Remove RTL-generation code.
16445 * decl2.c (static_ctors): Fix formatting.
16446 (static_dtors): Likewise.
16447 * method.c (use_thunk): Don't call store_parm_decls.
16448 (synthesize_method): Likewise.
16449 * optimize.c (maybe_clone_body): Likewise.
16450 * parse.y (fn.def2): Likewise.
16451 (.set_base_init): Likewise.
16452 (nodecls): Likewise.
16453 * pt.c (instantiate_decl): Likewise.
16454 * rtti.c (synthesize_tinfo_fn): Likewise.
16455 * semantics.c (genrtl_try_block): Simplify.
16456 (expand_body): Use genrtl_start_function and
16457 genrtl_finish_function.
16458 (genrtl_start_function): New function.
16459 (genrtl_finish_function): Likewise.
16460
16461 2000-09-11 Nathan Sidwell <nathan@codesourcery.com>
16462
16463 * error.c (cp_tree_printer, case 'P'): Append break.
16464
16465 2000-09-11 Nathan Sidwell <nathan@codesourcery.com>
16466
16467 * cp-tree.h (frob_opname): Declare.
16468 * parse.y (saved_scopes): New static variable.
16469 (cp_parse_init): Adjust.
16470 (do_id): If lastiddecl is NULL, do do_identifier.
16471 (operator): Save scope information.
16472 (unoperator): New reduction. Restore scope information.
16473 (operator_name): Append unoperator. Call frob_opname.
16474 * spew.c (frob_opname): Define.
16475
16476 2000-09-10 Zack Weinberg <zack@wolery.cumb.org>
16477
16478 * decl.c, rtti.c: Include defaults.h if not already included.
16479 Don't define the *_TYPE_SIZE macros.
16480
16481 2000-09-09 Mark Mitchell <mark@codesourcery.com>
16482
16483 * cp-tree.h (push_switch): Change prototype.
16484 (check_cp_case_value): Remove declaration.
16485 (decl_constant_value): Likewise.
16486 * decl.c (struct cp_switch): Add switch_stmt and cases.
16487 (case_compare): New function.
16488 (push_switch): Set switch_stmt. Initialize cases.
16489 (pop_switch): Clean up cases.
16490 (define_case_label): Rename to ...
16491 (finish_case_label): ... this. Do semantic analysis for case
16492 labels here.
16493 (start_function): Correct comment.
16494 * decl2.c (check_cp_case_value): Remove.
16495 * expr.c (do_case): Remove.
16496 * pt.c (tsubst_expr): Adjust call to finish_case_label.
16497 * semantics.c (genrtl_do_poplevel): Remove declaration.
16498 (RECHAIN_STMTS): Remove.
16499 (finish_break_stmt): Use build_break_stmt.
16500 (finish_continue_stmt): Use build_continue_stmt.
16501 (finish_switch_cond): Adjust condition here, rater than in
16502 c_expand_start_case.
16503 (finish_case_label): Remove.
16504 * typeck.c (c_expand_return): Remove.
16505 (c_expand_start_case): Likewise.
16506
16507 2000-09-07 Gabriel Dos Reis <gdr@codesourcery.com>
16508
16509 * ir.texi: Document type nodes.
16510
16511 2000-09-06 Mark Mitchell <mark@codesourcery.com>
16512
16513 * cp-tree.h (init_cp_semantics): Declare.
16514 (genrtl_try_block): Don't declare.
16515 (genrtl_handler): Likewise.
16516 (genrtl_catch_block): Likewise.
16517 (genrtl_ctor_stmt): Likewise.
16518 (genrtl_subobject): Likewise.
16519 (genrtl_do_poplevel): Likewise.
16520 (genrtl_named_return_value): Likewise.
16521 * lex.c (init_parse): Call init_cp_semantics.
16522 * semantics.c (genrtl_try_block): Give it internal linkage.
16523 (genrtl_handler): Likewise.
16524 (genrtl_catch_block): Likewise.
16525 (genrtl_ctor_stmt): Likewise.
16526 (genrtl_subobject): Likewise.
16527 (genrtl_do_poplevel): Likewise.
16528 (genrtl_named_return_value): Likewise.
16529 (lang_expand_stmt): Rename to ...
16530 (cp_expand_stmt): ... this. Only handle C++-specific nodes.
16531 (init_cp_semantics): Define.
16532
16533 * decl.c (initialize_local_var): Remove RTL-generating code.
16534 * semantics.c (genrtl_try_block): Fix formatting.
16535
16536 Move statement-tree facilities from C++ to C front-end.
16537 * cp-tree.h (cp_tree_index): Remove CPTI_VOID_ZERO.
16538 (void_zero_node): Remove.
16539 (stmt_tree): Likewise.
16540 (scope_chain): Adjust.
16541 (language_function): Rename to cp_language_function.
16542 (cp_function_chain): Adjust.
16543 (current_stmt_tree): Remove.
16544 (last_tree): Likewise.
16545 (last_expr_type): Likewise.
16546 (struct lang_decl): Adjust.
16547 (STMT_IS_FULL_EXPR_P): Remove.
16548 (add_tree): Remove.
16549 (begin_stmt_tree): Likewise.
16550 (finish_stmt_tree): Likewise.
16551 (walk_tree_fn): Likewise.
16552 (walk_stmt_tree): Likewise.
16553 * class.c (finish_struct): Replace use of add_tree with add_stmt.
16554 * decl.c (mark_stmt_tree): Adjust type.
16555 (init_decl_processing): Don't build void_zero_node.
16556 (initialize_local_var): Adjust usage of current_stmt_tree.
16557 (finish_enum): Use add_stmt, not add_tree.
16558 (save_function_data): Adjust use of language_function.
16559 (finish_constructor_body): Use add_stmt, not add_tree.
16560 (finish_destructor_body): Likewise.
16561 (push_cp_function_context): Adjust use of language_function.
16562 (pop_cp_function_context): Likewise.
16563 (mark_lang_function): Likewise.
16564 (mark_cp_function_context): Likewise.
16565 * init.c (build_aggr_init): Adjust use of current_stmt_tree.
16566 (build_vec_init): Likewise.
16567 * semantics.c (SET_LAST_STMT): Remove.
16568 (RECHAIN_STMTS): Don't use it.
16569 (stmts_are_full_exprs_p): Adjust use of current_stmt_tree.
16570 (current_stmt_tree): Define.
16571 (add_tree): Remove.
16572 (finish_goto_stmt): Use add_stmt, not add_tree.
16573 (finish_expr_stmt): Likewise.
16574 (begin_if_stmt): Likewise.
16575 (finish_then_clause): Likewise.
16576 (begin_while_stmt): Likewise.
16577 (begin_do_stmt): Likewise.
16578 (finish_return_stmt): Likewise.
16579 (begin_for_stmt): Likewise.
16580 (finish_break_stmt): Likewise.
16581 (finish_continue_stmt): Likewise.
16582 (begin_switch_stmt): Likewise.
16583 (finish_case_label): Likewise.
16584 (begin_try_block): Likewise.
16585 (begin_function_try_block): Likewise.
16586 (begin_handler): Likewise.
16587 (begin_catch_block): Likewise.
16588 (begin_compound_stmt): Likewise.
16589 (begin_asm_stmt): Likewise.
16590 (finish_asm_stmt): Likewise.
16591 (finish_label_stmt): Likewise.
16592 (add_decl_stmt): Likewise.
16593 (finish_subobject): Likewise.
16594 (finish_decl_cleanup): Likewise.
16595 (finish_named_return_value): Likewise.
16596 (setup_vtbl_ptr): Likewise.
16597 (add_scope_stmt): Likewise.
16598 (finish_stmt_expr): Likewise.
16599 (prune_unused_decls): Remove.
16600 (begin_stmt_tree): Likewise.
16601 (finish_stmt_tree): Likewise.
16602 (prep_stmt): Adjust use of current_stmt_tree.
16603 (lang_expand_stmt): Likewise.
16604 * tree.c (statement_code_p): Remove.
16605 (cp_statement_code_p): New function.
16606 (walk_stmt_tree): Remove.
16607 (init_tree): Set lang_statement_code_p.
16608
16609 2000-09-06 Zack Weinberg <zack@wolery.cumb.org>
16610
16611 Integrated preprocessor.
16612
16613 * Make-lang.in, Makefile.in: Remove all references to input.c,
16614 gxx.gperf, and hash.h. Add ../c-lex.o to C_OBJS.
16615 * gxx.gperf, hash.h, input.c: Delete.
16616 * lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
16617 initialized properly.
16618
16619 * class.c (fixup_pending_inline): Take a tree, not a
16620 struct pending_inline *. All callers changed.
16621 (init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
16622 RID_PROTECTED entries in ridpointers[] array here.
16623 * decl.c (duplicate_decls): Do not refer to struct
16624 pending_inline.
16625 (record_builtin_type, init_decl_processing): Use RID_MAX not
16626 CP_RID_MAX.
16627 (grokdeclarator): Use C_IS_RESERVED_WORD.
16628 * decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
16629 cpplib.
16630 (grok_x_components): Do not inspect pending_inlines chain.
16631
16632 * cp-tree.h (struct lang_identifier): Add rid_code entry.
16633 (C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
16634 (flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
16635 (DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
16636 TIME_IDENTIFIER_FILEINFO): Kill.
16637 Update prototypes.
16638 * lex.h: Expunge cp_rid. Rewrite RIDBIT macros to use just a
16639 single 32-bit word.
16640 * parse.y: Call do_pending_inlines unconditionally.
16641 reinit_parse_for_method is now snarf_method. fn.defpen is no
16642 longer necessary. Remove unnecessary <itype> annotation on
16643 SCOPE. Do not refer to end_of_file or struct pending_inline.
16644 * semantics.c (begin_inline_definitions): Call
16645 do_pending_inlines unconditionally.
16646
16647 * lex.c: Remove all code now shared with C front end.
16648 Initialize cpplib properly if USE_CPPLIB. Put reserved words
16649 into the get_identifier table. Rewrite pragma handling to
16650 work with the registry. Move code to save tokens for later
16651 processing to spew.c.
16652
16653 * spew.c: Rewrite everything in terms of token streams instead
16654 of text. Move routines here from lex.c / input.c as
16655 appropriate. GC-mark trees hanging off the pending inlines
16656 chain.
16657
16658 2000-09-06 Mark Mitchell <mark@codesourcery.com>
16659
16660 * NEWS: Mention that the named return value extension has been
16661 deprecated.
16662 * cp-tree.h (original_result_rtx): Define.
16663 (TREE_REFERENCE_EXPR): Remove.
16664 (DECL_VPARENT): Likewise.
16665 (pushdecl_nonclass_level): Likewise.
16666 (store_return_init): Likewise.
16667 (reinit_lang_specific): Likewise.
16668 (genrtl_named_return_value): Change prototype.
16669 * decl.c (original_result_rtx): Remove.
16670 (cp_finish_decl): Don't build DECL_STMTs for RESULT_DECLs.
16671 Do not generate RTL for local variables here.
16672 (store_return_init): Remove.
16673 * semantics.c (genrtl_named_return_value): Simplify. Fold in
16674 store_return_init.
16675 (finish_named_return_value): Adjust accordingly. Warn that this
16676 extension is deprecated.
16677 (lang_expand_stmt): Adjust call to genrtl_named_return_value.
16678
16679 2000-09-06 Nathan Sidwell <nathan@codesourcery.com>
16680
16681 * pt.c (type_unification_real): Replace switch with if.
16682 (unify): Tsubst non-type parms before comparing.
16683
16684 2000-09-06 Nathan Sidwell <nathan@codesourcery.com>
16685
16686 * error.c (dump_typename): New function, broken out of ...
16687 (dump_type): ... here. Use it.
16688 * typeck.c (same_type_p): Use cp_tree_equal for TYPENAME_TYPE.
16689
16690 2000-09-06 Nathan Sidwell <nathan@codesourcery.com>
16691
16692 * init.c (build_offset_ref): Deal with namespace scoped
16693 TEMPLATE_ID_EXPRs.
16694
16695 2000-09-06 Nathan Sidwell <nathan@codesourcery.com>
16696
16697 * class.c (resolve_address_of_overloaded_function): Add
16698 explanation message.
16699 * decl.c (define_case_label): Reformat explanation.
16700 * decl2.c (finish_static_data_member_decl): Likewise.
16701 (grokfield): Likewise.
16702 * friend.c (do_friend): Likewise.
16703
16704 2000-09-05 Zack Weinberg <zack@wolery.cumb.org>
16705
16706 * tree.c (walk_tree): Expose tail recursion.
16707 (walk_stmt_tree): New function.
16708 * cp-tree.h: Prototype walk_stmt_tree.
16709 * semantics.c (prune_unused_decls): Operate on SCOPE_STMTs not
16710 the BLOCKs directly. If a BLOCK has no variables after
16711 pruning, discard it.
16712 (finish_stmt_tree): Use walk_stmt_tree. No need to save and
16713 restore the line number.
16714
16715 2000-09-05 Mark Mitchell <mark@codesourcery.com>
16716
16717 * Makefile.in (CXX_TREE_H): Add dependency on HTAB_H.
16718 (pt.o): Remove dependency on HTAB_H.
16719 * cp-tree.h: Include hashtab.h.
16720 (walk_tree): Change prototype.
16721 (walk_tree_without_duplicates): New function.
16722 * decl.c (check_default_argument): Use it.
16723 * optimize.c (remap_decl): Adjust calls to walk_tree.
16724 (copy_body): Likewise.
16725 (expand_calls_inline): Likewise.
16726 (calls_setjmp_p): Use walk_tree_without_duplicates.
16727 * pt.c: Don't include hashtab.h.
16728 (for_each_template_parm): Use walk_tree_without_duplicates.
16729 * semantics.c (finish-stmt_tree): Likewise.
16730 (expand_body): Likewise.
16731 * tree.c (walk_tree): Add additional parameter.
16732 (walk_tree_without_duplicates): New function.
16733 (count_trees): Use it.
16734 (verify_stmt_tree): Adjust call to walk_tree.
16735 (find_tree): Use walk_tree_without_duplicates.
16736 (no_linkage_check): Likewise.
16737 (break_out_target_exprs): Adjust call to walk_tree.
16738 (cp_unsave): Likewise.
16739
16740 2000-09-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
16741
16742 * cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
16743 (TEMPLATE_TEMPLATE_PARM): Adjust comment.
16744 * cp-tree.h (TYPE_BINFO): Adjust comment.
16745 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
16746 (TEMPLATE_TYPE_PARM_INDEX): Likewise.
16747 (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
16748 (TYPE_TEMPLATE_INFO): Likewise.
16749 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
16750 * class.c (push_nested_class): Likewise.
16751 * decl.c (lookup_name_real): Likewise.
16752 (grokdeclarator): Likewise.
16753 (grok_op_properties): Likewise.
16754 (xref_tag): Likewise.
16755 (xref_basetypes): Likewise.
16756 * decl2.c (constructor_name_full): Likewise.
16757 (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
16758 (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
16759 * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
16760 (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
16761 (dump_type_suffix): Likewise.
16762 * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
16763 instead.
16764 (get_aggr_from_typedef): Likewise.
16765 * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
16766 (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
16767 (write_template_parm): Likewise.
16768 (write_template_template_parm): Check tree code instead of
16769 using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
16770 * method.c (build_overload_nested_name): Add
16771 BOUND_TEMPLATE_TEMPLATE_PARM.
16772 (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
16773 * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
16774 * pt.c (convert_template_argument): Check tree code instead of
16775 using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
16776 (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
16777 (for_each_template_parm): Adjust comment.
16778 (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM. Reorganize.
16779 (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
16780 (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM. Reorganize. Use
16781 template_args_equal to compare template template parameter cases.
16782 * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
16783 * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
16784 instead.
16785 * tree.c (copy_template_template_parm): Decide whether to create
16786 a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
16787 (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
16788 (copy_tree_r): Likewise.
16789 * typeck.c (comptypes): Likewise. Check tree code instead of
16790 using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
16791
16792 2000-09-04 Mark Elbrecht <snowball3@bigfoot.com>
16793
16794 * decl.c (finish_function): Move the code for handling functions
16795 marked with the constructor and destructor attributes inside the
16796 expand_p block.
16797
16798 2000-09-04 Nathan Sidwell <nathan@codesourcery.com>
16799
16800 * init.c (resolve_offset_ref): Deal with TEMPLATE_ID_EXPR.
16801
16802 2000-09-04 Nathan Sidwell <nathan@codesourcery.com>
16803
16804 * pt.c (lookup_template_class): Remove abort.
16805 * tree.c (get_type_decl): Allow error_mark_node.
16806
16807 2000-09-04 Nathan Sidwell <nathan@codesourcery.com>
16808
16809 * decl2.c (arg_assoc): Deal with COMPONENT_REFs inside
16810 TEMPLATE_ID_EXPRs.
16811
16812 2000-09-03 Mark Mitchell <mark@codesourcery.com>
16813
16814 * operators.def (ALIGNOF_EXPR, MAX_EXPR, MIN_EXPR): Change
16815 new ABI mangling.
16816
16817 2000-09-01 Nathan Sidwell <nathan@codesourcery.com>
16818
16819 * parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify
16820 union tag mismatch error reporting.
16821
16822 2000-09-01 Nathan Sidwell <nathan@codesourcery.com>
16823
16824 * call.c (build_scoped_method_call): Check it is not a namespace.
16825
16826 2000-08-30 Jason Merrill <jason@redhat.com>
16827
16828 * cp-tree.h (LOCAL_CLASS_P): Use decl_function_context.
16829
16830 * tree.c (bot_manip): Check TREE_CONSTANT rather than
16831 !TREE_SIDE_EFFECTS. Call break_out_target_exprs and
16832 build_target_expr_with_type for the non-AGGR_INIT_EXPR case.
16833
16834 * decl.c (start_function): Always call make_function_rtl.
16835
16836 2000-08-29 Zack Weinberg <zack@wolery.cumb.org>
16837
16838 * semantics.c (prune_unused_decls): New function.
16839 (finish_stmt_tree): Call it via walk_tree.
16840
16841 2000-08-29 Zack Weinberg <zack@wolery.cumb.org>
16842
16843 * class.c (build_secondary_vtable): Constify a char *.
16844 * decl.c (init_decl_processing): Initialize function_id_node,
16845 pretty_function_id_node, and func_id_node.
16846 * input.c (struct input_source): Constify 'str'.
16847 (feed_input): Constify first argument.
16848 * mangle.c (write_identifier): Constify argument.
16849 * pt.c (mangle_class_name_for_template): Constify argument.
16850
16851 2000-08-29 Mark Mitchell <mark@codesourcery.com>
16852
16853 * typeck.c (mark_addressable): Remove code that pokes around in
16854 RTL.
16855
16856 2000-08-28 Jason Merrill <jason@redhat.com>
16857
16858 * lex.c (file_name_nondirectory): Move to toplev.c.
16859
16860 * cp-tree.h (LOCAL_CLASS_P): New macro.
16861 * class.c (finish_struct_1): Use it.
16862
16863 2000-08-27 Alex Samuel <samuel@codesourcery.com>
16864
16865 * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
16866 (write_encoding): Pass another argument to write_name.
16867 (write_name): Add ignore_local_scope parameter. Fix handling of
16868 local names.
16869 (write_nested_name): Use write_unqualified_name.
16870 (write_prefix): Likewise. Skip out on FUNCTION_DECLs.
16871 (write_template_prefix): Use write_unqualified_name.
16872 (write_component): Remove.
16873 (write_local_name): Add parameter. Use direct local entity to
16874 discriminator calculation.
16875 (write_class_enum_type): Pass another argument to write_name.
16876 (write_template_template_arg): Likewise.
16877 (make_guard_variable): Likewise.
16878
16879 2000-08-27 Jason Merrill <jason@redhat.com>
16880
16881 * decl.c (pushdecl): Matching decls for local externs are found in
16882 the current level. Propagate linkage information from previous
16883 declarations.
16884
16885 2000-08-26 Gabriel Dos Reis <gdr@codesourcery.com>
16886
16887 * ir.texi (Expressions): Fix typo.
16888
16889 2000-08-25 Greg McGary <greg@mcgary.org>
16890
16891 * tree.c (init_tree): Use ARRAY_SIZE.
16892
16893 2000-08-25 Gabriel Dos Reis <gdr@codesourcery.com>
16894
16895 * error.c (cp_tree_printer): Rework.
16896
16897 2000-08-25 Mark Mitchell <mark@codesourcery.com>
16898
16899 * Make-lang.in (CXX_LIB2FUNCS): Remove cp-demangle.o and
16900 dyn-string.o.
16901 (CXX_LIB2SRCS): Remove cp-demangle.c and dyn-string.c.
16902 (cp-demangle.o): Remove target.
16903 (dyn-string.o): Likewise.
16904
16905 * decl.c (grokfndecl): Require that `main' return an `int'.
16906 * mangle.c (write_encoding): Don't mangle return types for
16907 conversion functions.
16908
16909 2000-08-25 Gabriel Dos Reis <gdr@codesourcery.com>
16910
16911 * error.c (tree_formatting_info): New data type.
16912 (tree_being_formatted): New macro.
16913 (tree_formatting_flags): Likewise.
16914 (put_whitespace): Likewise.
16915 (print_tree_identifier): Likewise.
16916 (print_identifier): Likewise.
16917 (cp_tree_printer, print_function_argument_list, print_declaration,
16918 print_expression, print_function_declaration,
16919 print_function_parameter, print_type, print_cv_qualifier): New
16920 functions.
16921 (init_error): Initialize lang_printer.
16922
16923 2000-08-24 Jason Merrill <jason@redhat.com>
16924
16925 * typeck.c (build_ptrmemfunc): Just reinterpret if there's no
16926 adjustment necessary.
16927
16928 2000-08-24 Greg McGary <greg@mcgary.org>
16929
16930 * cp-tree.h (MAIN_NAME_P): Remove macro.
16931
16932 2000-08-24 Gabriel Dos Reis <gdr@codesourcery.com>
16933
16934 * error.c (print_instantiation_context): Don't forget to flush the
16935 buffer.
16936
16937 2000-08-23 Jason Merrill <jason@redhat.com>
16938
16939 * typeck.c (build_ptrmemfunc): Save the input pmf.
16940
16941 * method.c (process_modifiers): Use same_type_p.
16942
16943 2000-08-23 Mark Mitchell <mark@codesourcery.com>
16944
16945 * cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
16946 * mangle.c (write_function_type): Change prototype.
16947 (write_encoding): Don't mangle return types for
16948 constructors or destructors.
16949 (write_type): Adjust call to write_function_type.
16950 * pt.c (instantiate_template): Instantiate alternate entry points
16951 when instantiating the main function.
16952
16953 2000-08-23 Gabriel Dos Reis <gdr@codesourcery.com>
16954
16955 * error.c (cp_print_error_function): Don't use embedded '\n' in
16956 output_printf.
16957
16958 2000-08-23 Gabriel Dos Reis <gdr@codesourcery.com>
16959
16960 * decl.c (init_decl_processing): Remove bogus initialization.
16961 * error.c (lang_print_error_function): Restore here.
16962 (init_error): Initialize print_error_function.
16963
16964 2000-08-22 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
16965
16966 * decl2.c (arg_assoc): Revert my 2000-08-11 change.
16967
16968 2000-08-22 Gabriel Dos Reis <gdr@codesourcery.com>
16969
16970 * Makefile.in (error.o): Depends on diagnostic.h
16971
16972 * cp-tree.h (problematic_instantiation_changed,
16973 record_last_problematic_instantiation, current_instantiation,
16974 print_instantiation_context): Declare.
16975 (maybe_print_template_context): Remove.
16976
16977 * decl.c (init_decl_processing): Set print_error_function to NULL.
16978 (lang_print_error_function): Remove, since we're using a new
16979 machinery.
16980
16981 * error.c: #include diagnostic.h
16982 (function_category): New function.
16983 (cp_diagnostic_starter): Likewise.
16984 (cp_diagnostic_finalizer): Likewise.
16985 (cp_print_error_function): Likewise.
16986 (maybe_print_instantiation_context): Likewise.
16987 (print_instantiation_full_context): Likewise.
16988 (print_instantiation_partial_context): Likewise.
16989 (print_instantiation_context): Define.
16990 (init_error): Initialize diagnostic pager and finalizer.
16991
16992 * pt.c (problematic_instantiation_changed): Define.
16993 (record_last_problematic_instantiation): Likewise.
16994 (current_instantiation): Likewise.
16995 (maybe_print_template_context): Remove.
16996 (print_template_context): Likewise.
16997 (current_tinst_level): Make static to reflect Brendan Kehoe's
16998 change of 1995-04-13.
16999 (push_tinst_level): Call print_instantiation_context.
17000
17001 2000-08-21 Nix <nix@esperi.demon.co.uk>
17002
17003 * lang-specs.h: Do not process -o or run the assembler if
17004 -fsyntax-only.
17005
17006 2000-08-21 Joseph S. Myers <jsm28@cam.ac.uk>
17007
17008 * decl.c (flag_hosted, flag_noniso_default_format_attributes): New
17009 variables.
17010 * decl2.c (lang_decode_option): Disable gettext attributes for
17011 -ansi.
17012
17013 2000-08-21 Gabriel Dos Reis <gdr@codesourcery.com>
17014
17015 * lex.c (lang_init_options): Default diagnostic message maximum
17016 length to 80, when line-wrapping.
17017
17018 2000-08-20 Mark Mitchell <mark@codesourcery.com>
17019
17020 * class.c (build_vtbl_initializer): Clear the entire
17021 vtbl_init_data. Start keeping track of the functions for which we
17022 have created vcall offsets here.
17023 (dfs_build_vcall_offset_vtbl_entries): Remove.
17024 (build_vcall_offset_vtbl_entries): Reimplement.
17025 (add_vcall_offset_vtbl_entries_r): New function.
17026 (add_vcall_offset_vtbl_entries_1): Likewise. Tweak logic for
17027 computing when vcall offsets are necessary.
17028
17029 2000-08-18 Nathan Sidwell <nathan@codesourcery.com>
17030
17031 * decl.c (member_function_or_else): Use cp_error ... %T.
17032 (grokdeclarator): Likewise.
17033 (start_method): Likewise.
17034 * friend.c (make_friend_class): Use cp_pedwarn ... %T.
17035
17036 2000-08-18 Nathan Sidwell <nathan@codesourcery.com>
17037
17038 * decl2.c (grokfield): Set CLASSTYPE_GOT_SEMICOLON on class
17039 TYPE_DECLs.
17040
17041 2000-08-18 Nathan Sidwell <nathan@codesourcery.com>
17042
17043 * cp-tree.h (PTRMEM_OK_P): New macro.
17044 (itf_ptrmem_ok): New enumeration value.
17045 * class.c (resolve_address_of_overloaded_function): Add PTRMEM
17046 argument. Diagnose implicit pointer to member.
17047 (instantiate_type): Don't diagnose implicit pointer to member
17048 here. Pass itf_ptrmem_ok if ok. Adjust calls to
17049 resolve_address_of_overloaded_function.
17050 * init.c (build_offset_ref): Set PTRMEM_OK_P.
17051 (resolve_offset_ref): Don't diagnose implicit pointer to member here.
17052 * semantics.c (finish_parenthesized_expr): Clear OFFSET_REFs here.
17053 * typeck.c (build_x_unary_op): Calculate PTRMEM_OK_P.
17054 (build_unary_op): Deal with single non-static member in
17055 microsoft-land.
17056
17057 2000-08-18 Nathan Sidwell <nathan@codesourcery.com>
17058
17059 * decl2.c (arg_assoc_type): Cope with TYPENAME_TYPE.
17060
17061 2000-08-18 Nathan Sidwell <nathan@codesourcery.com>
17062
17063 * cp-tree.h (enum_name_string): Remove prototype.
17064 (report_case_error): Remove prototype.
17065 * cp/typeck2.c (enum_name_string): Remove.
17066 (report_case_error): Remove.
17067 * error.c (dump_expr): Deal with enum values directly.
17068 Correctly negate integer constant.
17069
17070 2000-08-17 Nathan Sidwell <nathan@codesourcery.com>
17071
17072 * inc/cxxabi.h (__cxa_vec_new2, __cxa_vec_new3): Declare.
17073 (__cxa_vec_delete2, __cxa_vec_delete3): Declare.
17074 * vec.cc (__cxa_vec_new2, __cxa_vec_new3): Implement.
17075 (__cxa_vec_delete2, __cxa_vec_delete3): Implement.
17076 (__cxa_vec_new): Use __cxa_vec_new2.
17077 (__cxa_vec_delete): Use __cxa_vec_delete2.
17078
17079 2000-08-17 Nathan Sidwell <nathan@codesourcery.com>
17080
17081 * vec.cc (__cxa_vec_new): Set "C" linkage.
17082 (__cxa_vec_ctor): Likewise.
17083 (__cxa_vec_cctor): Likewise.
17084 (__cxa_vec_dtor): Likewise.
17085 (__cxa_vec_delete): Likewise.
17086 * inc/cxxabi.h (__cxa_vec_new): Set "C" linkage.
17087 (__cxa_vec_ctor): Likewise.
17088 (__cxa_vec_cctor): Likewise.
17089 (__cxa_vec_dtor): Likewise.
17090 (__cxa_vec_delete): Likewise.
17091
17092 2000-08-17 Nathan Sidwell <nathan@codesourcery.com>
17093
17094 * class.c (instantiate_type): Reinstate local variable
17095 deleted in previous change.
17096
17097 * cvt.c (cp_convert_to_pointer): Pass itf_complain, not
17098 itf_no_attributes.
17099
17100 2000-08-17 Nathan Sidwell <nathan@codesourcery.com>
17101
17102 * cp-tree.h (instantiate_type_flags): New enumeration.
17103 (instantiate_type): Change parameter.
17104 * class.c (instantiate_type): Adjust prototype. Adjust.
17105 * call.c (standard_conversion): Adjust instantiate_type call.
17106 (reference_binding): Likewise.
17107 (build_op_delete_call): Likewise.
17108 (convert_like_real): Likewise.
17109 * cvt.c (cp_convert_to_pointer): Likewise.
17110 (convert_to_reference): Likewise.
17111 * pt.c (convert_nontype_argument): Likewise.
17112 * typeck.c (build_binary_op): Likewise.
17113 (build_ptrmemfunc): Likewise.
17114 (convert_for_assignment): Likewise.
17115
17116 2000-08-17 Nathan Sidwell <nathan@codesourcery.com>
17117
17118 * cp-tree.h (CPTR_AGGR_TAG): New global tree node.
17119 (current_aggr): Define.
17120 * decl.c (grokdeclarator): Make sure a friend class is an
17121 elaborated type specifier.
17122 * parse.y (current_aggr): Remove static definition.
17123 (cp_parse_init): Adjust.
17124 (structsp): Clear and restore current_aggr.
17125 (component_decl_list): Clear current_aggr.
17126
17127 * error.c (dump_type, case TYPENAME_TYPE): Don't emit the
17128 aggregate tag on the typename's context.
17129
17130 * pt.c (tsubst_friend_class): Return error_mark_node, if
17131 parms becomes NULL.
17132 (instantiate_class_template): Ignore error_mark_node friend types.
17133
17134 2000-08-14 Nathan Sidwell <nathan@codesourcery.com>
17135
17136 * cvt.c (warn_ref_binding): New static function, broken out of ...
17137 (convert_to_reference): ... here. Use it.
17138
17139 2000-08-11 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
17140
17141 * parse.y (template_arg): Add rule for template qualified with
17142 global scope.
17143
17144 2000-08-11 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
17145
17146 * decl2.c (add_function): Reorganize.
17147 (arg_assoc): Do not consider function template decls.
17148
17149 2000-08-11 Jason Merrill <jason@redhat.com>
17150
17151 * decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
17152 looking inside.
17153
17154 2000-08-11 Nathan Sidwell <nathan@codesourcery.com>
17155
17156 * cp-tree.h (resolve_scope_to_name): Remove unused prototype.
17157 (lookup_nested_tag): Likewise.
17158
17159 * decl2.c (grokfield): Fix comment to reflect many types of _DECLs
17160 can be produced.
17161
17162 2000-08-11 Nathan Sidwell <nathan@codesourcery.com>
17163
17164 * parse.y (named_complex_class_head_sans_basetype): Remove
17165 always true if.
17166
17167 2000-08-11 Nathan Sidwell <nathan@codesourcery.com>
17168
17169 * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build
17170 explicit TEMPLATE_ID_EXPR args.
17171 (build_expr_from_tree, case CALL_EXPR): Likewise.
17172
17173 2000-08-11 Nathan Sidwell <nathan@codesourcery.com>
17174
17175 * decl.c (check_tag_decl): Diagnose typename's which don't
17176 declare anything.
17177
17178 2000-08-10 Nathan Sidwell <nathan@codesourcery.com>
17179
17180 * init.c (build_aggr_init): Reject bogus array initializers
17181 early.
17182
17183 2000-08-09 Nathan Sidwell <nathan@codesourcery.com>
17184
17185 * rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi
17186 runtime.
17187 * cp/tinfo.cc (__dynamic_cast): Likewise.
17188 * cp/inc/cxxabi.h (__dynamic_cast): Likewise.
17189
17190 2000-08-09 Nathan Sidwell <nathan@codesourcery.com>
17191
17192 * cvt.c (convert_to_pointer_force): Fix error message when
17193 attempting to cast from ambiguous base.
17194
17195 2000-08-08 Jason Merrill <jason@redhat.com>
17196
17197 * pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
17198 (tsubst_template_arg_vector): Likewise.
17199
17200 * decl2.c (build_anon_union_vars): Choose the largest field; don't
17201 assume that one will be as large as the union.
17202
17203 2000-08-07 Kazu Hirata <kazu@hxi.com>
17204
17205 * cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
17206 * decl.c (pop_labels): Likewise.
17207
17208 2000-08-04 Jeffrey Oldham <oldham@codesourcery.com>
17209
17210 * inc/cxxabi.h (__pbase_type_info): Changed member names to match
17211 specifications.
17212 (__pointer_to_member_type_info): Likewise.
17213 (__base_class_info): Likewise.
17214 (__class_type_info): Likewise.
17215 (__si_class_type_info): Likewise.
17216 (__vmi_class_type_info): Likewise.
17217 * tinfo.cc (__si_class_type_info::__do_find_public_src):
17218 Changed member names to match specifications.
17219 (__vmi_class_type_info::__do_find_public_src): Likewise.
17220 (__si_class_type_info::__do_dyncast): Likewise.
17221 (__vmi_class_type_info::__do_dyncast): Likewise.
17222 (__si_class_type_info::__do_upcast): Likewise.
17223 (__vmi_class_type_info::__do_upcast): Likewise.
17224 * tinfo2.cc (__pbase_type_info::__do_catch): Likewise.
17225 (__pbase_type_info::__pointer_catch): Likewise.
17226 (__pointer_type_info::__pointer_catch): Likewise.
17227 (__pointer_to_member_type_info::__pointer_catch): Likewise.
17228
17229 2000-08-04 Zack Weinberg <zack@wolery.cumb.org>
17230
17231 * Make-lang.in (cc1plus): Depend on $(BACKEND), not stamp-objlist.
17232 * Makefile.in: Add C_OBJS, BACKEND; delete OBJS, OBJDEPS.
17233 (cc1plus): Link with $(BACKEND) and $(C_OBJS).
17234
17235 2000-08-04 Mark Mitchell <mark@codesourcery.com>
17236
17237 * cp-tree.h (add_method): Change prototype.
17238 * class.c (add_method): Remove FIELDS parameter. Add ERROR_P.
17239 Don't double the size of the method vector in the error case.
17240 (handle_using_decl): Adjust call to add_method.
17241 (add_implicitly_declared_members): Likewise.
17242 (clone_function_decl): Likewise.
17243 * decl2.c (check_classfn): Likewise.
17244 * semantics.c (finish_member_declaration): Likewise.
17245
17246 2000-08-04 Joseph S. Myers <jsm28@cam.ac.uk>
17247
17248 * decl.c (flag_isoc94): New variable.
17249
17250 2000-08-02 Jason Merrill <jason@redhat.com>
17251
17252 * pt.c (do_type_instantiation): Add complain parm; don't complain
17253 if called recursively.
17254 * cp-tree.h, parse.y: Adjust.
17255
17256 2000-08-02 Zack Weinberg <zack@wolery.cumb.org>
17257
17258 * decl2.c: Silently ignore -Wstrict-prototypes; warn about
17259 -Wno-strict-prototypes.
17260
17261 * g++spec.c: Adjust type of second argument to
17262 lang_specific_driver, and update code as necessary.
17263
17264 * cp-tree.h: Don't prototype min_precision here.
17265 (my_friendly_assert): Cast expression to void.
17266 * semantics.c (do_poplevel): Initialize scope_stmts.
17267
17268 2000-08-02 Mark Mitchell <mark@codesourcery.com>
17269
17270 * cp-tree.h (DECL_NEEDED_P): Tweak.
17271
17272 2000-07-28 Jason Merrill <jason@redhat.com>
17273
17274 * lang-specs.h: Use %i in rule for .ii files.
17275
17276 2000-07-31 Zack Weinberg <zack@wolery.cumb.org>
17277
17278 * lang-specs.h: Rename cpp to cpp0 and/or tradcpp to tradcpp0.
17279
17280 2000-07-30 Mark Mitchell <mark@codesourcery.com>
17281
17282 Allow indirect primary bases.
17283 * cp-tree.h (struct lang_type): Remove vfield_parent. Add
17284 primary_base.
17285 (CLASSTYPE_VFIELD_PARENT): Remove.
17286 (CLASSTYPE_PRIMARY_BINFO): Reimplement.
17287 (BINFO_PRIMARY_BINFO): Remove.
17288 (CLASSTYPE_HAS_PRIMARY_BASE_P): Reimplement.
17289 (BINFO_VBASE_PRIMARY_P): Likewise.
17290 (BINFO_PRIMARY_BASE_OF): New macro.
17291 (BINFO_INDIRECT_PRIMARY_P): Likewise.
17292 (get_primary_binfo): New function.
17293 * decl.c (lang_mark_tree): Make lang_type::primary_base.
17294 * class.c (vcall_offset_data_s): Rename to ...
17295 (vtbl_init_data_s): ... this. Rename primary_p to primary_vtbl_p,
17296 and add ctor_vtbl_p.
17297 (get_derived_offset): Use get_primary_binfo.
17298 (dfs_mark_primary_bases): Adjust handling of virtual primary
17299 bases.
17300 (mark_primary_bases): Likewise.
17301 (set_primary_base): Take a binfo, not an integer, as a
17302 representation of the primary base.
17303 (indirect_primary_base_p): Remove.
17304 (determine_primary_base): Adjust for indirect primary bases.
17305 (dfs_find_final_overrider): Fix typo in coment.
17306 (update_vtable_entry_for_fn): Use get_primary_binfo.
17307 (layout_nonempty_base_or_field): Tweak.
17308 (build_base_fields): Adjust for new primary base semantics.
17309 (dfs_propagate_binfo_offsets): Remove.
17310 (propagate_binfo_offsets): Rewrite.
17311 (dfs_set_offset_for_shared_vbases): Remove.
17312 (layout_virtual_bases): Don't use it.
17313 (layout_class_type): Set CLASSTYPE_SIZE correctly under the new
17314 ABI.
17315 (finish_struct_1): Set CLASSTYPE_PRIMARY_BINFO, not
17316 CLASSTYPE_VFIELD_PARENT.
17317 (dfs_get_primary_binfo): New function.
17318 (get_primary_binfo): Likewise.
17319 (dump_class_hierarchy_r): Tweak printing of primary bases.
17320 (build_vtbl_initializer): Fix typo in comments. Use
17321 vtbl_init_data.
17322 (build_vcall_and_vbase_vtbl_entries): Likewise.
17323 (build_vbaes_offset_vtbl_entries): Likewise.
17324 (dfs_build_vcall_offset_vtbl_entries): Adjust setting of
17325 BV_VCALL_INDEX to handle indirect primary bases.
17326 (build_vcall_offset_vtbl_entries): Use vtbl_init_data.
17327 (build_rtti_vtbl_entries): Likewise.
17328 * search.c (get_shared_vbase_if_not_primary): Tweak.
17329 (find_vbase_instance): Likewise.
17330 (binfo_for_vtable): Simplify.
17331 * tree.c (unshare_base_binfos): Clear BINFO_PRIMARY_BASE_OF.
17332 (make_binfo): Make it have 11 entries.
17333
17334 2000-07-30 Alex Samuel <samuel@codesourcery.com>
17335
17336 * mangle.c (DECL_TEMPLATE_ID_P): Remove.
17337 (CLASSTYEP_TEMPLATE_ID_P): Check template info, and context when
17338 ascertaining primaryness.
17339 (G): Remove template_args.
17340 (decl_is_template_id): New function.
17341 (write_encoding): Use decl_is_template_id.
17342 (write_name): Likewise. Handle type_decls. Get main variant of
17343 type decls.
17344 (write_nested_name): Likewise.
17345 (write_prefix): Likewise.
17346 (write_template_prefix): Likewise.
17347 (write_special_name_constructor): Remove defunct production from
17348 comment.
17349 (write_bare_function_type): Remove comment about absent parameter.
17350 (write_template_template_arg): Add missing grammar production to
17351 comment.
17352
17353 2000-07-27 Jason Merrill <jason@redhat.com>
17354
17355 * decl.c (duplicate_decls): If common_type produces a non-typedef
17356 type for a typedef, just use the old type.
17357
17358 2000-07-27 Mark Mitchell <mark@codesourcery.com>
17359
17360 * cp-tree.h (function_depth): Declare.
17361 (verify_stmt_tree): Likewise.
17362 (find_tree): Likewise.
17363 * decl.c (function_depth): Give it external linkage.
17364 * optimize.c (optimize_function): Increment and decrement it.
17365 * tree.c (verify_stmt_tree_r): New function.
17366 (verify_stmt_tree): Likewise.
17367 (find_tree_r): Likewise.
17368 (find_tree): Likewise.
17369
17370 2000-07-27 Jason Merrill <jason@redhat.com>
17371
17372 * pt.c (for_each_template_parm_r, case RECORD_TYPE): Use
17373 TYPE_PTRMEMFUNC_P.
17374 * cp-tree.h (TYPE_TEMPLATE_INFO): Check for TYPE_LANG_SPECIFIC.
17375
17376 2000-07-26 Mark Mitchell <mark@codesourcery.com>
17377
17378 * decl.c (start_cleanup_fn): Mark the function as `inline'.
17379 * decl2.c (get_guard): Call cp_finish_decl, not
17380 rest_of_decl_compilation, for local guards.
17381 * lex.c (do_identifier): Remove unused variable.
17382
17383 2000-07-26 Marc Espie <espie@cvs.openbsd.org>
17384
17385 * parse.y: Add missing ';'.
17386
17387 2000-07-26 Mark Mitchell <mark@codesourcery.com>
17388
17389 * parse.y (empty_parms): Use `()', not `(...)', when in the scope
17390 of `extern "C++"'.
17391
17392 2000-07-25 Nathan Sidwell <nathan@codesourcery.com>
17393
17394 Kill strict_prototype. Backwards compatibility only for
17395 non NO_IMPLICIT_EXTERN_C systems.
17396 * cp-tree.h (flag_strict_prototype): Remove.
17397 (strict_prototype): Remove.
17398 (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
17399 * decl.c (maybe_push_to_top_level): Adjust.
17400 (pop_from_top_level): Adjust.
17401 (decls_match): Only allow sloppy parm matching for ancient
17402 system headers.
17403 (init_decl_processing): Adjust.
17404 (grokdeclarator): Adjust.
17405 * decl2.c (flag_strict_prototype): Remove.
17406 (strict_prototype): Remove.
17407 (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
17408 (lang_f_options): Remove "strict-prototype".
17409 (unsupported-options): Add "strict-prototype".
17410 * lex.c (do_identifier): Adjust.
17411 (do_scoped_id): Adjust.
17412 * parse.y (empty_parms): Adjust.
17413 * class.c (push_lang_context): Adjust.
17414 (pop_lang_context): Adjust.
17415 * typeck.c (comp_target_parms): Adjust.
17416
17417 2000-07-25 Nathan Sidwell <nathan@codesourcery.com>
17418
17419 * decl.c (poplevel): Deal with anonymous variables at for scope.
17420 (maybe_inject_for_scope_var): Likewise.
17421
17422 2000-07-25 Zack Weinberg <zack@wolery.cumb.org>
17423
17424 * decl.c: Remove all signal handling code, now done in toplev.c.
17425
17426 2000-07-23 Mark Mitchell <mark@codesourcery.com>
17427
17428 * decl.c (make_rtl_for_nonlocal_decl): Rework.
17429
17430 * pt.c (lookup_template_class): Ensure that TYPE_CONTEXT is set
17431 correctly.
17432
17433 2000-07-20 Zack Weinberg <zack@wolery.cumb.org>
17434
17435 * cp-tree.h: Use __FUNCTION__ not __PRETTY_FUNCTION__.
17436 Define my_friendly_assert and my_friendly_abort as macros
17437 which may call friendly_abort. Prototype friendly abort, not
17438 my_friendly_abort or my_friendly_assert.
17439 * decl.c (signal_catch): Report the signal caught in the error
17440 message. Call fatal directly.
17441 * typeck2.c (ack, my_friendly_assert): Delete.
17442 (my_friendly_abort): Rename to friendly_abort. Expect file,
17443 line, and function parameters. Report the abort code, then
17444 call fancy_abort. Do not mask an abort if errors have
17445 already occurred.
17446
17447 2000-07-18 Nathan Sidwell <nathan@codesourcery.com>
17448
17449 * typeck.c (comp_target_parms): Remove obsolete parameter.
17450 (comp_target_types): Adjust.
17451
17452 2000-07-17 Jason Merrill <jason@redhat.com>
17453
17454 * typeck.c (mark_addressable): Never set TREE_USED.
17455 * call.c (build_call): Don't abort on calls to library functions
17456 that have been declared normally.
17457
17458 * typeck.c (build_binary_op): Fix grammar in warning.
17459
17460 * exception.cc (__eh_free): Fix prototype.
17461
17462 * decl2.c (finish_decl_parsing): Handle TEMPLATE_ID_EXPR.
17463
17464 * decl.c (pushdecl): Handle seeing an OVERLOAD in
17465 IDENTIFIER_NAMESPACE_VALUE.
17466
17467 2000-07-16 Mark Mitchell <mark@codesourcery.com>
17468
17469 * cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
17470 * method.c (use_thunk): Correct handling of vcall offsets.
17471
17472 2000-07-14 Zack Weinberg <zack@wolery.cumb.org>
17473
17474 * .cvsignore: parse.h and parse.c have no cp- prefix.
17475
17476 2000-07-13 Mark Mitchell <mark@codesourcery.com>
17477
17478 * .cvsignore: New file.
17479
17480 2000-07-13 Zack Weinberg <zack@wolery.cumb.org>
17481
17482 * lang-specs.h: Use the new named specs. Remove unnecessary braces.
17483
17484 2000-07-12 Mark Mitchell <mark@codesourcery.com>
17485
17486 * Makefile.in ($(PARSE_H)): Depend directly on parse.y.
17487 * parse.c: Remove.
17488 * parse.h: Likewise.
17489
17490 2000-07-11 Mark Mitchell <mark@codesourcery.com>
17491
17492 * class.c (layout_class_type): Add pointers to virtual bases after
17493 base classes under the old ABI.
17494
17495 2000-07-10 Benjamin Chelf <chelf@codesourcery.com>
17496
17497 * semantics.c (finish_for_stmt): Remove call to emit_line_note.
17498 (finish_continue_stmt): Likewise.
17499 (begin_for_stmt): Remove call to note_level_for_for.
17500 (finish_goto_stmt): Change call from build_min_nt
17501 to build_stmt.
17502 (finish_expr_stmt): Likewise.
17503 (begin_if_stmt): Likewise.
17504 (begin_while_stmt): Likewise.
17505 (finish_while_stmt): Likewise.
17506 (finish_return_stmt): Likewise.
17507 (begin_for_stmt): Likewise.
17508 (finish_for_stmt): Likewise.
17509 (finish_break_stmt): Likewise.
17510 (begin_switch_stmt): Likewise.
17511 (finish_case_label): Likewise.
17512 (genrtl_try_block): Likewise.
17513 (begin_try_block): Likewise.
17514 (begin_handler): Likewise.
17515 (begin_compound_stmt): Likewise.
17516 (finish_asm_stmt): Likewise.
17517 (finish_label_stmt): Likewise.
17518 (add_decl_stmt): Likewise.
17519 (finish_subobject): Likewise.
17520 (finish_decl_cleanup): Likewise.
17521 (finish_named_return_value): Likewise.
17522 (setup_vtbl_ptr): Likewise.
17523 (add_scope_stmt): Likewise.
17524 * decl.c (finish_constructor_body): Likewise.
17525 (finish_destructor_body): Likewise.
17526 * optimize.c (copy_body_r): Likewise.
17527 (initialize_inlined_parameters): Likewise.
17528 (declare_return_variable): Likewise.
17529 (expand_call_inline): Likewise.
17530
17531 2000-07-10 Jakub Jelinek <jakub@redhat.com>
17532
17533 * semantics.c (expand_body): Sync interface information
17534 at the end of function body expansion.
17535
17536 2000-07-09 Jason Merrill <jason@redhat.com>
17537
17538 * init.c (build_new_1): Bail early if the call to new fails.
17539
17540 * decl.c (compute_array_index_type): Check specifically for
17541 an INTEGER_CST, not just TREE_CONSTANT.
17542
17543 * decl.c (duplicate_decls): Don't call duplicate_decls on
17544 the DECL_TEMPLATE_RESULT.
17545 (decls_match): Return 0 if the DECL_TEMPLATE_RESULTs have different
17546 codes.
17547
17548 * error.c (dump_template_bindings): Don't crash if we had an
17549 invalid argument list.
17550
17551 * typeck.c (c_expand_start_case): Do narrowing here.
17552 * semantics.c (finish_switch_cond): Not here.
17553
17554 2000-07-09 Hidvegi Zoli <hzoli@austin.ibm.com>
17555
17556 * parse.y (asm_clobbers): Do string concatenation.
17557
17558 2000-07-09 Mark Mitchell <mark@codesourcery.com>
17559
17560 * decl.c (pushtag): Don't put local classes in template functions
17561 on the local_classes list.
17562
17563 2000-07-04 Scott Snyder <snyder@fnal.gov>
17564
17565 * decl2.c (get_guard): Add missing return for old ABI local
17566 variable case.
17567
17568 2000-07-09 Mark Mitchell <mark@codesourcery.com>
17569
17570 * cp-tree.h (char_type_p): New function.
17571 * decl.c (init_decl_processing): Don't initialize
17572 signed_wchar_type_node or unsigned_wchar_type_node.
17573 (complete_array_type): Handle brace-enclosed string-constants.
17574 * rtti.c (emit_support_tinfos): Remove #if 0'd code.
17575 * tree.c (char_type_p): New function.
17576 * typeck2.c (digest_init): Use char_type_p.
17577
17578 2000-07-06 Nathan Sidwell <nathan@codesourcery.com>
17579
17580 * pt.c (tsubst): Don't layout type, if it's error_mark.
17581
17582 2000-07-06 Nathan Sidwell <nathan@codesourcery.com>
17583
17584 * pt.c (instantiate_pending_templates): Reset template level.
17585
17586 2000-07-05 Jason Merrill <jason@redhat.com>
17587
17588 * call.c (joust): Don't complain about `operator char *()' beating
17589 `operator const char *() const'.
17590
17591 2000-07-04 scott snyder <snyder@fnal.gov>
17592 Jason Merrill <jason@redhat.com>
17593
17594 * repo.c (repo_get_id): Handle the case where a class with virtual
17595 bases has a null TYPE_BINFO_VTABLE.
17596
17597 2000-07-04 Kevin Buhr <buhr@stat.wisc.edu>
17598 Jason Merrill <jason@redhat.com>
17599
17600 * parse.y (member_init): Just pass in the type.
17601 * init.c (expand_member_init): Handle getting a type.
17602
17603 2000-07-04 Martin v. Löwis <loewis@informatik.hu-berlin.de>
17604 Jason Merrill <jason@redhat.com>
17605
17606 * decl.c (finish_function): Warn if a function has no return
17607 statement.
17608 Suggested by Andrew Koenig.
17609 * typeck.c (check_return_expr): Do set current_function_returns_value
17610 if we got an error_mark_node.
17611
17612 2000-07-03 Nathan Sidwell <nathan@codesourcery.com>
17613
17614 * decl2.c (push_decl_namespace): Push the original namespace.
17615
17616 2000-07-03 Nathan Sidwell <nathan@codesourcery.com>
17617
17618 * pt.c (instantiate_class_template): Set CLASSTYPE_VBASECLASSES.
17619 * semantics.c (begin_class_definition): Clear it.
17620
17621 2000-07-02 Benjamin Chelf <chelf@codesourcery.com>
17622
17623 * cp-tree.h (genrtl_goto_stmt): Remove declaration.
17624 (genrtl_expr_stmt): Likewise.
17625 (genrtl_decl_stmt): Likewise.
17626 (genrtl_if_stmt): Likewise.
17627 (genrtl_while_stmt): Likewise.
17628 (genrtl_do_stmt): Likewise.
17629 (genrtl_return_stmt): Likewise.
17630 (genrtl_for_stmt): Likewise.
17631 (genrtl_break_stmt): Likewise.
17632 (genrtl_continue_stmt): Likewise.
17633 (genrtl_scope_stmt): Likewise.
17634 (genrtl_switch_stmt): Likewise.
17635 (genrtl_case_label): Likewise.
17636 (genrtl_begin_compound_stmt): Likewise.
17637 (genrtl_finish_compound_stmt): Likewise.
17638 (genrtl_compound_stmt): Likewise.
17639 (genrtl_asm_stmt): Likewise.
17640
17641 * init.c (begin_init_stmts): Remove call to
17642 genrtl_begin_compound_stmt.
17643 (finish_init_stmts): Remove call to genrtl_finish_compound_stmt.
17644
17645 * semantics.c (lang_expand_stmt): Changed call to
17646 genrtl_compound_stmt to ignore return value.
17647
17648 2000-07-02 Mark Mitchell <mark@codesourcery.com>
17649
17650 * mangle.c (canonicalize_for_substitution): Return the canonical
17651 variant of a type.
17652
17653 * decl.c (duplicate_decls): Preserve DECL_ORIGINAL_TYPE for a
17654 TYPE_DECL.
17655 * typeck.c (commonparms): Remove obstack manipulations.
17656
17657 2000-07-01 Benjamin Chelf <chelf@codesourcery.com>
17658
17659 * Make-lang.in (cc1plus$(exeext)): Added c-semantics.o.
17660
17661 * Makefile.in (OBJS): Added ../c-semantics.o.
17662 (OBJDEPS): Likewise.
17663
17664 * cp-tree.h (TREE_LANG_FLAG_?): Moved common documentation to
17665 ../c-common.h.
17666 (struct stmt_tree): Added comment.
17667 (current_function_name_declared): Removed.
17668 (stmts_are_full_exprs_p): Likewise.
17669 (genrtl_do_pushlevel): Likewise.
17670 (genrtl_clear_out_block): Likewise.
17671 (COMPOUND_STMT_NO_SCOPE): Moved to ../c-common.h.
17672 (DECL_ANON_UNION_ELEMS): Likewise.
17673 (emit_local_var): Likewise.
17674 (make_rtl_for_local_static): Likewise.
17675 (do_case): Likewise.
17676 (expand_stmt): Likewise.
17677 (genrtl_decl_cleanup): Likewise.
17678 (c_expand_asm_operands): Likewise.
17679 (c_expand_return): Likewise.
17680 (c_expand_start_case): Likewise.
17681
17682 * decl.c (make_rtl_for_local_static): Moved to c-semantics.c.
17683 (emit_local_var): Likewise.
17684 (initialize_local_var): Change reference to
17685 stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
17686 Change reference to stmts_are_full_exprs_p to
17687 current_stmt_tree->stmts_are_full_exprs_p.
17688 (push_cp_function_context): Likewise.
17689
17690 * expect.c (expand_throw): Change reference to
17691 stmts_are_full_exprs_p.
17692
17693 * init.c (build_aggr_init): Change reference to
17694 stmts_are_full_exprs_p.
17695 (build_vec_init): Likewise.
17696
17697 * optimize.c (maybe_clone_body): Change reference to
17698 current_function_name_declared to
17699 cp_function_chain->name_declared.
17700
17701 * pt.c (instantiate_decl): Change reference to
17702 current_function_name_declared to
17703 cp_function_chain->name_declared.
17704
17705 * semantics.c (expand_cond): Moved declaration to c-common.h.
17706 (genrtl_do_pushlevel): Moved to c-semantics.c.
17707 (genrtl_clear_out_block): Likewise.
17708 (genrtl_goto_stmt): Likewise.
17709 (genrtl_expr_stmt): Likewise.
17710 (genrtl_decl_stmt): Likewise.
17711 (gerntl_if_stmt): Likewise.
17712 (genrtl_while_stmt): Likewise.
17713 (genrtl_do_stmt): Likewise.
17714 (genrtl_return_stmt): Likewise.
17715 (genrtl_for_stmt): Likewise.
17716 (genrtl_break_stmt): Likewise.
17717 (genrtl_continue_stmt): Likewise.
17718 (genrtl_scope_stmt): Likewise.
17719 (genrtl_switch_stmt): Likewise.
17720 (genrtl_case_label): Likewise.
17721 (genrtl_begin_compound_stmt): Likewise.
17722 (genrtl_finish_compound_stmt): Likewise.
17723 (genrtl_compound_stmt): Likewise.
17724 (genrtl_asm_stmt): Likewise.
17725 (genrtl_decl_cleanup): Likewise.
17726 (expand_cond): Likewise.
17727 (expand_stmt): Renamed to ...
17728 (lang_expand_stmt): ... this.
17729 (lang_expand_expr_stmt): Initialize.
17730 (set_current_function_name_declared): Likewise.
17731 (stmts_are_full_exprs_p): Likewise.
17732 (current_function_name_declared): Likewise.
17733 (anon_aggr_type_p): Likewise.
17734 (do_poplevel): Change reference to
17735 stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
17736 Change reference to stmts_are_full_exprs_p to
17737 current_stmt_tree->stmts_are_full_exprs_p.
17738 (add_tree): Likewise.
17739 (finish_expr_stmt): Likewise.
17740 (prep_stmt): Likewise.
17741 (lang_expand_stmt): Likewise.
17742 (begin_compound_stmt): Change reference to
17743 current_function_name_declared to
17744 cp_function_chain->name_declared and call to
17745 current_function_name_declared().
17746 (setup_vtbl_ptr): Likewise.
17747 (genrtl_do_poplevel): Removed.
17748
17749 2000-06-30 Jason Merrill <jason@redhat.com>
17750
17751 * init.c (init_init_processing): Go back to aligning like
17752 double_type_node for old ABI.
17753 (get_cookie_size): Make cookie larger if we get a type that needs
17754 more alignment.
17755 (build_vec_delete): Call it.
17756
17757 * typeck.c (qualify_type_recursive): New fn.
17758 (composite_pointer_type): Use it.
17759 (build_binary_op): Use composite_pointer_type.
17760
17761 2000-06-24 Carlos O'Ryan <coryan@cs.wustl.edu>
17762 Jason Merrill <jason@redhat.com>
17763
17764 * typeck.c (check_return_expr): Don't complain about returning
17765 NULL from operator new if -fcheck-new.
17766 * cp-tree.h: Declare flag_check_new here.
17767 * init.c: Not here.
17768
17769 2000-06-28 Alex Samuel <samuel@codesourcery.com>
17770
17771 * mangle.c (find_substitution): Use same_type_p.
17772 (write_encoding): Don't check for substitutions.
17773
17774 2000-06-30 Nathan Sidwell <nathan@codesourcery.com>
17775
17776 * parse.y (expr_no_comma_rangle): New non-terminal.
17777 (template_parm): Use it for default parameter case.
17778 (template_arg): Use it.
17779 (expr_no_commas): Remove commented out undefined extensions.
17780 * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
17781 * parse.h, parse.c: Rebuilt.
17782
17783 2000-06-30 Mark Mitchell <mark@codesourcery.com>
17784
17785 * semantics.c (genrtl_asm_stmt): Don't decay input operands here.
17786 (finish_asm_stmt): Do it here, instead.
17787
17788 * cp-tree.h (ridpointers): Don't declare.
17789 * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
17790 (record_builtin_java_type): Likewise.
17791 (init_decl_processing): Likewise.
17792 * lex.c: Move inclusion of lex.h.
17793 (ridpointers): Don't define.
17794 (init_parse): Initialize ripdointers. Use CP_RID_MAX instead of
17795 RID_MAX.
17796 * lex.h (enum rid): Rename to ...
17797 (enum cp_rid): ... this.
17798 (ridpointers): Don't declare.
17799 * parse.y: Move inclusion of lex.h.
17800 * parse.c: Regenerated.
17801 * spew.c: Move inclusion of lex.h.
17802
17803 * cp-tree.h (struct language_function): Remove temp_name_counter.
17804 (temp_name_counter): Remove.
17805 (get_temp_name): Change prototype.
17806 (get_guard): New function.
17807 (get_guard_cond): Likewise.
17808 (set_guard): Likewise.
17809 * cvt.c (build_up_reference): Adjust call to get_temp_name.
17810 * decl.c (expand_static_init): Use get_guard and friends to
17811 implement guard variables.
17812 * decl2.c (get_temp_name): Assume that the variables created are
17813 always static.
17814 (get_sentry): Rename to ...
17815 (get_guard): ... this. Implement new ABI guard variables.
17816 (get_guard_bits): New function.
17817 (get_guard_cond): Likewise.
17818 (set_guard): Likewise.
17819 (start_static_initialization_or_destruction): Use them.
17820 (do_static_initialization): Replace sentry with guard throughout.
17821 (do_static_destruction): Likewise.
17822 * init.c (create_temporary_var): Add comment.
17823
17824 2000-06-28 Alex Samuel <samuel@codesourcery.com>
17825
17826 * mangle.c (find_substitution): Use same_type_p.
17827 (write_encoding): Don't check for substitutions.
17828
17829 2000-06-30 Nathan Sidwell <nathan@codesourcery.com>
17830
17831 * parse.y (expr_no_comma_rangle): New non-terminal.
17832 (template_parm): Use it for default parameter case.
17833 (template_arg): Use it.
17834 (expr_no_commas): Remove commented out undefined extensions.
17835 * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
17836 * parse.h, parse.c: Rebuilt.
17837
17838 2000-06-29 Mark Mitchell <mark@codesourcery.com>
17839
17840 * cp-tree.h (flag_const_strings): Remove.
17841 (warn_parentheses): Likewise.
17842 (warn_format): Likewise.
17843 (common_type): Likewise.
17844 (default_conversion): Likewise.
17845 (build_binary_op): Likewise.
17846 (cp_build_binary_op): New macro.
17847 * call.c (build_new_op): Use cp_build_binary_op instead of
17848 build_binary_op.
17849 * class.c (build_vtable_entry_ref): Likewise.
17850 * decl.c (expand_static_init): Likewise.
17851 (compute_array_index_type): Likewise.
17852 (build_enumerator): Likewise.
17853 * decl2.c (delete_sanity): Likewise.
17854 (start_static_initialization_or_destruction): Likewise.
17855 * error.c (dump_type_suffix): Likewise.
17856 * init.c (resolve_offset_ref): Likewise.
17857 (build_new): Likewise.
17858 (build_new_1): Likewise.
17859 (build_vec_delete_1): Likewise.
17860 (build_vec_init): Likewise.
17861 (build_delete): Likewise.
17862 * rtti.c (synthesize_tinfo_fn): Likewise.
17863 (synthesize_tinfo_var): Likewise.
17864 * search.c (expand_upcast_fixups): Likewise.
17865 (fixup_all_virtual_upcast_offsets): Likewise.
17866 * typeck.c (build_array_ref): Likewise.
17867 (get_member_function_from_ptrfunc): Likewise.
17868 (build_binary_op): Add parameter.
17869 (pointer_int_sum): Use cp_build_binary_op.
17870 (pointer_diff): Likewise.
17871 (build_modify_expr): Likewise.
17872 (get_delta_difference): Likewise.
17873 (build_ptrmemfunc): Likewise.
17874
17875 2000-06-29 Nathan Sidwell <nathan@codesourcery.com>
17876
17877 * cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
17878 * decl.c (create_implicit_typedef): Adjust.
17879 * decl2.c (build_artificial_parm): Adjust.
17880 * method.c (implicitly_declare_fn): Adjust.
17881 * pt.c (push_inline_template_parms_recursive): Adjust.
17882 (process_template_parm): Adjust.
17883 (overloaded_template_name): Adjust.
17884 * semantics.c (finish_template_template_parm): Adjust.
17885
17886 2000-06-28 Mark Mitchell <mark@codesourcery.com>
17887
17888 * cp-tree.h (CLEAR_BINFO_NEW_VTABLE_MARKED): Remove.
17889 * class.c (update_vtable_entry_for_fn): Correct logic for deciding
17890 where to emit thunks.
17891 (build_vtt): Adjust call to build_vtt_inits.
17892 (build_vtt_inits): Add parameter to indicate whether or not
17893 sub-VTTs for virtual bases should be included. Adjust handling of
17894 construction vtables.
17895 (get_matching_base): New function.
17896 (dfs_build_vtt_inits): Rename to ...
17897 (dfs_build_secondary_vptr_vtt_inits): Adjust handling of
17898 construction vtables.
17899 (dfs_fixup_binfo_vtbls): Likewise.
17900 (build_ctor_vtbl_groups): Build construction vtables for virtual
17901 bases, too.
17902 (accumulate_vtbl_inits): Tweak logic for deciding whether or not
17903 to build construction vtbls.
17904 (dfs_accumulate_vtbl_inits): Adjust handling of
17905 construction vtables.
17906
17907 * pt.c (tsubst, case TEMPLATE_TEMPLATE_PARM): Handle cv-qualified
17908 types correctly.
17909
17910 2000-06-27 Mark Mitchell <mark@codesourcery.com>
17911
17912 * decl.c (grokfndecl): Set DECL_CONTEXT for static functions too.
17913
17914 2000-06-26 Nathan Sidwell <nathan@codesourcery.com>
17915
17916 * search.c (hides): Remove.
17917 (is_subobject_of_p): Add most_derived parameter. Use
17918 CANONICAL_BINFO.
17919 (lookup_field_queue_p): Adjust.
17920 (lookup_field_r): Adjust.
17921
17922 2000-06-26 Nathan Sidwell <nathan@codesourcery.com>
17923
17924 * decl2.c (handle_class_head): Bash typedefs to the type's main
17925 decl.
17926
17927 2000-06-25 Mark Mitchell <mark@codesourcery.com>
17928
17929 * cp-tree.h (genrtl_begin_stmt_expr): Rename to ...
17930 (begin_global_stmt_expr): ... this.
17931 (genrtl_finish_stmt_expr): Rename to ...
17932 (finish_global_stmt_expr): ... this.
17933 * init.c (begin_init_stmts): Adjust calls.
17934 (finish_init_stmts): Likewise.
17935 * semantics.c (genrtl_begin_stmt_expr): Rename to ...
17936 (begin_global_stmt_expr): ... this.
17937 (genrtl_finish_stmt_expr): Rename to ...
17938 (finish_global_stmt_expr): ... this.
17939
17940 2000-06-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
17941
17942 * search.c (lookup_member): Fix typo in comment.
17943
17944 2000-06-24 Jason Merrill <jason@redhat.com>
17945
17946 * decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace.
17947 (push_namespace): Set DECL_CONTEXT for a new NAMESPACE_DECL.
17948
17949 2000-06-24 Martin v. Löwis <loewis@informatik.hu-berlin.de>
17950
17951 * parse.y (complex_direct_notype_declarator): Support global_scope.
17952 * Makefile.in: Adjust conflict count.
17953
17954 2000-06-23 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
17955
17956 * parse.y (template_arg): Convert TEMPLATE_DECL
17957 that is a template template parameter to
17958 TEMPLATE_TEMPLATE_PARM here.
17959
17960 * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment.
17961 * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro.
17962 (copy_template_template_parm): Adjust prototype.
17963 * decl.c (grokdeclarator): Remove dead code.
17964 * pt.c (process_template_parm): Tidy.
17965 (lookup_template_class): Construct nodes in
17966 copy_template_template_parm.
17967 (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to
17968 lookup_template_class. Use TYPE_TI_TEMPLATE.
17969 * tree.c (copy_template_template_parm): Add NEWARGS
17970 parameter.
17971 (mapcar): Adjust call to copy_template_template_parm.
17972 * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
17973 * method.c (build_template_template_parm_names): Change error
17974 code to avoid compilation warning.
17975
17976 * gxxint.texi: Document template template parameter
17977 name mangling.
17978
17979 2000-06-21 Alex Samuel <samuel@codesourcery.com>
17980
17981 * Make-lang.in (CXX_LIB2FUNCS): Add cp-demangle.o and dyn-string.o.
17982 (CXX_LIB2SRCS): Add cp-demangle.c and dyn-string.c.
17983 (cp-demangle.o): New rule.
17984 (dyn-string.o): Likewise.
17985 * inc/cxxabi.h (__cxa_demangle): New declaration.
17986
17987 2000-06-22 Mark Mitchell <mark@codesourcery.com>
17988
17989 * cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
17990 (BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
17991 (lang_decl_flags): Add generate_with_vtable_p. Make vcall_offset
17992 a tree, not an int.
17993 (THUNK_GENERATE_WITH_VTABLE_P): New macro.
17994 (make_thunk): Change prototype.
17995 (emit_thunk): Rename to use_thunk.
17996 (mangle_thunk): Change prototype.
17997 * class.c (get_derived_offset): Simplify.
17998 (copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
17999 BV_GENERATE_THUNK_WITH_VTABLE_P.
18000 (build_primary_vtable): Simplify.
18001 (add_virtual_function): Use BV_FN, rather than TREE_VALUE.
18002 (dfs_find_base): Remove.
18003 (update_vtable_entry_for_fn): Correct bug in finding the base
18004 where a virtual function was first declared. Figure out whether
18005 or not to emit a vcall-thunk with the vtables in which it appears.
18006 Correct logic for deciding whether to use an ordinary thunk, or a
18007 vcall thunk.
18008 (finish_struct_1): Remove unnecssary code.
18009 (build_vtbl_initializer): Use ssize_int for the running counter of
18010 negative indices.
18011 (build_vtbl_initializer): Only use vcall thunks where necessary.
18012 Mark thunks as needing to be emitted with their vtables, or not.
18013 (build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
18014 indices. Use size_binop.
18015 (dfs_build_vcall_offset_vtbl_entries): Don't rely on
18016 BINFO_PRIMARY_MARKED_P here. Use BV_FN consistently. Use
18017 size_binop.
18018 (build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
18019 (build_vtable_entry): Mark thunks as needing to be emitted with
18020 their vtables, or not.
18021 * decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
18022 * decl2.c (mark_vtable_entries): Use use_thunk instead of
18023 emit_thunk.
18024 * dump.c (dequeue_and_dump): Remove dead code. Dump new thunk
18025 information.
18026 * error.c (dump_expr): Use BV_FN.
18027 * mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
18028 not an int.
18029 * method.c (make_thunk): Likewise.
18030 (emit_thunk): Rename to use_thunk. Allow callers to decide
18031 whether or not to actually emit the thunk. Adjust for changes in
18032 representation of vcall offsets.
18033 * search.c (dfs_get_pure_virtuals): Use BV_FN.
18034 * semantics.c (emit_associated_thunks): New function.
18035 (expand_body): Use it.
18036 * ir.texi: Adjust descriptions of thunks.
18037
18038 2000-06-22 Jason Merrill <jason@redhat.com>
18039
18040 * pt.c (tsubst_decl, case FUNCTION_DECL): Clear DECL_SAVED_TREE.
18041 (tsubst_friend_function): Copy it here.
18042
18043 * decl.c (grok_op_properties): Fix typo.
18044
18045 * decl2.c (delete_sanity): Clarify warning, avoid failure on
18046 deleting void*.
18047
18048 * pt.c (check_explicit_specialization): Clarify error.
18049
18050 * decl.c (pushdecl): Also pull out one of the FUNCTION_DECLs from
18051 an old OVERLOAD when we're declaring a non-function.
18052 (pushdecl, destroy_local_var): Check for error_mark_node.
18053 (warn_extern_redeclared_static): Also bail early if
18054 we're a CONST_DECL.
18055 (push_overloaded_decl): Ignore an old error_mark_node.
18056
18057 2000-06-22 Nathan Sidwell <nathan@codesourcery.com>
18058
18059 * call.c (build_x_va_arg): Check if in a template decl.
18060 * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg.
18061
18062 2000-06-20 Alexandre Petit-Bianco <apbianco@cygnus.com>
18063
18064 * class.c (push_lang_context): TYPE_NAME gets you to the Java
18065 types DECLs.
18066 * decl.c (check_goto): Computed gotos assumed OK.
18067
18068 2000-06-20 Jason Merrill <jason@redhat.com>
18069
18070 * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
18071 for which we don't need to look for instantiations.
18072
18073 2000-06-21 Nathan Sidwell <nathan@codesourcery.com>
18074
18075 * parse.y (program): Always call finish_translation_unit.
18076 * parse.c, parse.h: Rebuilt.
18077
18078 2000-06-20 Zack Weinberg <zack@wolery.cumb.org>
18079
18080 * method.c: Don't include hard-reg-set.h.
18081
18082 2000-06-20 Nathan Sidwell <nathan@codesourcery.com>
18083
18084 * rtti.c (get_base_offset): Cope when vbase field is in a base.
18085
18086 2000-06-20 Nathan Sidwell <nathan@codesourcery.com>
18087
18088 * call.c (build_conditional_expr): Use VOID_TYPE_P.
18089 * cvt.c (cp_convert_to_pointer): Likewise.
18090 (convert_to_void): Likewise.
18091 * error.c (dump_expr): Likewise.
18092 * except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
18093 * init.c (build_delete): Likewise.
18094 * method.c (emit_thunk): Likewise.
18095 * optmize.c (declare_return_variable): Likewise.
18096 * rtti.c (get_tinfo_decl_dynamic): Likewise.
18097 (get_typeid): Likewise.
18098 (build_dynamic_cast_1): Likewise.
18099 * typeck.c (composite_pointer_type): Likewise.
18100 (common_type): Likewise.
18101 (build_indirect_ref): Likewise.
18102 (build_binary_op): Likewise.
18103 (build_x_compound_expr): Likewise.
18104 (check_return_expr): Likewise.
18105 * typeck2.c (add_exception_specifier): Likewise.
18106
18107 * mangle.c (write_method_parms): Use direct comparison for end
18108 of parmlist.
18109
18110 2000-06-19 Benjamin Chelf <chelf@codesourcery.com>
18111
18112 * cp-tree.h (genrtl_try_block): Declare function.
18113 (genrtl_handler): Likewise.
18114 (genrtl_catch_block): Likewise.
18115 (genrtl_ctor_stmt): Likewise.
18116 (genrtl_subobject): Likewise.
18117 (genrtl_decl_cleanup): Likewise.
18118 (genrtl_do_poplevel): Likewise.
18119 (genrtl_do_pushlevel): Likewise.
18120 (genrtl_clear_out_block): Likewise.
18121 (genrtl_goto_stmt): Likewise.
18122 (genrtl_expr_stmt): Likewise.
18123 (genrtl_decl_stmt): Likewise.
18124 (genrtl_if_stmt): Likewise.
18125 (genrtl_while_stmt): Likewise.
18126 (genrtl_do_stmt): Likewise.
18127 (genrtl_return_stmt): Likewise.
18128 (genrtl_for_stmt): Likewise.
18129 (genrtl_break_stmt): Likewise.
18130 (genrtl_continue_stmt): Likewise.
18131 (genrtl_scope_stmt): Likewise.
18132 (genrtl_switch_stmt): Likewise.
18133 (genrtl_case_label): Likewise.
18134 (genrtl_begin_compound_stmt): Likewise.
18135 (genrtl_finish_compound_stmt): Likewise.
18136 (genrtl_compound_stmt): Likewise.
18137 (genrtl_asm_stmt): Likewise.
18138 (genrtl_named_return_value): Likewise.
18139 (genrtl_begin_stmt_expr): Likewise.
18140 (genrtl_finish_stmt_expr): Likewise.
18141 (finish_for_stmt): Removed first argument.
18142 (finish_switch_stmt): Likewise.
18143
18144 * semantics.c (genrtl_try_block): Define function.
18145 (genrtl_handler): Likewise.
18146 (genrtl_catch_block): Likewise.
18147 (genrtl_ctor_stmt): Likewise.
18148 (genrtl_subobject): Likewise.
18149 (genrtl_decl_cleanup): Likewise.
18150 (genrtl_do_poplevel): Likewise.
18151 (genrtl_do_pushlevel): Likewise.
18152 (genrtl_clear_out_block): Likewise.
18153 (genrtl_goto_stmt): Likewise.
18154 (genrtl_expr_stmt): Likewise.
18155 (genrtl_decl_stmt): Likewise.
18156 (genrtl_if_stmt): Likewise.
18157 (genrtl_while_stmt): Likewise.
18158 (genrtl_do_stmt): Likewise.
18159 (genrtl_return_stmt): Likewise.
18160 (genrtl_for_stmt): Likewise.
18161 (genrtl_break_stmt): Likewise.
18162 (genrtl_continue_stmt): Likewise.
18163 (genrtl_scope_stmt): Likewise.
18164 (genrtl_switch_stmt): Likewise.
18165 (genrtl_case_label): Likewise.
18166 (genrtl_begin_compound_stmt): Likewise.
18167 (genrtl_finish_compound_stmt): Likewise.
18168 (genrtl_compound_stmt): Likewise.
18169 (genrtl_asm_stmt): Likewise.
18170 (genrtl_named_return_value): Likewise.
18171 (genrtl_begin_stmt_expr): Likewise.
18172 (genrtl_finish_stmt_expr): Likewise.
18173 (finish_for_stmt): Removed first argument and generate rtl
18174 specific code.
18175 (finish_switch_stmt): Likewise.
18176 (do_poplevel): Removed generate rtl specific code.
18177 (do_pushlevel): Likewise.
18178 (add_tree): Likewise.
18179 (finish_goto_stmt): Likewise.
18180 (finish_expr_stmt): Likewise.
18181 (begin_if_stmt): Likewise.
18182 (finish_if_stmt_cond): Likewise.
18183 (finish_then_clause): Likewise.
18184 (begin_else_clause): Likewise.
18185 (finish_else_clause): Likewise.
18186 (finish_if_stmt): Likewise.
18187 (clear_out_block): Likewise.
18188 (begin_while_stmt): Likewise.
18189 (finish_while_stmt_cond): Likewise.
18190 (finish_while_stmt): Likewise.
18191 (begin_do_stmt): Likewise.
18192 (finish_do_body): Likewise.
18193 (finish_do_stmt): Likewise.
18194 (finish_return_stmt): Likewise.
18195 (begin_for_stmt): Likewise.
18196 (finish_for_init_stmt): Likewise.
18197 (finish_for_cond): Likewise.
18198 (finish_for_expr): Likewise.
18199 (finish_break_stmt): Likewise.
18200 (finish_continue_stmt): Likewise.
18201 (begin_switch_stmt): Likewise.
18202 (finish_switch_cond): Likewise.
18203 (finish_case_label): Likewise.
18204 (begin_try_block): Likewise.
18205 (begin_function_try_block): Likewise.
18206 (finish_try_block): Likewise.
18207 (finish_cleanup_try_block): Likewise.
18208 (finish_cleanup): Likewise.
18209 (finish_function_try_block): Likewise.
18210 (finish_handler_sequence): Likewise.
18211 (finish_function_handler_sequence): Likewise.
18212 (begin_handler): Likewise.
18213 (finish_handler_parms): Likewise.
18214 (begin_catch_block): Likewise.
18215 (finish_handler): Likewise.
18216 (begin_compound_stmt): Likewise.
18217 (finish_compound_stmt): Likewise.
18218 (finish_asm_stmt): Likewise.
18219 (finish_label_stmt): Likewise.
18220 (finish_label_decl): Likewise.
18221 (finish_subobject): Likewise.
18222 (finish_decl_cleanup): Likewise.
18223 (finish_named_return_value): Likewise.
18224 (begin_stmt_expr): Likewise.
18225 (finish_stmt_expr): Likewise.
18226
18227 * decl.c (initialize_local_var): Changed call to finish_expr_stmt
18228 to call genrtl_expr_stmt when appropriate.
18229
18230 * init.c (begin_init_stmts): Changed calls to begin_stmt_expr and
18231 begin_compound_expr to call genrtl_begin_stmt_expr and
18232 genrtl_begin_compound_expr when appropriate.
18233 (finish_init_stmts): Changed calls to finish_compound_expr and
18234 finish_stmt_expr to call genrtl_finish_compound_expr and
18235 genrtl_finish_stmt_expr when appropriate.
18236 (expand_default_init): Changed call to finish_expr_stmt to call
18237 genrtl_expr_stmt when appropriate.
18238 (build_vec_init): Likewise.
18239
18240 * parse.y (simple_stmt): Removed first argument from call to
18241 finish_for_stmt. Removed first argument from call to
18242 finish_switch_stmt.
18243
18244 * parse.c: Regenerated.
18245
18246 * pt.c (tsubst_expr): Removed first argument from call to
18247 finish_for_stmt. Removed first argument from call to
18248 finish_switch_stmt.
18249
18250 2000-06-16 Benjamin Chelf <chelf@codesourcery.com>
18251
18252 * cp-tree.h (enum cplus_tree_code): Changed __DUMMY to
18253 CP_DUMMY_TREE_CODE. Remove #include "c-common.def".
18254
18255 * lex.c (cplus_tree_code_type[]): Removed #include "c-common.def".
18256 (cplus_tree_code_length[]): Likewise.
18257 (cplus_tree_code_name[]): Likewise.
18258 (init_parse): Added call to add_c_tree_codes. Changed
18259 LAST_AND_UNUSED_TREE_CODE to LAST_C_TREE_CODE.
18260
18261 2000-06-16 Mark Mitchell <mark@codesourcery.com>
18262
18263 * cp-tree.h (finish_mem_initializers): Declare.
18264 (count_trees): Likewise.
18265 * parse.y (base_init): Use finish_mem_initializers.
18266 * semantics.c (finish_mem_initializers): New function.
18267
18268 * tree.c (count_trees_r): Prototype. Use DATA parameter to store
18269 the number of trees.
18270 (n_trees): Remove.
18271 (count_trees): Don't use it.
18272
18273 2000-06-15 Jason Merrill <jason@redhat.com>
18274
18275 * tree.c (count_trees): New debugging function.
18276
18277 * typeck.c (build_x_function_call): Use DECL_FUNCTION_TEMPLATE_P.
18278 * init.c (build_member_call): Pull out the name of a DECL.
18279
18280 * Makefile.in (semantics.o, pt.o): Depend on TIMEVAR_H.
18281 * semantics.c (expand_body): Push to TV_INTEGRATION here.
18282 * optimize.c (optimize_function): Not here.
18283 * pt.c (instantiate_decl): Push to TV_PARSE.
18284
18285 2000-06-15 Mark Mitchell <mark@codesourcery.com>
18286
18287 * cp-tree.h (struct language_function): Remove x_base_init_list
18288 and x_member_init_list.
18289 (current_base_init_list): Remove.
18290 (current_member_init_list): Likewise.
18291 (setup_vtbl_ptr): Change prototype.
18292 (emit_base_init): Likewise.
18293 (expand_member_init): Likewise.
18294 (reinit_parse_for_function): Remove.
18295 * decl.c (save_function_data): Don't clear x_base_init_list and
18296 x_member_init_list.
18297 (mark_language_function): Don't mark them.
18298 * init.c (perform_member_init): Tweak comment.
18299 (sort_member_init): Take the list of initializers as an argument.
18300 (sort_base_init): Likewise.
18301 (emit_base_init): Likewise.
18302 (expand_member_init): Return the initializer. Don't use global
18303 variables.
18304 * lex.c (reinit_parse_for_function): Remove.
18305 * method.c (build_template_parm_names): Correct substitution.
18306 (do_build_copy_constructor): Don't use current_member_init_list
18307 and current_base_init_list.
18308 (synthesize_method): Likewise.
18309 * parse.y (base_init): Split mem-initializers into
18310 base-initializers and field-initializers.
18311 (member_init_list): Build up the list here.
18312 (member_init): Return the initializer.
18313 (fn.depfn): Don't use reinit_parse_for_function.
18314 * parse.c: Regenerated.
18315 * pt.c (convert_nontype_argument): Don't make an ADDR_EXPR of the
18316 ERROR_MARK.
18317 (tsubst_expr): Don't use current_member_init_list
18318 and current_base_init_list.
18319 (tsubst_expr_values): Rename to ...
18320 (tsubst_initializer_list): ... this. Use convert_from_reference.
18321 * semantics.c (setup_vtbl_ptr): Don't use current_member_init_list
18322 and current_base_init_list.
18323 (begin_function_definition): Don't call reinit_parse_for_function.
18324
18325 * dump.c (dequeue_and_dump): Use TREE_VEC_LENGTH with vectors.
18326
18327 * error.c (dump_expr): Handle ADDR_EXPRs with REFERENCE_TYPE
18328 correctly.
18329
18330 * cp-tree.h (DECL_PENDING_INLINE_P): Relax checking.
18331
18332 2000-06-14 Benjamin Chelf <chelf@codesourcery.com>
18333
18334 * cp-tree.h (IF_COND): Move to c-common.h.
18335 (THEN_CLAUSE): Likewise.
18336 (ELSE_CLAUSE): Likewise.
18337 (WHILE_COND): Likewise.
18338 (WHILE_BODY): Likewise.
18339 (DO_COND): Likewise.
18340 (DO_BODY): Likewise.
18341 (RETURN_EXPR): Likewise.
18342 (EXPR_STMT_EXPR): Likewise.
18343 (FOR_INIT_STMT): Likewise.
18344 (FOR_COND): Likewise.
18345 (FOR_EXPR): Likewise.
18346 (FOR_BODY): Likewise.
18347 (SWITCH_COND): Likewise.
18348 (SWITCH_BODY): Likewise.
18349 (CASE_LOW): Likewise.
18350 (CASE_HIGH): Likewise.
18351 (GOTO_DESTINATION): Likewise.
18352 (COMPOUND_BODY): Likewise.
18353 (ASM_CV_QUAL): Likewise.
18354 (ASM_STRING): Likewise.
18355 (ASM_OUTPUTS): Likewise.
18356 (ASM_INPUTS): Likewise.
18357 (ASM_CLOBBERS): Likewise.
18358 (DECL_STMT_DECL): Likewise.
18359 (STMT_EXPR_STMT): Likewise.
18360 (LABEL_STMT_LABEL): Likewise.
18361 (SCOPE_BEGIN_P): Likewise.
18362 (SCOPE_END_P): Likewise.
18363 (SCOPE_STMT_BLOCK): Likewise.
18364 (SCOPE_NULLIFIED_P): Likewise.
18365 (SCOPE_NO_CLEANUPS_P): Likewise.
18366 (SCOPE_PARTIAL_P): Likewise.
18367 (ASM_VOLATILE_P): Likewise.
18368 (STMT_LINENO): Likewise.
18369 (STMT_LINENO_FOR_FN_P): Likewise.
18370
18371 * cp-tree.def: Removed SRCLOC, SIZEOF_EXPR, ARROW_EXPR,
18372 ALIGNOF_EXPR, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT,
18373 FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT,
18374 CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT,
18375 SCOPE_STMT, CASE_LABEL, STMT_EXPR.
18376
18377 * Makefile.in (CXX_TREE_H): Added $(srcdir)/../c-common.def.
18378
18379 * Make-lang.in (CXX_SRCS): Added $(srcdir)/c-common.def.
18380 (cc1plus$(exeext)): Added $(srcdir)/c-common.def.
18381
18382 * lex.c (cplus_tree_code_type[]): Added '#include "c-common.def"'.
18383 (cplus_tree_code_length[]): Added '#include "c-common.def"'.
18384 (cplus_tree_code_name[]): Added '#include "c-common.def"'.
18385
18386 2000-06-14 Mark Mitchell <mark@codesourcery.com>
18387
18388 * cp-tree.h (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH): New macro.
18389 * class.c (dfs_find_final_overrider): Set it appropriately.
18390 (dfs_built_vtt_inits): Check BINFO_OVERRIDE_ALONG_VIRTUAL_PATH to
18391 avoid unneeded secondary vptrs.
18392
18393 2000-06-13 Jakub Jelinek <jakub@redhat.com>
18394
18395 * class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
18396 (check_bitfield_decl, check_field_decl): Likewise.
18397 (build_vtbl_or_vbase_field, build_base_field): Likewise.
18398 (layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
18399 * decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
18400 (xfer_tag, finish_enum): Likewise.
18401 * decl2.c (finish_builtin_type): Likewise.
18402 * init.c (init_init_processing): Likewise.
18403 * pt.c (instantiate_class_template): Likewise.
18404 * rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
18405 * cp-tree.h (struct lang_type): Add user_align member.
18406 (CLASSTYPE_USER_ALIGN): Define.
18407
18408 2000-06-13 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
18409
18410 * Make-lang.in (c++.install-common): Install g++-cross in
18411 $(gcc_tooldir)/bin as g++ and c++; g++ in $(bindir) as
18412 $(target_alias)-g++ and $(target_alias)-c++.
18413
18414 2000-06-12 Mark Mitchell <mark@codesourcery.com>
18415
18416 * class.c (vcall_offset_data_s): Add last_init and fns.
18417 (overrides): Rename to same_signature_p.
18418 (dfs_find_final_overrider): Adjust accordingly.
18419 (mark_overriders): Likewise.
18420 (warn_hidden): Likewise.
18421 (build_vtbl_initializer): Reorganize machinery for building things
18422 at negative offsets.
18423 (build_vcall_and_vbase_vtbl_entries): Likewise.
18424 (build_vbase_offset_vtbl_entries): Likewise.
18425 (dfs_build_vcall_offset_vtbl_entries): Correct order of vcall
18426 offset entries. Do not create two entries for functions with the
18427 same signature.
18428 (build_vcall_offset_vtbl_entries): Initialize vod->fns.
18429 (build_rtti_vtbl_entries): Reorganize machinery for building things
18430 at negative offsets.
18431
18432 * optimize.c (expand_call_inline): Don't recurse into the code
18433 used to initialize the parameters more than once.
18434
18435 2000-06-11 Mark Mitchell <mark@codesourcery.com>
18436
18437 * mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
18438 (is_std_substitution): Don't check CLASSTYPE_USE_TEMPLATE here.
18439 (find_substitution): Only use the `Sa' substitution for
18440 std::allocator, not instantiations of it.
18441 (write_template_prefix): Move comment. Only use a TREE_LIST to
18442 represent substitutions for a member template.
18443 (write_array_type): Mangle array dimensions correctly.
18444 * optimize.c (maybe_clone_body): Copy more information from the
18445 cloned function.
18446 * pt.c (regenerate_decl_from_template): Preserve DECL_USE_TEMPLATE
18447 on the regenerated declaration.
18448
18449 2000-06-11 Chip Salzenberg <chip@valinux.com>
18450 Mark Mitchell <mark@codesourcery.com>
18451
18452 * class.c (build_vtable): Clarify comment.
18453 (build_ctor_vtbl_group): Pass the most derived type to
18454 build_vtable.
18455
18456 2000-06-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
18457
18458 * decl2.c (compare_options): Don't needlessly cast away const-ness.
18459
18460 2000-06-10 Mark Mitchell <mark@codesourcery.com>
18461
18462 * decl.c (add_binding): Handle duplicate declarations of external
18463 variables.
18464
18465 2000-06-09 Chip Salzenberg <chip@valinux.com>
18466 Mark Mitchell <mark@codesourcery.com>
18467
18468 * mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an
18469 argument.
18470 (write_signed_number): New macro.
18471 (write_unsigned_number): Likewise.
18472 (write_source_name): Use them.
18473 (write_number): Handle signed and unsigned values.
18474 (write_integer_cst): Use tree_int_cst_sgn, and use
18475 write_unsigned_number or write_signed_number as appropriate.
18476 (write_discriminator): Use write_unsigned_number or
18477 write_signed_number as appropriate.
18478 (write_template_arg_literal): Likewise.
18479 (write_array_type): Use tree_low_cst.
18480 (write_template_parm): Use write_unsigned_number or
18481 write_signed_number as appropriate.
18482 (write_substitution): Adjust call to write_number.
18483 (write_type): Get the TYPE_MAIN_VARIANT before mangling it.
18484 (write_expression): Handle non-type template arguments of
18485 reference type correctly.
18486 (mangle_thunk): Use write_signed_number.
18487
18488 2000-06-09 Chip Salzenberg <chip@valinux.com>
18489
18490 * mangle.c (find_substition): Don't mangle objects with typename
18491 substitutions (e.g. "cin" as "Si").
18492
18493 2000-06-09 Zack Weinberg <zack@wolery.cumb.org>
18494
18495 * call.c (add_candidate): Use ggc_alloc_cleared.
18496 * decl.c (lookup_label): Likewise.
18497 * lex.c (retrofit_lang_decl): Likewise.
18498
18499 2000-06-09 Jason Merrill <jason@casey.soma.redhat.com>
18500
18501 * semantics.c (expand_body): Push to TV_EXPAND.
18502 * optimize.c (optimize_function): Push to TV_INTEGRATION.
18503 * decl.c (start_function): Always call announce_function.
18504
18505 * tinfo2.cc: Just declare abort.
18506
18507 2000-06-09 Gabriel Dos Reis <gdr@codesourcery.com>
18508
18509 * lex.c (DEF_OPERATOR): Say `operator@' -not- `operator @'
18510 whenever @ is a symbolic name.
18511
18512 2000-06-08 Jakub Jelinek <jakub@redhat.com>
18513
18514 * method.c (make_thunk): Clear DECL_VTT_PARM in thunk.
18515
18516 2000-06-07 Mark Mitchell <mark@codesourcery.com>
18517
18518 * decl.c (pushdecl): Look up functions by DECL_NAME, not
18519 DECL_ASSEMBLER_NAME.
18520
18521 2000-06-06 Mark Mitchell <mark@codesourcery.com>
18522
18523 * decl2.c (c_language): Define.
18524
18525 2000-06-06 Gabriel Dos Reis <gdr@codesourcery.com>
18526
18527 * lex.c (lang_init_options): Tweak.
18528
18529 * decl2.c: Remove #inclusion of diagnostic.h
18530 (lang_decode_option): Move diagnostic formatting options to
18531 toplevel.
18532
18533 * lang-options.h: Remove documentation for diagnostic options.
18534
18535 * Makefile.in (lex.o): Depends upon diagnostic.h
18536
18537 2000-06-06 Mark Mitchell <mark@codesourcery.com>
18538
18539 * decl.c (redeclaration_error_message): If two TEMPLATE_DECLs have
18540 the same DECL_RESULT, it's not a redefinition.
18541 * pt.c (tsubst_decl): Remove code to handle illegal
18542 specializations.
18543
18544 2000-06-06 Nathan Sidwell <nathan@codesourcery.com>
18545
18546 * exception.cc: (__eh_alloc, __eh_free): Moved to libgcc2.c
18547
18548 2000-06-05 Jason Merrill <jason@casey.soma.redhat.com>
18549
18550 * search.c (maybe_suppress_debug_info): Don't check
18551 CLASSTYPE_INTERFACE_ONLY if CLASSTYPE_INTERFACE_KNOWN isn't set.
18552
18553 * pt.c (mark_decl_instantiated): Do SET_DECL_EXPLICIT_INSTANTIATION
18554 here if extern_p.
18555
18556 Remember instantiation context in deferred instantiations.
18557 * cp-tree.h (struct tinst_level): Remove.
18558 (TINST_DECL, TINST_LINE, TINST_FILE): New macros.
18559 * pt.c (current_tinst_level): Now a tree.
18560 (print_template_context, push_tinst_level, pop_tinst_level,
18561 tinst_for_decl): Adjust.
18562 (reopen_tinst_level): New fn.
18563 (init_pt): Register current_tinst_level as a root.
18564 (add_pending_template): Put current_tinst_level in TREE_PURPOSE
18565 of the pending templates list.
18566 (instantiate_pending_templates): Adjust. Call reopen_tinst_level.
18567 * lex.c (extract_interface_info): Adjust.
18568 * decl2.c (warn_if_unknown_interface): Adjust.
18569
18570 2000-06-05 Mark Mitchell <mark@codesourcery.com>
18571
18572 * class.c (indirect_primary_base_p): New function.
18573 (determine_primary_base): Use it.
18574
18575 2000-06-05 Nathan Sidwell <nathan@codesourcery.com>
18576
18577 Update new-abi dynamic cast algorithm.
18578 * tinfo.cc (__class_type_info::__dyncast_result): Add
18579 whole_details. Adjust constructor.
18580 (__vmi_class_type_info::__do_dyncast): Adjust for vmi_flags.
18581 Avoid unnecessary searching.
18582 (__dynamic_cast): Adjust for __dyncast_result::whole_details.
18583
18584 2000-06-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
18585
18586 * decl.c (init_decl_processing): Don't call record_component_aliases.
18587 * tree.c (build_cplus_array_type_1): Likewise.
18588
18589 2000-06-04 Mark Mitchell <mark@codesourcery.com>
18590
18591 * ir.texi: Correct typo.
18592 * mangle.c (write_expression): Handle non-type template arguments
18593 with reference type.
18594 * method.c (build_overload_value): Likewise.
18595 * pt.c (convert_nontype_argument): Explicitly represent conversion
18596 to a reference with an ADDR_EXPR.
18597 (unify): Always unify arguments in left-to-right order.
18598
18599 2000-06-03 Alex Samuel <samuel@codesourcery.com>
18600 Mark Mitchell <mark@codesourcery.com>
18601
18602 * Make-lang.in (CXX_SRCS): Add mangle.c.
18603 * Makefile.in (CXX_OBJS): Add mangle.o.
18604 (mangle.o): New rule.
18605
18606 * class.c (local_classes): New variable.
18607 * class.c (get_vtable_name): Use mangle_vtable_for_type for new ABI.
18608 (get_vtt_name): Use mangle_vtt_name for new ABI.
18609 (init_class_processing): Initialize local_classes.
18610 (build_ctor_vtbl_group): Use mangle_ctor_vtbl_for_type for new ABI.
18611 * cp-tree.h (cp_tree_index): Add CPTI_STD_IDENTIFIER.
18612 (std_identifier): New macro.
18613 (DECL_VOLATILE_MEMFUNC_P): New macro.
18614 (DECL_NAMESPACE_STD_P): Likewise.
18615 (local_classes): Declare.
18616 (get_mostly_instantiated_function_type): Declare.
18617 (init_mangle): Declare.
18618 (mangle_decl): Likewise.
18619 (mangle_type_string): Likewise.
18620 (mangle_type): Likewise.
18621 (mangle_typeinfo_for_type): Likewise.
18622 (mangle_typeinfo_string_for_type): Likewise.
18623 (mangle_vtbl_for_type): Likewise.
18624 (mangle_vtt_for_type): Likewise.
18625 (mangle_ctor_vtbl_for_type): Likewise.
18626 (mangle_thunk): Likewise.
18627 (mangle_conv_op_name_for_type): Likewise.
18628 (mangle_guard_variable): Likewise.
18629 * decl.c (pushtag): Keep track of local classes.
18630 (initialize_predefined_identifiers): Initialize std_identifier.
18631 (init_decl_processing): Use std_identifier.
18632 (start_decl): Don't treat instantiations as specializations.
18633 (grokdeclarator): Likewise.
18634 (grokvardecl): Call mangle_decl for new ABI. Only set mangled
18635 name for fully-instantiated templates.
18636 * decl2.c (grokclassfn): Use set_mangled_name_for_decl for
18637 destructors with the new ABI.
18638 (finish_static_data_member_decl): Use mangle_decl under the new ABI.
18639 (grokfield): Use mangle_type for new ABI.
18640 (grokoptypename): Use mangle_conv_op_for_type for new ABI.
18641 (get_sentry): Use mangle_guard_variable for new ABI.
18642 (start_static_initialization_or_destruction): Likewise.
18643 * expr.c (extract_aggr_init): Remove.
18644 (extract_scalar_init): Likewise.
18645 (extract_init): Remove #if 0'd code.
18646 * mangle.c: New function.
18647 * method.c (build_mangled_name): Assert not flag_new_abi.
18648 (build_static_name): Likewise.
18649 (build_decl_overload_real): Likewise.
18650 (build_typename_overload): Likewise.
18651 (build_overload_with_type): Likewise.
18652 (build_overload_name): Likewise.
18653 (get_ctor_vtbl_name): Likewise.
18654 (start_squangling): Likewise.
18655 (get_id_2): Likewise.
18656 (set_mangled_name_for_decl): Call mangle_decl for new ABI.
18657 (init_method): Call init_mangle for new ABI.
18658 (make_thunk): Call mangle_thunk for new ABI.
18659 * operators.def: Correct new ABI manglings for the `%' operator.
18660 Add `::' operator.
18661 * pt.c (build_template_decl): Copy DECL_OVERLOADED_OPERATOR_P and
18662 DECL_ASSIGNMENT_OPERATOR_P to the TEMPLATE_DECL.
18663 (lookup_template_class): Call mangle_decl for new ABI.
18664 (get_mostly_instantiated_function_type): New function.
18665 (set_mangled_name_for_template_decl): Use it.
18666 (tsubst_decl): Use set_mangled_name_for_decl for destructors with
18667 the new ABI. Use mangle_conv_op_name_for_type for instantiated
18668 conversion op names.
18669 * rtti.c (tinfo_name): Call mangle_type_string for new ABI.
18670 (get_tinfo_decl): Call mangle_typeinfo_for_type for new ABI.
18671 (tinfo_base_init): Likewise. Mangle typeinfo string name with
18672 mangle_typeinfo_string_for_type.
18673
18674 2000-06-03 Mark Mitchell <mark@codesourcery.com>
18675
18676 * cp-tree.h (TMPL_ARGS_LEVEL): Clarify comment.
18677 (INNERMOST_TEMPLATE_ARGS): New macro.
18678 (innermost_args): Remove.
18679 (get_innermost_template_args): New function.
18680 * decl2.c (arg_assoc_class): Use INNERMOST_TEMPLATE_ARGS.
18681 * error.c (dump_function_decl): Be caution when using
18682 most_general_template.
18683 * method.c (build_template_parm_names): Use
18684 INNERMOST_TEMPLATE_ARGS.
18685 * pt.c (add_to_template_args): Tidy comment
18686 (get_innermost_template_args): New function.
18687 (check_explicit_specialization): Clear DECL_INITIAL for a new
18688 specialization.
18689 (process_partial_specialization): Use INNERMOST_TEMPLATE_ARGS.
18690 Tidy.
18691 (push_template_decl): Always register specializations of the most
18692 general template.
18693 (convert_template_argument): Use INNERMOST_TEMPLATE_ARGS.
18694 (coerce_template_parms): Likewise.
18695 (lookup_template_class): Likewise.
18696 (innermost_args): Remove.
18697 (tsubst_decl): Use INNERMOST_TEMPLATE_ARGS.
18698 (tsubst_decl): Handle tricky specializations. Use
18699 get_innermost_template_args.
18700 (instantiate_template): Simplify handling of partial
18701 instantiations.
18702 (get_class_bindings): Use INNERMOST_TEMPLATE_ARGS.
18703 (most_general_template): Reimplement, in a more straightforward
18704 manner.
18705 (regenerate_decl_from_template): Tweak formatting. Use
18706 TMPL_ARGS_DEPTH for clarity.
18707 (set_mangled_name_for_template_decl): Use INNERMOST_ARGS.
18708
18709 * dump.c (dequeue_and_dump): Dump information about thunks.
18710
18711 2000-06-01 Richard Henderson <rth@cygnus.com>
18712
18713 * decl.c (init_decl_processing): Set lang_get_alias_set first thing.
18714
18715 2000-06-01 Richard Henderson <rth@cygnus.com>
18716
18717 * decl2.c (unsupported_options): Fix typo, make const.
18718 (lang_decode_option): Fix bsearch argument order.
18719
18720 2000-06-01 Mark Mitchell <mark@codesourcery.com>
18721
18722 * init.c (resolve_offset_ref): Remove check for TREE_ADDRESSABLE
18723 on FIELD_DECLs.
18724
18725 2000-05-31 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
18726
18727 * cp-tree.h (c_get_alias_set): Deleted.
18728 * Makefile.in (decl.o): Include ../expr.h.
18729 * decl.c (expr.h): Include.
18730 (init_decl_processing): Call record_component_aliases for arrays.
18731 (grokdeclarator): Likewise.
18732 Set TREE_ADDRESSABLE for fields that aren't bitfields.
18733 * tree.c (build_cplus_array_type_1): Call record_component_aliases.
18734
18735 2000-05-31 Mark Mitchell <mark@codesourcery.com>
18736
18737 Remove guiding declaration support.
18738 * cp/cp-tree.h (flag_dump_translation_unit): Make it const.
18739 (flag_guiding_decls): Remove.
18740 * call.c (build_user_type_conversion_1): Remove support for
18741 guiding decls.
18742 (build_new_function_call): Likewise.
18743 (build_new_op): Likewise.
18744 (build_new_method_call): Likewise.
18745 * decl.c (start_function): Likewise.
18746 * friend.c (is_friend): Likewise.
18747 (do_friend): Likewise.
18748 * decl2.c ((flag_dump_translation_unit): Make it const.
18749 (flag_guiding_decls): Remove.
18750 (unsupported_options): New variable
18751 (compare_options): New function.
18752 (lang_decode_option): Use them.
18753
18754 * decl.c (build_cp_library_fn): Set DECL_CONTEXT.
18755
18756 * method.c (mangle_expression): Adjust test for legal expression
18757 operators.
18758
18759 * pt.c (instantiate_decl): Save and restore the local
18760 specializations list.
18761
18762 2000-05-30 Jason Merrill <jason@decepticon.cygnus.com>
18763
18764 * decl.c (grok_reference_init): Pass LOOKUP_ONLYCONVERTING.
18765
18766 2000-05-30 Mark Mitchell <mark@codesourcery.com>
18767
18768 * call.c (add_template_candidate_real): Handle member template
18769 constructors for classes with virtual bases.
18770 (build_user_type_conversion_1): Use in_charge_arg_for_name.
18771 (build_new_method_call): Use DECL_NONSTATIC_MEMBER_FUNCTION_P.
18772
18773 * ir.texi: Update thunk documentation.
18774
18775 * call.c (joust): Fix handling of overloaded builtin operators.
18776
18777 2000-05-30 Zack Weinberg <zack@wolery.cumb.org>
18778
18779 * cp-tree.h (DECL_ANTICIPATED): New macro.
18780 Document new use of DECL_LANG_FLAG_7.
18781 * decl.c (builtin_function): Set DECL_ANTICIPATED on builtins
18782 in the user namespace.
18783 * lex.c (do_identifier): If the identifier's declaration has
18784 DECL_ANTICIPATED on, it has not yet been declared. But do not
18785 replace it with an ordinary implicit declaration.
18786
18787 * tinfo2.cc: Include stdlib.h.
18788
18789 2000-05-29 Mark Mitchell <mark@codesourcery.com>
18790
18791 * cp-tree.h (CLASSTYPE_ALIGN_UNIT): New macro.
18792 * class.c (layout_empty_base): Use CLASSTYPE_ALIGN_UNIT, not
18793 CLASSTYPE_ALIGN.
18794
18795 2000-05-28 Gabriel Dos Reis <gdr@codesourcery.com>
18796
18797 * decl2.c (lang_decode_option): Use skip_leading_substring instead
18798 of plain strncmp.
18799
18800 2000-05-28 Alexandre Oliva <aoliva@cygnus.com>
18801
18802 * operators.def (<?): Duplicated, should have been...
18803 (>?): this. Fixed.
18804
18805 2000-05-27 Alex Samuel <samuel@codesourcery.com>
18806 Mark Mitchell <mark@codesourcery.com>
18807
18808 * cp-tree.h (ansi_opname): Make it a macro.
18809 (ansi_assopname): Likewise.
18810 (struct lang_decl_flags): Add assignment_operator_p.
18811 (struct lang_decl): Add operator_code.
18812 (DECL_VTT_PARM): Adjust.
18813 (DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an
18814 overloaded operator.
18815 (SET_OVERLOADED_OPERATOR_CODE): New macro.
18816 (DECL_ASSIGNMENT_OPERATOR_P): New macro.
18817 (DECL_ARRAY_DELETE_OPERATOR_P): Adjust.
18818 (opname_tab): Remove.
18819 (assignop_tab): Likewise.
18820 (operator_name_info_t): New type.
18821 (operator_name_info): New variable.
18822 (assignment_operator_name_info): Likewise.
18823 (build_cp_library_fn): Remove declaration.
18824 (push_cp_library_fn): Likewise.
18825 (operator_name_string): Likewise.
18826 (build_decl_overload): Likewise.
18827 * call.c (print_z_candidates): Simplify.
18828 (build_object_call): Adjust usage of ansi_opname. Use
18829 DECL_OVERLOADED_OPERATOR_P.
18830 (op_error): Adjust operator name lookup.
18831 (build_conditional_expr): Adjust usage of ansi_opname.
18832 (build_new_op): Likewise.
18833 (build_op_delete_call): Likewise.
18834 (build_over_call): Likewise.
18835 (joust): Use DECL_OVERLOADED_OPERATOR_P.
18836 * decl.c (duplicate_decls): Copy operator_code.
18837 (init_decl_processing): Adjust parameters to push_cp_library_fn.
18838 (builtin_function): Adjust parameters to build_library_fn_1.
18839 (build_library_fn_1): Accept an overloaded operator code.
18840 (build_library_fn): Pass ERROR_MARK.
18841 (build_cp_library_fn): Accept an overloaded operator code.
18842 (push_cp_library_fn): Likewise.
18843 (grokfndecl): Tweak.
18844 (grokdeclarator): Simplify code to compute names of overloaded
18845 operators. Adjust use of ansi_opname.
18846 (ambi_op_p): Work on tree_codes, not identifiers.
18847 (unary_op_p): Likewise.
18848 (grok_op_properties): Likewise.
18849 (start_function): Use DECL_OVERLOADED_OPERATOR_P.
18850 (lang_mark_tree): Don't try to mark the operator_code.
18851 * decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P.
18852 * error.c (dump_decl): Remove special handling for operator
18853 names.
18854 (dump_function_name): Likewise.
18855 (dump_expr): Adjust name lookup of operators.
18856 (op_to_string): Simplify.
18857 (assop_to_string): Likewise.
18858 * init.c (build_new_1): Adjust use of ansi_opname.
18859 * lex.c (opname_tab): Remove.
18860 (assignop_tab): Likewise.
18861 (ansi_opname): Likewise.
18862 (ansi_assopname): Likewise.
18863 (operator_name_string): Likewise.
18864 (reinit_lang_specific): Likewise.
18865 (operator_name_info): New variable.
18866 (assignment_operator_name_info): Likewise.
18867 (init_operators): New function.
18868 (init_parse): Use it.
18869 (do_identifier): Adjust use of ansi_opname.
18870 * method.c (mangle_expression): Don't use ansi_opname for
18871 mangling.
18872 (build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P.
18873 (build_decl_overload): Remove.
18874 (build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly.
18875 (do_build_assign_ref): Adjust use of ansi_opname.
18876 (synthesize_method): Likewise.
18877 (implicitly_declare_fn): Likewise.
18878 * operators.def: New file.
18879 * parse.y (operator): Adjust use of ansi_opname.
18880 * pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P.
18881 (set_mangled_name_for_template_decl): Don't play games with
18882 current_namespace.
18883 (special_function_p): Adjust use of ansi_opname.
18884 * typeck.c (check_return_expr): Likewise.
18885 * Make-lang.in (cc1plus): Depend on operators.def.
18886 * Makefile.in (lex.o): Likewise.
18887 (decl.o): Likewise.
18888
18889 2000-05-27 Zack Weinberg <zack@wolery.cumb.org>
18890
18891 * Make-lang.in (cplib2.ready): Eradicate.
18892
18893 2000-05-27 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
18894
18895 * method.c (mangle_expression): Use TREE_CODE_LENGTH.
18896 * tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH.
18897 (built_min, cp_tree_equal): Likewise.
18898
18899 2000-05-26 Mark Mitchell <mark@codesourcery.com>
18900
18901 * class.c (layout_nonempty_base_or_field): Replace
18902 `record_layout_info' with `record_layout_info_s'.
18903
18904 2000-05-26 Jason Merrill <jason@casey.soma.redhat.com>
18905
18906 Fix goto checking.
18907 * cp-tree.h (struct language_function): x_named_labels is now
18908 a struct named_label_list*.
18909 * decl.c (struct named_label_use_list): Renamed from...
18910 (struct named_label_list): ...this. New struct.
18911 (push_binding_level): Don't set eh_region.
18912 (note_level_for_eh): New fn.
18913 (pop_label): Take label and old value directly.
18914 (pop_labels): Adjust for new named_labels format.
18915 (lookup_label): Likewise.
18916 (poplevel): Note characteristics of a binding level containing a
18917 named label. Mess with named label lists earlier.
18918 (mark_named_label_lists): New fn.
18919 (mark_lang_function): Call it.
18920 (use_label): New fn, split out from...
18921 (make_label_decl): ...here. Don't call it.
18922 (decl_jump_unsafe, check_previous_goto, check_previous_goto_1,
18923 check_previous_gotos): New fns, split out from...
18924 (define_label): ...here.
18925 (check_switch_goto): New fn.
18926 (define_case_label): Call it.
18927 (check_goto): New fn.
18928 * semantics.c (finish_goto_stmt): Call it and use_label.
18929 (begin_compound_stmt): If we're a try block, call note_level_for_eh.
18930 (expand_stmt): Never pass 1 as DONT_JUMP_IN to expand_end_bindings.
18931
18932 2000-05-26 Mark Mitchell <mark@codesourcery.com>
18933
18934 * class.c (build_vtable_entry_ref): Correct usage of
18935 get_vtbl_decl_for_binfo.
18936
18937 * decl2.c (grokclassfn): Set DECL_LANGUAGE here.
18938 * method.c (implicitly_declare_fn): Not here.
18939
18940 2000-05-26 Nathan Sidwell <nathan@codesourcery.com>
18941
18942 * cp-tree.h (CPTI_PTMD_DESC_TYPE): Rename to ...
18943 (CPTI_PTMD_DESC_TYPE): ... here.
18944 (ptmd_desc_type_node): Rename to ...
18945 (ptm_desc_type_node): ... here.
18946 * decl.c: Likewise.
18947 * rtti.c (ptmd_initializer): Rename to ...
18948 (ptm_initializer): ... here.
18949 (sythesize_tinfo_var): Adjust. Deal with pointer to member
18950 function.
18951 (create_tinfo_types): Adjust.
18952
18953 2000-05-25 Mark Mitchell <mark@codesourcery.com>
18954
18955 Finish implementation of VTTs.
18956 * cp-tree.h (cp_tree_index): Add CPTI_VTT_PARM_TYPE and
18957 CPTI_VTT_PARM_IDENTIFIER.
18958 (vtt_parm_identifier): New macro.
18959 (vtt_parm_type): Likewise.
18960 (BINFO_SUBVTT_INDEX): Likewise.
18961 (BINFO_VPTR_INDEX): Likewise.
18962 (struct lang_decl): Add vtt_parm.
18963 (DECL_VTT_PARM): New macro.
18964 (DECL_USE_VTT_PARM): Likewise.
18965 (DECL_NEEDS_VTT_PARM_P): Likewise.
18966 (get_vtt_name): Declare.
18967 (build_artificial_parm): Likewise.
18968 (fixup_all_virtual_upcast_offsets): Likewise.
18969 (expand_indirect_vtbls_init): Remove.
18970 * call.c (build_new_method_call): Pass the vtt to subobject
18971 constructors and destructors.
18972 * class.c (get_vtt_name): Give it external linkage.
18973 (build_clone): Handle the magic VTT parameters for clones.
18974 (clone_function_decl): Fix typo in comment.
18975 (build_vtt): Keep track of the indices in the VTTs where various
18976 entities are stored.
18977 (build_vtt_inits): Likewise.
18978 (dfs_build_vtt_inits): Likewise.
18979 (build_ctor_vtbl_group): Tweak type of construction vtables.
18980 (dfs_accumulate_vtbl_inits): Build vtables for all bases, even
18981 primary bases, when building construction vtables.
18982 * decl.c (duplicate_decls): Handle DECL_VTT_PARM.
18983 (initialize_predefined_identifiers): Add vtt_parm_identifier.
18984 (init_decl_processing): Initialize vtt_parm_type.
18985 (grokfndecl): Use DECL_OVERLOADED_OPERATOR_P.
18986 (lang_mark_tree): Make vtt_parm.
18987 * decl2.c (build_artificial_parm): New function.
18988 (maybe_retrofit_in_chrg): Use it. Add VTT parameters.
18989 (grokclassfn): Use build_artificial_parm.
18990 * init.c (initialize_vtbl_ptrs): Call
18991 fixup_all_virtual_upcast_offsets directly.
18992 (perform_member_init): Use the complete subobject destructor for
18993 member cleanups.
18994 (build_vtbl_address): New function.
18995 (expand_virtual_init): Handle VTTs.
18996 * optimize (maybe_clone_body): Likewise.
18997 * search.c (fixup_all_virtual_upcast_offsets): Give it external
18998 linkage.
18999 (expand_indirect_vtbls_init): Remove.
19000 * semantics.c (setup_vtbl_ptr): Fix typos in comment.
19001 * tree.c (make_binfo): Make them bigger.
19002
19003 2000-05-25 Nathan Sidwell <nathan@codesourcery.com>
19004
19005 * inc/cxxabi.h (__pbase_type_info): Define, based on
19006 __pointer_type_info.
19007 (__pointer_type_info): Derive from __pbase_type_info. Adjust.
19008 (__pointer_to_member_type_info): Likewise.
19009 * tinfo2.cc (__pbase_type_info::~__pbase_type_info): Implement.
19010 (__pointer_to_member_type_info::__is_pointer_p): Remove.
19011 (__pointer_type_info::__do_catch): Rename to ...
19012 (__pbase_type_info::__do_catch): ... here. Adjust.
19013 (__pbase_type_info::__pointer_catch): Implement.
19014 (__pointer_type_info::__pointer_catch): Adjust.
19015 (__pointer_to_member_type_info::__pointer_catch): Adjust.
19016
19017 2000-05-25 Nathan Sidwell <nathan@codesourcery.com>
19018
19019 * tinfo.h (__user_type_info::contained_virtual_p): New
19020 predicate.
19021 * tinfo.cc (__user_type_info::do_upcast): Fix bug with diamond
19022 shaped hierarchy.
19023 (__vmi_class_type_info::__do_upcast): Fix bug with NULL pointer to
19024 diamond shaped hierarchy. Add early out for mixed diamond and
19025 duplicate shaped hierarchy.
19026
19027 2000-05-24 Mark Mitchell <mark@codesourcery.com>
19028
19029 * cp-tree.h (build_delete): Change prototype.
19030 (build_vec_delete): Likewise.
19031 * call.c (build_scoped_method_call): Use special_function_kind
19032 values to indicate the kind of destruction to be done.
19033 (build_method_call): Likewise.
19034 * decl.c (finish_destructor_body): Likewise.
19035 (maybe_build_cleanup_1): Likewise. Rename to ...
19036 (maybe_build_cleanup): ... this.
19037 * decl2.c (delete_sanity): Use special_function_kind
19038 values to indicate the kind of destruction to be done.
19039 (build_cleanup): Likewise.
19040 * init.c (perform_member_init): Likewise.
19041 (build_vec_delete_1): Likewise.
19042 (build_dtor_call): Simplify.
19043 (build_delete): Use special_function_kind
19044 values to indicate the kind of destruction to be done.
19045 (build_vbase_delete): Likewise.
19046 (build_vec_delete): Likewise.
19047
19048 * init.c (sort_member_init): Fix typo in error message generation
19049 code.
19050
19051 2000-05-15 Donald Lindsay <dlindsay@cygnus.com>
19052
19053 * semantics.c (begin_class_definition): make the packed
19054 attribute be sensitive to the "-fpack-struct" command line flag
19055
19056 2000-05-24 Nathan Sidwell <nathan@codesourcery.com>
19057
19058 Update new-abi upcast algorithm.
19059 * inc/cxxabi.h (__class_type_info::__do_upcast): Change
19060 prototype and meaning of return value.
19061 (__si_class_type_info::__do_upcast): Likewise.
19062 (__vmi_class_type_info::__do_upcast): Likewise.
19063 * tinfo.cc (__class_type_info::__upcast_result): Replace
19064 whole2dst with part2dst. Adjust ctor.
19065 (__class_type_info::__do_upcast): Adjust call of worker function.
19066 (__class_type_info::__do_upcast): Adjust.
19067 (__si_class_type_info::__do_upcast): Adjust. Use parent's
19068 __do_upcast.
19069 (__vmi_class_type_info::__do_upcast): Likewise. Fix private
19070 virtual base in diamond hierarchy bug.
19071
19072 2000-05-23 Mark Mitchell <mark@codesourcery.com>
19073
19074 * cp-tree.h (lang_decl_flags): Rename mutable_flag to uninlinable
19075 and bitfield to tinfo_fn_p.
19076 (DECL_TINFO_FN_P): Adjust.
19077 (SET_DECL_TINFO_FN_P): Likewise.
19078 (DECL_MUTABLE_P): Likewise.
19079 (DECL_C_BIT_FIELD): Likewise.
19080 (SET_DECL_C_BIT_FIELD): Likewise.
19081 (CLEAR_DECL_C_BIT_FIELD): Likewise.
19082 (DECL_UNINLINABLE): Likewise.
19083 * class.c (alter_access): Call retrofit_lang_decl if ncessary.
19084 (handle_using_decl): Remove assertion.
19085 (build_vtbl_or_vbase_field): Use build_decl, not build_lang_decl,
19086 to build FIELD_DECLs.
19087 (build_base_field): Likewise.
19088 (layout_class_type): Likewise.
19089 * decl.c (init_decl_processing): Likewise.
19090 (build_ptrmemfunc_type): Likewise.
19091 (grokdeclarator): Likewise.
19092 * decl2.c (grok_x_components): Likewise.
19093 * except.c (call_eh_info): Likewise.
19094 * init.c (init_init_processing): Likewise.
19095 * rtti.c (expand_class_desc): Likewise.
19096 (create_pseudo_type_info): Likewise.
19097 (get_vmi_pseudo_type_info): Likewise.
19098 (create_tinfo_types): Likewise.
19099 * ptree.c (print_lang_decl): Adjust.
19100 * typeck.c (build_component_ref): Don't check DECL_LANG_SPECIFIC
19101 before checking DECL_MUTABLE_P.
19102
19103 * decl2.c (maybe_retrofit_in_chrg): Don't create in-charge
19104 parameters for template functions.
19105 * pt.c (tsubst_decl): Make sure we call maybe_retrofit_in_chrg for
19106 destructors as well as constructors.
19107
19108 2000-05-22 Mark Mitchell <mark@codesourcery.com>
19109
19110 * class.c (build_ctor_vtbl_group): Set inits.
19111 * optimize.c (maybe_clone_body): Set DECL_INLINE and
19112 DECL_THIS_INLINE appropriately for clones.
19113
19114 * cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
19115 (DECL_CONV_FN_P): Simplify.
19116 (DECL_OPERATOR): Remove.
19117 (language_to_string): Declare.
19118 * decl.c (duplicate_decls): Fix typo in comment.
19119 (grokdeclarator): Adjust use of IDENTIFIER_TYPENAME_P.
19120 (grok_op_properties): Use DECL_CONV_FN_P instead of
19121 IDENTIFIER_TYPENAME_P.
19122 * dump.c (dequeue_and_dump): Dump the language linkage of
19123 declarations.
19124 * error.c (language_to_string): Give it external linkage.
19125 * method.c (build_typename_overload): Set IDENTIFIER_TYPENAME_P.
19126 (implicitly_declare_fn): Set DECL_LANGUAGE.
19127 * pt.c (check_explicit_specialization): Use DECL_CONV_FN_P, not
19128 IDENTIFIER_TYPENAME_P.
19129 (tsubst_decl): Likewise.
19130 (tsubst_copy): Adjust use of IDENTIFIER_TYPENAME_P.
19131 * semantics.c (finish_member_declaration): Don't mark members of
19132 classes declared in an extern "C" region as extern "C".
19133
19134 2000-05-22 Martin v. Löwis <loewis@informatik.hu-berlin.de>
19135
19136 * decl2.c (qualified_lookup_using_namespace): Look through
19137 namespace aliases.
19138
19139 * decl.c (push_using_decl): Return the old decl on namespace level.
19140
19141 2000-05-21 Mark Mitchell <mark@codesourcery.com>
19142
19143 * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Add sanity checks.
19144 (VTT_NAME_PREFIX): New macro.
19145 (CTOR_VTBL_NAME_PREFIX): Likewise.
19146 (get_ctor_vtbl_name): New function.
19147 * class.c (get_vtable_name): Simplify.
19148 (get_vtt_name): New function.
19149 (get_vtable_decl): Don't set IDENTIFIER_GLOBAL_VALUE.
19150 (dfs_mark_primary_bases): Update the CLASSTYPE_VBASECLASSES list
19151 when a virtual base becomes primary.
19152 (finish_struct_1): Set CLASSTYPE_VFIELDS a little earlier. Build
19153 VTTs.
19154 (finish_vtbls): Adjust calls to accumulate_vtbl_inits to pass in
19155 additional parameters.
19156 (dfs_finish_vtbls): Don't clear BINFO_NEW_VTABLE_MARKED.
19157 (initialize_array): New function.
19158 (build_vtt): Likewise.
19159 (build_vtt_inits): Likewise.
19160 (dfs_build_vtt_inits): Likewise.
19161 (dfs_fixup_binfo_vtbls): Likewise.
19162 (build_ctor_vtbl_group): Likewise.
19163 (initialize_vtable): Use initialize_array.
19164 (accumulate_vtbl_inits): Reimplement to handle construction
19165 vtables.
19166 (dfs_accumulate_vtbl_inits): Likewise.
19167 (bulid_vtbl_initializer): Adjust parameter name.
19168 * method.c (build_typename_overload): Remove #if 0'd code.
19169 (get_ctor_vtbl_name): New function.
19170 * search.c (dfs_walk_real): Use BINFO_N_BASETYPES.
19171 (init_vbase_pointers): Don't mess with the TREE_CHAIN of a binfo.
19172
19173 * cp-tree.h (struct lang_type): Remove search_slot.
19174 (CLASSTYPE_SEARCH_SLOT): Remove.
19175 (emit_base_init): Change prototype.
19176 (initialize_vtbl_ptrs): Likewise.
19177 (expand_indirect_vtbls_init): Likewise.
19178 (clear_search_slots): Remove.
19179 * decl.c (lang_mark_tree): Don't mark search_slot.
19180 * init.c (initialize_vtbl_ptrs): Simplify.
19181 (emit_base_init): Likewise.
19182 * search.c (struct vbase_info): Document decl_ptr.
19183 (convert_pointer_to_single_level): Remove.
19184 (dfs_find_vbases): Remove.
19185 (dfs_init_base_pointers): Simplify.
19186 (dfs_clear_vbase_slots): Remove.
19187 (dfs_vtable_path_unmark): New function.
19188 (init_vbase_pointers): Simplify.
19189 (expand_upcast_fixups): Don't rely on CLASSTYPE_SEARCH_SLOT.
19190 (expand_indirect_vtbls_init): Simplify. Don't call
19191 mark_all_temps_used.
19192 * semantics.c (setup_vtbl_ptr): Adjust calls to emit_base_init and
19193 initialize_vtbl_ptrs.
19194
19195 2000-05-20 Zack Weinberg <zack@wolery.cumb.org>
19196
19197 * except.c: Add static prototypes.
19198
19199 2000-05-20 H.J. Lu <hjl@gnu.org>
19200
19201 * Make-lang.in (cplib2.ready): Also depend on cc1plus$(exeext).
19202
19203 2000-05-19 Mark Mitchell <mark@codesourcery.com>
19204
19205 Don't create a separate copy of virtual bases for the
19206 CLASSTYPE_VBASECLASSES list.
19207 * cp-tree.h (CLASSTYPE_VBASECLASSES): Change documentation.
19208 (BINFO_FOR_VBASE): Remove.
19209 (CANONICAL_BINFO): Adjust.
19210 (binfo_for_vbase): New function.
19211 * class.c (build_vbase_pointer_fields): Use binfo_for_vbase
19212 instead of BINFO_FOR_VBASE.
19213 (build_vbase_pointer): Likewise.
19214 (build_secondary_vtable): Likewise.
19215 (dfs_mark_primary_bases): Likewise.
19216 (mark_primary_bases): Likewise.
19217 (layout_nonempty_base_or_field): Likewise.
19218 (dfs_set_offset_for_shared_vbases): Likewise.
19219 (dfs_set_offset_for_unshared_vbases): Likewise.
19220 (layout_virtual_bases): Likewise. Adjust for changes to the
19221 CLASSTYPE_VBASECLASSES list.
19222 (dump_class_hierarchy_r): Use binfo_for_vbase
19223 instead of BINFO_FOR_VBASE.
19224 (dump_class_hierarchy): Likewise.
19225 (finish_vtbls): Likewise.
19226 (build_vtbl_initializer): Adjust for changes to the
19227 CLASSTYPE_VBASECLASSES list.
19228 (build_vbase_offset_vtbl_entries): Use binfo_for_vbase.
19229 * decl.c (finish_destructor_body): Adjust for changes to the
19230 CLASSTYPE_VBASECLASSES list.
19231 * init.c (sort_base_init): Use binfo_for_vbase.
19232 (construct_virtual_bases): Adjust for changes to the
19233 CLASSTYPE_VBASECLASSES list.
19234 (expand_member_init): Use binfo_for_vbase.
19235 (build_vbase_delete): Adjust for changes to the
19236 CLASSTYPE_VBASECLASSES list.
19237 * method.c (do_build_copy_constructor): Likewise.
19238 * rtti.c (get_base_offset): Use binfo_for_vbase.
19239 (expand_class_desc): Remove #if 0'd code.
19240 * search.c (struct vbase_info): Remove vbase_types.
19241 (get_base_distance): Use binfo_for_vbase.
19242 (lookup_field_queue_p): Use CANONICAL_BINFO.
19243 (get_shared_vbase_if_not_primary): Use binfo_for_vbase.
19244 (get_pure_virtuals): Adjust for changes to the
19245 CLASSTYPE_VBASECLASSES list.
19246 (dfs_find_vbases): Use binfo_for_vbase.
19247 (dfs_init_vbase_pointers): Likewise.
19248 (init_vbase_pointers): Don't initialize vi.vbase_types.
19249 (virtual_context): Use binfo_for_vbase.
19250 (fixup_all_virtual_upcast_offsets): Adjust for changes to the
19251 CLASSTYPE_VBASECLASSES list.
19252 (expand_indirect_vtbls_init): Simplify.
19253 (dfs_get_vbase_types): Don't replicate virtual bases.
19254 (find_vbase_instance): Use binfo_for_vbase.
19255 (binfo_for_vbase): New function.
19256 * typeck.c (get_delta_difference): Use binfo_for_vbase.
19257
19258 2000-05-17 Mark Mitchell <mark@codesourcery.com>
19259
19260 * decl2.c (finish_anon_union): Generalize error messages to handle
19261 anonymous structures.
19262 * init.c (perform_member_init): Remove `name' parameter.
19263 (build_field_list): New function.
19264 (sort_member_init): Handle anonymous union initialization order
19265 correctly. Check for multiple initializations of the same union.
19266 (emit_base_init): Don't look up fields by name here.
19267 (expand_member_init): Record the result of name lookup for future
19268 reference.
19269 * typeck.c (build_component_ref): Fix formatting.
19270
19271 2000-05-17 Andrew Cagney <cagney@b1.cygnus.com>
19272
19273 * decl.c (pop_label): Replace warn_unused with warn_unused_label.
19274 * typeck.c (build_x_compound_expr): Replace warn_unused with
19275 warn_unused_value.
19276
19277 * decl2.c (lang_decode_option): Update -Wall unused flags by
19278 calling set_Wunused.
19279
19280 2000-05-16 Mark Mitchell <mark@codesourcery.com>
19281
19282 * cp-treeh (BINFO_NEW_VTABLE_MARKED): Update documentation.
19283 * init.c (dfs_vtable_path_unmark): Remove.
19284 * search.c (marked_new_vtable_p): Likewise.
19285 (unmarked_new_vtable_p): Likewise.
19286 (dfs_search_slot_nonempty_p): Likewise.
19287 (dfs_mark): Likewise.
19288 (dfs_vtable_path_unmark): Likewise.
19289 (dfs_find_vbases): Don't set BINFO_NEW_VTABLE_MARKED.
19290 (dfs_int_vbase_pointers): Don't clear BINFO_VTABLE_PATH_MARKED.
19291 (dfs_init_vbase_pointers): Remove special-case new ABI code.
19292 (dfs_clear_vbase_slots): Don't clear BINFO_NEW_VTABLE_MARKED.
19293 (init_vbase_pointers): Simplify.
19294 (expand_indirect_vtbls_init): Likewise.
19295
19296 * class.c (copy_virtuals): New function.
19297 (build_primary_table): Use it.
19298 (build_secondary_vtable): Likewise.
19299 (modify_vtable_entry): Use NULL_TREE, not integer_zero_node, to
19300 indicate that no vcall offset is required.
19301 (add_virtual_function): Likewise.
19302 (modify_all_vtables): Likewise.
19303 (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
19304 (dfs_accumulate_vtbl_inits): Likewise.
19305 (build_vtbl_initializer): Make changes to handle construction
19306 vtables.
19307 (dfs_build_vcall_offset_vtbl_entries): Likewise.
19308 (build_rtti_vtbl_entries): Likewise.
19309 (build_vtable_entries): Handle a NULL vcall_index.
19310
19311 2000-05-15 Gabriel Dos Reis <gdr@codesourcery.com>
19312
19313 * decl2.c (lang_decode_option): Fix thinko.
19314
19315 2000-05-14 Jason Merrill <jason@casey.cygnus.com>
19316
19317 * except.c (check_handlers): New fn.
19318 * cp-tree.h: Declare it.
19319 * semantics.c (finish_handler_sequence): Call it.
19320 (finish_function_handler_sequence): Likewise.
19321 (finish_handler_parms): Set TREE_TYPE on the handler.
19322 * cp-tree.h (PUBLICLY_UNIQUELY_DERIVED_P): New macro.
19323 * search.c (get_base_distance_recursive): If protect>1, ignore
19324 special access.
19325 (get_base_distance): Don't reduce watch_access.
19326
19327 2000-05-13 Gabriel Dos Reis <gdr@codesourcery.com>
19328
19329 * lex.c: #include diagnostic.h.
19330 (lang_init_options): Set default prefixing rules.
19331
19332 * lang-options.h: Add -fdiagnostics-show-location=.
19333
19334 * decl2.c: #include diagnostic.h.
19335 (lang_decode_option): Handle -fdiagnostics-show-location=.
19336
19337 2000-05-12 Nathan Sidwell <nathan@codesourcery.com>
19338
19339 * tinfo.cc: Revert my 2000-05-08 and 2000-05-07 changes.
19340 * vec.cc: Revert my 2000-05-07 change.
19341
19342 2000-05-11 Jason Merrill <jason@casey.cygnus.com>
19343
19344 * class.c (check_field_decls): Complain about non-static data
19345 members with same name as class in class with constructor.
19346
19347 2000-05-10 Jason Merrill <jason@casey.cygnus.com>
19348
19349 * decl.c (grokdeclarator): Allow non-static data members with
19350 same name as class.
19351
19352 2000-05-09 Zack Weinberg <zack@wolery.cumb.org>
19353
19354 * cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
19355 and pending_inline.filename. Update prototypes.
19356 * decl.c (define_label): Constify filename parameter.
19357 * decl2.c (warn_if_unknown_interface): Constify local char *.
19358 * input.c Constify input_source.filename. Don't declare
19359 input_filename or lineno. Constify filename parameter to feed_input.
19360 * lex.c (init_parse): Constify parameter and return value.
19361 (cp_pragma_interface, cp_pragma_implementation): Constify
19362 filename argument.
19363 (reinit_parse_for_method, reinit_parse_for_block,
19364 reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
19365 Constify local char *.
19366 * pt.c: Don't declare lineno or input_filename.
19367 (print_template_context, tsubst_friend_function, tsubst_decl,
19368 tsubst, instantiate_decl): Constify local char *.
19369 * semantics.c (expand_body): Constify local char *.
19370 * tree.c (build_srcloc): Constify filename parameter.
19371 * typeck.c (c_expand_asm_operands): Constify filename
19372 parameter.
19373
19374 2000-05-08 Nathan Sidwell <nathan@codesourcery.com>
19375
19376 * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix
19377 offsetof expansion.
19378
19379 2000-05-08 Branko Cibej <branko.cibej@hermes.si>
19380
19381 * inc/cxxabi.h: Fix typos in comment.
19382 (__base_class_info::__offset): Use a static_cast.
19383
19384 2000-05-07 Nathan Sidwell <nathan@codesourcery.com>
19385
19386 * inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
19387 of std::size_t and std::ptrdiff_t respectively.
19388 * tinfo.cc: Likewise.
19389 * vec.cc: Likewise.
19390
19391 2000-05-06 Richard Henderson <rth@cygnus.com>
19392
19393 * typeck.c (build_c_cast): Don't warn integer->pointer size
19394 mismatch for constants.
19395
19396 2000-05-06 Nathan Sidwell <nathan@codesourcery.com>
19397
19398 * rtti.c (ptmd_initializer): Set non-public, if class is
19399 incomplete.
19400
19401 * inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
19402 (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
19403 __cxa_vec_delete): Likewise.
19404 * tinfo.cc (__dynamic_cast): Likewise.
19405 * vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
19406 __cxa_vec_delete): Likewise.
19407
19408 2000-05-04 Mark Mitchell <mark@codesourcery.com>
19409
19410 * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove.
19411 (SET_FNADDR_FROM_VTABLE_ENTRY): Likewise.
19412 (lang_decl_flags): Add vcall_offset.
19413 (THUNK_VCALL_OFFSET): Use it.
19414 * decl.c (lang_mark_tree): Don't mark DECL_ACCESS for a thunk.
19415 * method.c (make_thunk): Create the lang_decl here, not in
19416 emit_thunk.
19417 (emit_thunk): Make generic thunks into ordinary functions once
19418 they have been fed to expand_body.
19419 * semantics.c (expand_body): Set current_function_is_thunk here.
19420
19421 2000-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
19422
19423 * class.c (update_vtable_entry_for_fn): Prototype.
19424
19425 * pt.c (tsubst_decl): Initialize variables `argvec', `gen_tmpl'
19426 and `tmpl'.
19427
19428 * search.c (dfs_build_inheritance_graph_order): Prototype.
19429
19430 2000-05-04 Mark Mitchell <mark@codesourcery.com>
19431
19432 * cp-tree.h (special_function_kind): Add various kinds of
19433 destructors.
19434 (special_function_p): New function.
19435 * class.c (overrides): Don't let one kind of destructor override
19436 another.
19437 * decl2.c (mark_used): Use DECL_NON_THUNK_FUNCTION_P when deciding
19438 whether or not to instantiate a template.
19439 * tree.c (special_function_p): Define.
19440
19441 2000-05-03 Mark Mitchell <mark@codesourcery.com>
19442
19443 * cp-tree.def (THUNK_DECL): Remove.
19444 * cp-tree.h (DECL_THUNK_P): New macro.
19445 (DECL_NON_THUNK_FUNCTION_P): Likewise.
19446 (DECL_EXTERN_C_FUNCTION_P): Likewise.
19447 (SET_DECL_THUNK_P): Likewise.
19448 (DELTA_FROM_VTABLE_ENTRY): Use DECL_THUNK_P.
19449 (FNADDR_FROM_VTABLE_ENTRY): Likewise.
19450 (DECL_MAIN_P): Use DECL_EXTERN_C_FUNCTION_P.
19451 * decl.c (decls_match): Use DECL_EXTERN_C_P.
19452 (duplicate_decls): Likewise.
19453 (pushdecl): Likewise. Adjust thunk handling.
19454 (grokfndecl): Use DECL_EXTERN_C_P.
19455 * decl2.c (mark_vtable_entries): Use DECL_THUNK_P.
19456 * dump.c (dequeue_and_dump): Remove THUNK_DECL handling.
19457 * except.c (nothrow_libfn_p): Use DECL_EXTERN_C_P.
19458 * expr.c (cplus_expand_expr): Remove THUNK_DECL handling.
19459 * method.c (make_thunk): Use SET_DECL_THUNK_P. Set
19460 DECL_NO_STATIC_CHAIN.
19461 (emit_thunk): Don't play games with TREE_CODE on thunks. Don't
19462 set DECL_DESTRUCTOR_P or DECL_CONSTRUCTOR_P on a thunk.
19463 * search.c (covariant_return_p): Remove THUNK_DECL handling.
19464 * ir.texi: Update.
19465
19466 2000-05-01 Jason Merrill <jason@casey.cygnus.com>
19467
19468 * tree.c (walk_tree): Set lineno.
19469
19470 2000-05-01 Mark Mitchell <mark@codesourcery.com>
19471
19472 * exception.cc: Update license notice.
19473 * new.cc: Likewise.
19474 * new1.cc: Likewise.
19475 * new2.cc: Likewise.
19476 * tinfo.cc: Likewise.
19477 * tinfo2.cc: Likewise.
19478 * vec.cc: Likewise.
19479 * inc/cxxabi.h: Likewise.
19480 * inc/exception: Likewise.
19481 * inc/new: Likewise.
19482 * inc/new.h: Likewise.
19483 * inc/typeinfo: Likewise.
19484
19485 2000-05-01 Jason Merrill <jason@casey.cygnus.com>
19486
19487 * tree.c (build_target_expr_with_type): If we already have a
19488 TARGET_EXPR, just return it.
19489
19490 * optimize.c (initialize_inlined_parameters): Don't generate an
19491 EXPR_STMT if we can just use DECL_INITIAL.
19492 * decl.c (emit_local_var): Only make the initialization a
19493 full-expression if stmts_are_full_exprs_p.
19494
19495 2000-05-01 Mark Mitchell <mark@codesourcery.com>
19496
19497 * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): New
19498 macro.
19499 * call.c (standard_conversion): Use it.
19500 (direct_reference_binding): Likewise.
19501 (build_over_call): Likewise.
19502 (is_properly_derived_from): Likewise.
19503 (compare_ics): Likewise.
19504 * class.c (resolves_to_fixed_type_p): Likewise.
19505 * optimize.c (declare_return_variable): Likewise.
19506 * pt.c (is_specialization_of): Likewise.
19507 (unify): Likewise.
19508 * typeck.c (comp_target_parms): Likeiwse.
19509 (build_static_cast): Likewise.
19510 (build_reinterpret_cast): Likewise.
19511 (build_const_cast): Likewise.
19512 (comp_ptr_ttypes_real): Likewise.
19513 (comp_ptr_ttypes_const): Likewise.
19514 * typeck2.c (process_init_constructor): Likewise.
19515
19516 2000-04-30 Scott Snyder <snyder@fnal.gov>
19517
19518 * decl.c (finish_destructor_body): Use the base destructor when
19519 destroying virtual bases.
19520
19521 2000-04-30 Mark Mitchell <mark@codesourcery.com>
19522
19523 * expr.c (cplus_expand_expr): Preserve temporaries when expanding
19524 STMT_EXPRs.
19525 * optimize.c (struct inline_data): Add target_exprs field.
19526 (declare_return_variable): When a function returns an aggregate,
19527 use the variable declared in the TARGET_EXPR as the remapped
19528 DECL_RESULT.
19529 (expand_call_inline): Update the pending target_exprs stack.
19530 (optimize_function): Initialize the stack.
19531
19532 * decl2.c (finish_file): Fix typo in comment.
19533
19534 * method.c (emit_thunk): Don't try to return a `void' value.
19535
19536 * optimize.c (initialize_inlined_parameters): If the parameter is
19537 addressable, we need to make a new VAR_DECL, even if the
19538 initializer is constant.
19539
19540 2000-04-28 Cosmin Truta <cosmint@cs.ubbcluj.ro>
19541
19542 * decl.c (grok_op_properties): Add an extra check of argtypes.
19543
19544 2000-04-27 Mark Mitchell <mark@codesourcery.com>
19545
19546 * optimize.c (copy_body_r): Use STRIP_TYPE_NOPS when copying
19547 variables.
19548 (initialize_inlined_parameters): Try to avoid creating new
19549 VAR_DECLs.
19550
19551 2000-04-27 Alex Samuel <samuel@codesourcery.com>
19552
19553 * lex.c (my_get_run_time): Remove.
19554 (init_filename_times): Use get_run_time instead of my_get_run_time.
19555 (check_newline): Likewise.
19556 (dump_time_statistics): Likewise.
19557 * decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
19558 of computing elapsed time explicitly.
19559
19560 2000-04-26 Mark Mitchell <mark@codesourcery.com>
19561
19562 * cp-tree.h (TREE_READONLY_DECL_P): Use DECL_P.
19563 * init.c (decl_constant_value): Check TREE_READONLY_DECL_P.
19564 * call.c (convert_like_real): Don't test TREE_READONLY_DECL_P
19565 before calling decl_constant_value.
19566 * class.c (check_bitfield_decl): Likewise.
19567 * cvt.c (ocp_convert): Likewise.
19568 (convert): Likewise.
19569 * decl.c (compute_array_index_type): Likewise.
19570 (build_enumerator): Likewise.
19571 * decl2.c (check_cp_case_value): Likewise.
19572 * pt.c (convert_nontype_argument): Likewise.
19573 (tsubst): Likewise.
19574 * typeck.c (decay_conversion): Likewise.
19575 (build_compound_expr): Likewise.
19576 (build_reinterpret_cast): Likewise.
19577 (build_c_cast): Likewise.
19578 (convert_for_assignment): Likewise.
19579
19580 2000-04-26 Jason Merrill <jason@casey.cygnus.com>
19581
19582 * decl.c (finish_function): Don't play games with DECL_INLINE.
19583
19584 2000-04-25 Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr>
19585
19586 * ir.texi: Correct typo.
19587
19588 2000-04-25 Martin v. Löwis <loewis@informatik.hu-berlin.de>
19589
19590 * decl.c (grokdeclarator): Reject VLAs as members.
19591
19592 2000-04-24 Gabriel Dos Reis <gdr@codesourcery.com>
19593
19594 * call.c (standard_conversion): Accept conversion between
19595 COMPLEX_TYPEs.
19596
19597 * cvt.c (ocp_convert): Handle conversion to COMPLEX_TYPE.
19598
19599 2000-04-24 Zack Weinberg <zack@wolery.cumb.org>
19600
19601 * decl2.c (finish_file): Remove double setup for accounting
19602 compile time.
19603
19604 2000-04-24 Robert Lipe <robertlipe@usa.net>
19605
19606 * cp-tree.h (lang_type): Member `language' now ENUM_BITFIELD.
19607
19608 2000-04-23 Benjamin Kosnik <bkoz@cygnus.com>
19609
19610 * new.cc (set_new_handler): Needs to be in std::.
19611
19612 2000-04-23 Mark Mitchell <mark@codesourcery.com>
19613
19614 * cp-tree.h (lang_decl): Remove pretty_function_p.
19615 (DECL_PRETTY_FUNCTION_P): Use TREE_LANG_FLAG_0, not a bit in the
19616 language-specific node.
19617 * decl.c (cp_make_fname_decl): Use build_decl, not
19618 build_lang_decl, to build the variables.
19619 (grokvardecl): Don't call build_lang_decl for local variables in
19620 templates.
19621 (grokdeclarator): Don't call build_lang_decl for local type
19622 declarations in templates.
19623 * lex.c (retrofit_lang_decl): Use ggc_alloc_obj to allocated
19624 zero'd memory, rather than calling memset.
19625 * pt.c: Include hashtab.h.
19626 (local_specializations): New variable.
19627 (retrieve_local_specialization): Use it.
19628 (register_local_specialization): Likewise.
19629 (tsubst_decl): Don't assume local variables have
19630 DECL_LANG_SPECIFIC.
19631 (instantiate_decl): Set up local_specializations.
19632 * Makefile.in (HTAB_H): New variable.
19633
19634 2000-04-23 Richard Henderson <rth@cygnus.com>
19635
19636 * typeck.c (c_expand_asm_operands): Restore the original
19637 contents of the output list.
19638
19639 2000-04-22 Gabriel Dos Reis <gdr@codesourcery.com>
19640
19641 * ir.texi: Document complex number representation.
19642
19643 2000-04-20 Nathan Sidwell <nathan@codesourcery.com>
19644
19645 * rtti.c (init_rtti_processing): Set tinfo_var_id in new-abi.
19646 (target_incomplete_p): New function.
19647 (tinfo_base_init): Create comdat NTBS name variable.
19648 (ptr_initializer): Add non_public parameter. Calculate it.
19649 (ptmd_initializer): Likewise.
19650 (synthesize_tinfo_var): Adjust. Emit incomplete class tinfo.
19651 (create_real_tinfo_var): Add non_public parameter. Use it.
19652 Push proxy into global namespace.
19653 * inc/cxxabi.h (__pointer_type_info::incomplete_class_mask):
19654 New enumeration.
19655 * inc/typeinfo (type_info::before, type_info::operator==):
19656 Compare __name addresses.
19657
19658 * tinfo2.cc: Remove new-abi builtins comment.
19659
19660 2000-04-20 Jason Merrill <jason@casey.cygnus.com>
19661
19662 * typeck.c (build_x_function_call): Resolve an OFFSET_REF.
19663
19664 * call.c (joust): Exit early if we get the same function, too.
19665
19666 * decl2.c (key_method): Return NULL_TREE for template classes.
19667 (import_export_class): Don't need to check for template classes.
19668
19669 2000-04-18 Zack Weinberg <zack@wolery.cumb.org>
19670
19671 * lex.c: Remove references to cccp.c.
19672
19673 2000-04-18 Mark Mitchell <mark@codesourcery.com>
19674
19675 * cp-tree.h (lang_decl_flags): Remove const_memfunc and
19676 volatile_memfunc. Add destructor_attr. Adjust dummy.
19677 (DECL_DESTRUCTOR_P): Use destructor_attr.
19678 (DECL_CONST_MEMFUNC_P): Reimplement.
19679 (DECL_VOLATILE_MEMFUNC_P): Remove.
19680 * class.c (finish_struct_methods): Use CLASSTYPE_DESTRUCTORS.
19681 (overrides): Use DECL_DESTRUCTOR_P.
19682 (check_for_override): Likewise.
19683 * decl.c (start_function): Likewise.
19684 * decl2.c (grokfclassfn): Likewise.
19685 (check_classfn): Likewise.
19686 (grok_function_init): Likewise.
19687
19688 2000-04-17 Mark Mitchell <mark@codesourcery.com>
19689
19690 * decl2.c (grokfield): Issue error on illegal data member
19691 declaration.
19692
19693 2000-04-17 Mark P Mitchell <mark@codesourcery.com>
19694
19695 * method.c (make_thunk): Set DECL_CONTEXT for a THUNK_DECL.
19696
19697 2000-04-16 Mark Mitchell <mark@codesourcery.com>
19698
19699 * class.c (build_vtable_entry): Don't build thunks for type-info
19700 functions.
19701
19702 2000-04-16 Jason Merrill <jason@casey.cygnus.com>
19703
19704 * decl.c (decls_match): Allow a redeclaration of a builtin to
19705 specify args while the builtin did not.
19706
19707 2000-04-15 Mark Mitchell <mark@codesourcery.com>
19708
19709 * cp-tree.def (THUNK_DECL): Add to documentation.
19710 * cp-tree.h (flag_huge_objects): Declare.
19711 * class.c (modify_vtable_entry): Tidy.
19712 (update_vtable_entry_for_fn): Split out from dfs_modify_vtables.
19713 Calculate delta appropriately for the new ABI.
19714 (dfs_modify_vtables): Use it.
19715 (modify_all_vtables): Fix thinko in code to add overriding copies
19716 of functions to primary vtables.
19717 (build_clone): Fix typo in comment.
19718 (clone_function_decl): Correct order of destructors in vtable.
19719 (build_vbase_offset_vtbl_entries): Adjust comment.
19720 (dfs_vcall_offset_queue_p): Remove.
19721 (dfs_build_vcall_offset_vtbl_entries): Update BV_VCALL_INDEX.
19722 (build_vcall_offset_vtbl_entries): Juse use dfs_skip_vbases.
19723 (build_vtable_entry): Correct check for pure virtual functions.
19724 Don't declare flag_huge_objects.
19725 * decl.c (flag_huge_objects): Remove declaration.
19726 * method.c (make_thunk): Tweak mangling for vcall offset thunks.
19727 Use int_size_in_bytes.
19728 (emit_thunk): Handle vcall offset thunks.
19729
19730 2000-04-15 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
19731
19732 * decl2.c (parse_time, varconst_time): Delete declarations.
19733 (finish_file): Delete LINENO declaration.
19734 START_TIME and THIS_TIME now long.
19735
19736 2000-04-13 Nathan Sidwell <nathan@codesourcery.com>
19737
19738 * class.c (build_base_field): Reformat comment.
19739
19740 * inc/cxxabi.h (stddef.h): Comment inclusion.
19741 (__base_class_info::__offset): Comment shift.
19742
19743 2000-04-12 Mark Mitchell <mark@codesourcery.com>
19744
19745 * cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
19746 (cp_tree_index): Add CPTI_PUSH_EXCEPTION_IDENTIFIER.
19747 (cp_push_exception_identifier): New macro.
19748 (DECL_COMPLETE_DESTRUCTOR_P): New macro.
19749 (DECL_BASE_DESTRUCTOR_P): Likewise.
19750 (DECL_DELETING_DESTRUCTOR_P): Likewise.
19751 (get_vtbl_decl_for_binfo): Fix formatting.
19752 (in_charge_arg_for_name): New macro.
19753 (maybe_build_cleanup_and_delete): Remove declaration.
19754 * call.c (build_field_call): Use IDENTIFIER_CTOR_OR_DTOR_P.
19755 (in_charge_arg_for_name): New function.
19756 (build_new_method_call): Use it. Handle cloned destructors.
19757 (build_clone): Don't make the base constructor virtual.
19758 Automatically defer generated functions.
19759 (clone_function_decl): Handle destructors, too.
19760 (clone_constructors_and_destructors): Likewise.
19761 (create_vtable_ptr): Don't create a vtable entry for a cloned
19762 function.
19763 * decl.c (predefined_identifier): Add ctor_or_dtor_p.
19764 (initialize_predefined_identifiers): Update appropriately.
19765 (finish_destructor_body): Simplify.
19766 (maybe_build_cleanup_and_delete): Remove.
19767 * except.c (expand_throw): Handle new-ABI destructors.
19768 * init.c (expand_cleanup_for_base): Use base_dtor_identifier.
19769 (build_dtor_call): New function.
19770 (build_delete): Use it. Simplify.
19771 * optimize.c (maybe_clone_body): Handle destructors.
19772 * search.c (lookup_field_queue_p): Use IDENTIFIER_CTOR_OR_DTOR_P.
19773
19774 * exception.cc (cleanup_fn): New typedef.
19775 (CALL_CLEANUP): New macro.
19776 (cp_eh_info): Use them.
19777 (__cp_push_exception): Likewise.
19778 (__cp_pop_exception): Likewise.
19779
19780 2000-04-11 Mark Mitchell <mark@codesourcery.com>
19781
19782 * cp-tree.h (cp_tree_index): Add CPTI_DTOR_IDENTIFIER.
19783 (complete_dtor_identifier): New macro.
19784 (CLASSTYPE_FIRST_CONVERSION): Remove.
19785 (CLASSTYPE_CONSTRUCTOR_SLOT): New macro.
19786 (CLASSTYPE_DESTRUCTOR_SLOT): Likewise.
19787 (CLASSTYPE_FIRST_CONVERSION_SLOT): Likewise.
19788 (CLASSTYPE_CONSTRUCTORS): Likewise.
19789 (CLASSTYPE_DESTRUCTORS): Likewise.
19790 (lang_decl): Add cloned_function.
19791 (DECL_COMPLETE_CONSTRUCTOR_P): New macro.
19792 (DECL_BASE_CONSTRUCTOR_P): Likewise.
19793 (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
19794 (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
19795 (DECL_CLONED_FUNCTION_P): Likewise.
19796 (DECL_CLONED_FUNCTION): Likewise.
19797 (clone_function_decl): Declare.
19798 (maybe_clone_body): Likewise.
19799 * call.c (build_user_type_conversion_1): Call complete object
19800 constructors in the new ABI.
19801 (build_new_method_call): Don't add in-charge parameters under the
19802 new ABI.
19803 * class.c (add_method): Use DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P,
19804 DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P, CLASSTYPE_CONSTRUCTOR_SLOT, and
19805 CLASSTYPE_DESTRUCTOR_SLOT.
19806 (build_clone): New function.
19807 (clone_function_decl): Likewise.
19808 (clone_constructors_and_destructors): Likewise.
19809 (check_bases_and_members): Use it.
19810 * decl.c (iniitialize_predefined_identifiers): Initialize
19811 complete_dtor_identifier.
19812 (finish_function): Don't add extra code to a clone.
19813 (lang_mark_tree): Mark cloned_function.
19814 * decl2.c (mark_used): Don't bother trying to instantiate things
19815 we synthesized.
19816 * dump.c (dequeue_and_dump): Don't dump CP_DECL_CONTEXT twice.
19817 * method.c (set_mangled_name_for_decl): Don't treat clones as
19818 constructors.
19819 (synthesize_method): Sythesize cloned functions, not the clones.
19820 * optimize.c (inline_data): Update comment on ret_label.
19821 (remap_block): Don't assume DECL_INITIAL exists.
19822 (copy_body_r): Allow ret_label to be NULL.
19823 (maybe_clone_body): Define.
19824 * pt.c (tsubst_decl): Handle clones.
19825 (instantiate_clone): New function.
19826 (instantiate_template): Use it.
19827 (set_mangled_name_for_template_decl): Don't treat clones as
19828 constructors.
19829 * search.c (lookup_fnfields_1): Use CLASSTYPE_CONSTRUCTOR_SLOT,
19830 CLASSTYPE_DESTRUCTOR_SLOT, and CLASSTYPE_FIRST_CONVERSION_SLOT.
19831 * semantics.c (expand_body): Clone function bodies as necessary.
19832
19833 * optimize.c (remap_decl): Avoid sharing structure for arrays
19834 whose size is only known at run-time.
19835 * tree.c (copy_tree_r): Don't copy PARM_DECLs.
19836
19837 * cp-tree.h (lang_decl_flags): Rename constructor_for_vbase_attr
19838 to has_in_charge_parm_p.
19839 (DECL_CONSTRUCTOR_FOR_VBASE_P): Rename to ...
19840 (DECL_HAS_IN_CHARGE_PARM_P): ... this.
19841 (DECL_COPY_CONSTRUCTOR_P): New macro.
19842 * call.c (add_function_candidate): Use DECL_HAS_IN_CHARGE_PARM_P.
19843 (build_user_type_conversion_1): Likewise.
19844 (convert_like_real): Likewise.
19845 (build_over_call): Likeiwse. Use DECL_COPY_CONSTRUCTOR_P.
19846 * decl.c (grokdeclarator): Use DECL_HAS_IN_CHARGE_PARM_P.
19847 (copy_args_p): Likewise.
19848 (grok_ctor_properties): Likewise.
19849 (start_function): Likewise.
19850 * decl2.c (maybe_retrofit_in_charge): Likewise. Set it.
19851 * error.c (dump_function_decl): Use DECL_HAS_IN_CHARGE_PARM_P.
19852 * init.c (emit_base_init): Use DECL_COPY_CONSTRUCTOR_P.
19853 * method.c (do_build_copy_constructor): Use
19854 DECL_HAS_IN_CHARGE_PARM_P.
19855 (synthesize_method): Likewise.
19856 * pt.c (instantiate_template): Remove goto.
19857 * tree.c (build_cplus_method_type): Remove mention of obstacks in
19858 comment.
19859
19860 * cp-tre.h (finish_function): Change prototype.
19861 * decl.c (end_cleanup_fn): Adjust caller.
19862 (finish_function): Take only one parameter.
19863 * decl2.c (finish_objects): Adjust caller.
19864 (finish_static_storage_duration_function): Likewise.
19865 * method.c (emit_thunk): Likewise.
19866 * parse.y: Likewise.
19867 * parse.c: Regenerated.
19868 * pt.c (instantiate_decl): Likewise.
19869 * rtti.c (synthesize_tinfo_fn): Likewise.
19870 * semantics.c (expand_body): Likewise.
19871
19872 * cp-tree.h (copy_decl): New function.
19873 * class.c (finish_struct_1): Use it.
19874 * lex.c (copy_decl): Define it.
19875 * pt.c (tsubst_decl): Likewise.
19876 * tree.c (copy_template_template_parm): Likewise.
19877
19878 * cp-tree.h (lang_type): Remove has_nonpublic_ctor and
19879 has_nonpublic_assign_ref.
19880 (TYPE_HAS_NONPUBLIC_CTOR): Don't declare.
19881 (TYPE_HAS_NONPUBLIC_ASSIGN_REF): Likewise.
19882 * class.c (finish_struct_methods): Don't set
19883 TYPE_HAS_NONPUBLIC_CTOR or TYPE_HAS_NONPUBLIC_ASSIGN_REF.
19884 (interface_only): Don't declare.
19885 (interface_unknown): Likewise.
19886
19887 2000-04-11 Martin v. Löwis <loewis@informatik.hu-berlin.de>
19888
19889 * tree.h (HAVE_TEMPLATES): Remove definition.
19890 * lang-options.h (-fthis-is-variable): Remove documentation.
19891
19892 2000-04-10 Jason Merrill <jason@casey.cygnus.com>
19893
19894 * class.c (instantiate_type): Handle object-relative template-id.
19895
19896 * semantics.c (finish_expr_stmt): Call convert_to_void here.
19897 * decl.c (cplus_expand_expr_stmt): Not here.
19898
19899 * rtti.c (build_dynamic_cast_1): Call non_lvalue.
19900 Initialize exprtype earlier.
19901
19902 * parse.y (fn.def1): Check for defining types in return types.
19903
19904 * decl.c (check_tag_decl): Notice extra fundamental types.
19905 Diagnose empty decls in classes, too.
19906
19907 * decl.c (grokdeclarator): Don't override an anonymous name if no
19908 declarator was given.
19909
19910 * cvt.c (convert_to_void): Call resolve_offset_ref.
19911
19912 * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF.
19913
19914 * decl2.c (decl_namespace): Handle getting a type.
19915
19916 * typeck.c (build_c_cast): Re-enable warning for cast between
19917 pointer and integer of different size.
19918
19919 2000-04-10 Nathan Sidwell <nathan@codesourcery.com>
19920
19921 * inc/cxxabi.h (__pointer_type_info): Add restrict and
19922 incomplete flags.
19923 (__pointer_type_info::__pointer_catch): New virtual function.
19924 (__pointer_to_member_type_info): Derive from
19925 __pointer_type_info. Adjust.
19926 (__pointer_to_member_type_info::__do_catch): Remove.
19927 (__pointer_to_member_type_info::__is_pointer_p): Declare.
19928 (__pointer_to_member_type_info::__pointer_catch): Declare.
19929 * rtti.c (qualifier_flags): Add restrict flag.
19930 (ptmd_initializer): Reorder members.
19931 (create_tinfo_types): Expand comments. Reorder
19932 ptmd_desc_type_node members.
19933 * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p):
19934 Implement.
19935 (__pointer_type_info::__do_catch): Move specific code into
19936 __pointer_catch. Call it.
19937 (__pointer_type_info::__pointer_catch): Non-pointer-to-member
19938 specific catch checking. Fix void conversion check.
19939 (__pointer_to_member_type_info::__do_catch): Remove.
19940 (__pointer_to_member_type_info::__pointer_catch): Implement.
19941
19942 2000-04-10 Martin v. Löwis <loewis@informatik.hu-berlin.de>
19943
19944 * lex.c (init_parse): Remove traces of classof and headof.
19945 * decl2.c (flag_operator_names): Default to 1.
19946 (lang_decode_option): Do not set it for -ansi.
19947
19948 2000-04-09 Mark Mitchell <mark@codesourcery.com>
19949
19950 * cp-tree.h (struct lang_decl): Remove main_decl_variant.
19951 (DECL_MAIN_VARIANT): Remove.
19952 * decl.c (duplicate_decls): Don't set it.
19953 (start_function): Likewise.
19954 (lang_mark_tree): Don't mark it.
19955 * decl2.c (defer_fn): Don't use it.
19956 * lex.c (retrofit_lang_decl): Don't set it.
19957 * pt.c (tsubst_decl): Likewise.
19958 * ptree.c (print_lang_decl): Don't print it.
19959 * typeck.c (mark_addressable): Don't use it.
19960
19961 2000-04-09 Nathan Sidwell <nathan@codesourcery.com>
19962
19963 * vec.cc: Include <new> and <exception>.
19964 (__cxa_vec_ctor): Use __cxa_vec_dtor for cleanup.
19965 (__cxa_vec_dtor): Catch dtor exceptions, and rethrow or
19966 terminate.
19967 (__cxa_vec_delete): Catch dtor exceptions.
19968
19969 2000-04-09 Nathan Sidwell <nathan@codesourcery.com>
19970
19971 Prepend __ to implementation defined names.
19972 * inc/typeinfo (type_info): Rename _name to __name.
19973 (type_info::type_info): Rename parameter.
19974 (type_info::operator==, type_info::operator!=,
19975 type_info::before): Likewise.
19976 (type_info::is_pointer_p, type_info::is_function_p,
19977 type_info::do_catch, type_info::do_upcast): Prepend __. Rename
19978 parameters.
19979 * inc/cxxabi.h
19980 (__fundamental_type_info::__fundamental_type_info) Rename parameters.
19981 (__pointer_type_info::__pointer_type_info): Likewise.
19982 (__pointer_type_info::is_pointer_p,
19983 __pointer_type_info::do_catch): Prepend __. Rename parameters.
19984 (__array_type_info::__array_type_info): Rename parameters.
19985 (__function_type_info::__function_type_info): Likewise.
19986 (__function_type_info::is_function_p): Prepend __.
19987 (__enum_type_info::__enum_type_info): Rename parameters.
19988 (__pointer_to_member_type_info::__pointer_to_member_type_info):
19989 Likewise.
19990 (__pointer_to_member_type_info::do_catch): Prepend __. Rename
19991 parameters.
19992 (__base_class_info::is_virtual_p, is_public_p, offset): Prepend __.
19993 (__class_type_info::__class_type_info): Rename parameters.
19994 (__class_type_info::sub_kind): Prepend __. Adjust member names.
19995 (__class_type_info::upcast_result,
19996 __class_type_info::dyncast_result): Prepend __. Move definition
19997 into tinfo.cc.
19998 (__class_type_info::do_upcast, __class_type_info::do_catch,
19999 __class_type_info::find_public_src,
20000 __class_type_info::do_dyncast,
20001 __class_type_info::do_find_public_src): Prepend __. Rename
20002 parameters.
20003 (__si_class_type_info::__si_class_type_info): Rename parameters.
20004 (__si_class_type_info::do_upcast, __si_class_type_info::do_dyncast,
20005 __si_class_type_info::do_find_public_src): Prepent __. Rename
20006 parameters.
20007 (__vmi_class_type_info::__vmi_class_type_info): Rename parameters.
20008 (__vmi_class_type_info::do_upcast, __vmi_class_type_info::do_dyncast,
20009 __vmi_class_type_info::do_find_public_src): Prepent __. Rename
20010 parameters.
20011 (__dynamic_cast): Rename parameters.
20012 * tinfo.cc (type_info::is_pointer_p, type_info::is_function_p,
20013 type_info::do_catch, type_info::do_upcast): Prepend __.
20014 (contained_p, public_p, virtual_p, contained_public_p,
20015 contained_nonpublic_p, contained_nonvirtual_p): Adjust.
20016 (__class_type_info::do_catch,
20017 __class_type_info::do_upcast): Prepend __. Adjust.
20018 (__class_type_info::__upcast_result,
20019 __class_type_info::__dyncast_result): Move from inc/cxxabi.h.
20020 Adjust.
20021 (__class_type_info::find_public_src): Prepend __. Adjust.
20022 (__class_type_info::do_find_public_src,
20023 __si_class_type_info::do_find_public_src,
20024 __vmi_class_type_info::do_find_public_src): Likewise.
20025 (__class_type_info::do_dyncast,
20026 __si_class_type_info::do_dyncast,
20027 __vmi_class_type_info::do_dyncast): Likewise.
20028 (__class_type_info::do_upcast,
20029 __si_class_type_info::do_upcast,
20030 __vmi_class_type_info::do_upcast): Likewise.
20031 (__dynamic_cast): Adjust.
20032 * tinfo2.cc (__pointer_type_info::is_pointer_p): Prepend __.
20033 (__function_type_info::is_function_p): Likewise.
20034 (__pointer_type_info::do_catch): Likewise. Adjust.
20035 (__pointer_to_member_type_info::do_catch): Likewise. Adjust.
20036 (__throw_type_match_rtti_2): Adjust.
20037 (__is_pointer): Adjust.
20038
20039 2000-04-08 Mark Mitchell <mark@codesourcery.com>
20040
20041 * cp-tree.h (cp_tree_index): Add CPTI_COMPLETE_CTOR_IDENTIFIER.
20042 (complete_ctor_identifier): New macro.
20043 (special_function_kind): Add sfk_copy_constructor and
20044 sfk_assignment_operator.
20045 (LOOKUP_HAS_IN_CHARGE): Remove.
20046 (cons_up_default_function): Rename to ...
20047 (implicitly_declare_fn): ... this.
20048 * call.c (build_new_method_call): Add in-charge parameters for
20049 constructors here.
20050 * class.c (add_implicitly_declared_members): Change parameter name
20051 from cant_have_assignment to cant_have_const_assignment.
20052 Replace calls to cons_up_default_function to implicitly_declare_fn.
20053 * cvt.c (ocp_convert): Use complete_ctor_identifier.
20054 * decl.c (initialize_predefined_identifiers): Initialize it.
20055 (start_function): Use DECL_CONSTRUCTOR_FOR_VBASE_P instead of
20056 complex expression.
20057 * init.c (expand_default_init): Don't calculate the in-charge
20058 parameter here.
20059 (build_new_1): Likewise.
20060 * lex.c (cons_up_default_function): Move to method.c.
20061 * method.c (synthesize_method): Use DECL_DESTRUCTOR_P.
20062 (implicitly_declare_fn): New function.
20063 * typeck.c (build_static_cast): Use complete_ctor_identifier.
20064 (build_modify_expr): Likewise.
20065 * typeck2.c (build_functional_cast): Likewise.
20066
20067 Under the new ABI, constructors don't return `this'.
20068 * cp-tree.h (warn_reorder): Declare.
20069 (special_function_kind): New enum.
20070 (global_base_init_list): Remove declaration.
20071 (emit_base_init): Don't return a value.
20072 (check_base_init): Don't declare.
20073 (is_aggr_typedef): Likewise.
20074 * decl.c (check_special_function_return_type): New function.
20075 (return_types): Remove.
20076 (grokdeclarator): Use check_special_function_return_type.
20077 (start_function): Don't initialize ctor_label under the new ABI.
20078 (finish_construtor_body): Don't create a corresponding LABEL_STMT.
20079 * init.c (begin_init_stmts): Move to top of file.
20080 (finish_init_stmts): Likewise.
20081 (warn_reorder): Don't declare.
20082 (emit_base_init): Don't create a STMT_EXPR here. Don't return a
20083 value.
20084 (check_base_init): Remove.
20085 (is_aggr_typedef): Likewise.
20086 (build_new_1): Don't use the return value of a constructor.
20087 * semantics.c (setup_vtbl_ptr): Don't use the return value
20088 of emit_base_init.
20089 * typeck.c (check_return_expr): Don't magically convert return
20090 statements into `return this' in constructors under the new ABI.
20091
20092 * cp-tree.h (cp_tree_index): Add CPTI_BASE_CTOR_IDENTIFIER,
20093 CPTI_BASE_DTOR_IDENTIFIER, and CPTI_DELETING_DTOR_IDENTIFIER.
20094 (base_ctor_identifier): New macro.
20095 (base_dtor_identifier): Likewise.
20096 (deleting_dtor_identifier): Likewise.
20097 * decl.c: Don't include obstack.h.
20098 (obstack_chunk_alloc): Don't define.
20099 (obstack_chunk_free): Likewise.
20100 (struct predefined_identifier): New type.
20101 (initialize_predefined_identifiers): New function.
20102 (init_decl_processing): Use it.
20103 (debug_temp_inits): Remove.
20104 (start_method): Don't call preserve_data.
20105 (hack_incomplete_structures): Update comment.
20106 * init.c (init_init_processing): Don't initialize
20107 nelts_identifier.
20108 (build_offset_rf): Remove dead code.
20109 (build_delete): Use CLASSTYPE_N_BASECLASSES.
20110 * search.c (init_search_processing): Don't initialize
20111 vptr_identifier.
20112
20113 2000-04-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
20114
20115 * typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
20116 some sign_compare warnings.
20117
20118 2000-04-07 Nathan Sidwell <nathan@codesourcery.com>
20119
20120 Rename abi::__vmi_class_type_info members.
20121 * inc/cxxabi.h (__vmi_class_type_info): Rename details, n_bases,
20122 base_list, detail_masks members to vmi_flags, vmi_base_count,
20123 vmi_bases and vmi_flags_masks respectively.
20124 (__vmi_class_type_info::vmi_flags_masks): Rename
20125 details_unknown_mask to flags_unknown_mask.
20126 * tinfo.cc (__class_type_info::do_upcast): Adjust.
20127 (__vmi_class_type_info::do_find_public_src): Adjust.
20128 (__vmi_class_type_info::do_dyncast): Adjust.
20129 (__vmi_class_type_info::do_upcast): Adjust.
20130
20131 2000-04-07 Nathan Sidwell <nathan@codesourcery.com>
20132
20133 * tinfo.cc (convert_to_base): New function.
20134 (get_vbase_offset): Remove. Move into convert_to_base.
20135 (__vmi_class_type_info::do_find_public_src): Adjust.
20136 (__vmi_class_type_info::do_dyncast): Adjust.
20137 (__vmi_class_type_info::do_upcast): Adjust.
20138
20139 2000-04-06 Jason Merrill <jason@yorick.cygnus.com>
20140
20141 * tinfo.cc (operator=): Use __builtin_strcmp.
20142 * tinfo2.cc (before): Likewise.
20143
20144 2000-04-06 Mark Mitchell <mark@codesourcery.com>
20145
20146 * cp-tree.h (lang_decl_flags): Rename saved_inline to deferred.
20147 (DECL_SAVED_INLINE): Rename to ...
20148 (DECL_DEFERRED_FN): ... this.
20149 (in_function_p): Remove declaration.
20150 (mark_inline_for_output): Rename to ...
20151 (defer_fn): ... this.
20152 * decl.c (finish_function): Adjust call to mark_inline_for_output.
20153 (in_function_p): Remove definition.
20154 * decl2.c (saved_inlines): Rename to ...
20155 (deferred_fns): ... this.
20156 (saved_inlines_used): Rename to ...
20157 (deferred_fns_used): ... this.
20158 (mark_inline_for_output): Rename to ...
20159 (defer_fn): ... this.
20160 (finish_file): Adjust accordingly.
20161 (init_decl2): Likewise.
20162 * lex.c (cons_up_default_function): Likewise.
20163 * pt.c (mark_decl_instantiated): Likewise.
20164 (instantiate_decl): Don't set DECL_DEFER_OUTPUT under any
20165 circumstances.
20166 * rtti.c (get_tinfo_decl): Adjust call to mark_inline_for_output.
20167 * semantics.c (expand_body): Defer more functions.
20168
20169 2000-04-06 Nathan Sidwell <nathan@codesourcery.com>
20170
20171 * vec.cc: New file.
20172 * Make-lang.in (CXX_LIB2FUNCS): Add it.
20173 (vec.o): Build it.
20174 * inc/cxxabi.h (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
20175 __cxa_vec_delete): Declare.
20176
20177 2000-04-06 Nathan Sidwell <nathan@codesourcery.com>
20178
20179 * rtti.c (dfs_class_hint_mark): New static function.
20180 (dfs_class_hint_unmark): New static function.
20181 (class_hint_flags): Use them.
20182
20183 2000-04-05 Benjamin Kosnik <bkoz@cygnus.com>
20184
20185 * decl2.c: Make flag_honor_std dependent on ENABLE_STD_NAMESPACE.
20186
20187 2000-04-05 Mark Mitchell <mark@codesourcery.com>
20188
20189 * cp-tree.h (instantiate_decl): Change prototype.
20190 * decl2.c (mark_used): Adjust call.
20191 * optimize.c (inlinable_function_p): Adjust handling of templates.
20192 * pt.c (do_decl_instantiation): Adjust call to instantiate_decl.
20193 (do_type_instantiation): Likewise.
20194 (instantiate_decl): Defer more templates.
20195 (instantiate_pending_templates): Adjust logic to handle inline
20196 friend functions.
20197
20198 * Makefile.in (GGC_H): New variable. Use it throughout in place
20199 of ggc.h.
20200
20201 * call.c: Don't include obstack.h. Include ggc.h.
20202 (obstack_chunk_alloc): Don't define.
20203 (obstack_chunk_free): Likewise.
20204 (add_candidate): Allocate the z_candidate with ggc_alloc_obj.
20205 * decl.c (push_switch): Use xmalloc to allocate the cp_switch.
20206 (pop_switch): Free it.
20207
20208 * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.
20209
20210 * dump.c (dequeue_and_dump): Don't try to print the bit_position
20211 if we don't have a DECL_FIELD_OFFSET.
20212
20213 Wed Apr 5 15:12:18 MET DST 2000 Jan Hubicka <jh@suse.cz>
20214
20215 * optimize.c (calls_setjmp_r): Use setjmp_call_p instead of
20216 special_function_p.
20217
20218 2000-04-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
20219
20220 * cfns.gperf (hash, libc_name_p): Prototype.
20221
20222 * rtti.c (build_dynamic_cast_1): Constification.
20223
20224 * search.c (dfs_debug_unmarkedp, dfs_debug_mark): Unhide prototypes.
20225
20226 * semantics.c (deferred_type_access_control): Prototype.
20227
20228 2000-04-04 Mark Mitchell <mark@codesourcery.com>
20229
20230 Correct many new ABI issues regarding vbase and vcall offset
20231 layout.
20232 * cp-tree.h (BINFO_VTABLE): Document.
20233 (struct lang_type): Tweak formatting.
20234 (BINFO_PRIMARY_BINFO): Add to documentation.
20235 (CLASSTYPE_VSIZE): Fix typo in comment.
20236 (CLASSTYPE_VBASECLASSES): Update documentation.
20237 (BINFO_VBASE_MARKED): Remove.
20238 (SET_BINFO_VBASE_MARKED): Likewise.
20239 (CLEAR_BINFO_VBASE_MARKED): Likewise.
20240 (BINFO_FIELDS_MARKED): Remove.
20241 (SET_BINFO_FIELDS_MARKED): Likewise.
20242 (CLEAR_BINFO_FIELDS_MARKED): Likewise.
20243 (enum access_kind): New enumeration.
20244 (num_extra_vtbl_entries): Remove declaration.
20245 (size_extra_vtbl_entries): Likewise.
20246 (get_vtbl_decl_for_binfo): New function.
20247 (dfs_vbase_unmark): Remove declaration.
20248 (mark_primary_bases): Likewise.
20249 * class.c (SAME_FN): Remove.
20250 (struct vcall_offset_data_s): Move definition.
20251 (build_vbase_pointer): Use `build', not `build_binary_op', to
20252 access the vbase pointer under the new ABI.
20253 (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo.
20254 (build_primary_vtable): Likewise.
20255 (dfs_mark_primary_bases): Move here from search.c.
20256 (mark_primary_bases): Likewise.
20257 (determine_primary_bases): Under the new ABI, don't make a base
20258 class a primary base just because we don't yet have any virtual
20259 functions.
20260 (layout_vtable_decl): Use get_vtbl_decl_for_binfo.
20261 (num_vfun_entries): Remove.
20262 (dfs_count_virtuals): Likewise.
20263 (num_extra_vtbl_entries): Likewise.
20264 (size_extra_vtbl_entries): Likewise.
20265 (layout_virtual_bases): Iterate in inheritance graph order under
20266 the new ABI.
20267 (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to
20268 indicate that a vfield is present.
20269 (init_class_processing): Initialize access_public_node, etc., from
20270 ak_public, etc.
20271 (get_vtbl_decl_for_binfo): New function.
20272 (dump_class_hierarchy_r): Likewise.
20273 (dump_class_hierarchy): Use it.
20274 (finish_vtbls): Build the vtbls in inheritance graph order.
20275 (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
20276 (initialize_vtable): Use get_vtbl_decl_for_binfo.
20277 (accumulate_vtbl_inits): Add comments explaining why a pre-order
20278 walk is required.
20279 (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location
20280 where the vptr points, even for primary vtables.
20281 (build_vtbl_initializer): Adjust handling of vbase and vcall
20282 offsets.
20283 (build_vcall_and_vbase_vtable_entries): New function.
20284 (dfs_build_vbase_offset_vtbl_entries): Remove.
20285 (build_vbase_offset_vtbl_entries): Reimplement.
20286 (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that
20287 were already handled in a primary base class vtable.
20288 (build_vcall_offset_vtbl_entries): Adjust.
20289 (build_rtti_vtbl_entries): Adjust.
20290 * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo.
20291 * init.c (expand_virtual_init): Simplify.
20292 * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo.
20293 * rtti.c (create_pseudo_type_info): Adjust calculation of vptr.
20294 * search.c (BINFO_ACCESS): New macro.
20295 (SET_BINFO_ACCESS): Likewise.
20296 (dfs_access_in_type): Manipulate access_kinds, not access nodes.
20297 (access_in_type): Likewise.
20298 (dfs_accessible_p): Likewise.
20299 (protected_accessible_p): Likewise.
20300 (lookup_fnfields_1): Adjust documentation.
20301 (dfs_mark_primary_bases): Move to class.c
20302 (mark_primary_bases): Likewise.
20303 (dfs_vbase_unmark): Remove.
20304 (virtual_context): Use BINFO_FOR_VBASE.
20305 (dfs_get_vbase_types): Simplify.
20306 (dfs_build_inheritance_graph_order): New function.
20307 (get_vbase_types): Use it.
20308 * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo.
20309
20310 * tinfo.cc (get_vbase_offset): New function.
20311 (__vmi_class_type_info::do_find_public_src): Use it.
20312 (__vmi_class_type_info::do_dyncast): Likewise.
20313 (__vmi_class_type_info::do_upcast): Likewise.
20314
20315 2000-04-03 Zack Weinberg <zack@wolery.cumb.org>
20316
20317 * lang-specs.h: Pass -fno-show-column to the preprocessor.
20318
20319 2000-03-30 Nathan Sidwell <nathan@codesourcery.com>
20320
20321 * rtti.c (class_hint_flags): Rename flags.
20322 (class_initializer): Remove flags.
20323 (synthesize_tinfo_var): Combine offset and flags. Add flags
20324 for __vmi_class_type_info.
20325 (create_tinfo_types): Remove flags from __class_type_info and
20326 __si_class_type_info. Merge flags and offset from
20327 base_class_type_info.
20328 * inc/cxxabi.h (__base_class_info): Merge offset and vmi_flags.
20329 (__base_class_info::is_virtual_p): Adjust.
20330 (__base_class_info::is_public_p): Adjust.
20331 (__base_class_info::offset): New accessor.
20332 (__class_type_info::details): Remove member.
20333 (__class_type_info::__class_type_info): Lose details.
20334 (__class_type_info::detail_masks): Remove.
20335 (__si_class_type_info::__si_class_type_info): Lose details.
20336 (__vmi_class_type_info::details): New member.
20337 (__vmi_class_type_info::__vmi_class_type_info): Adjust.
20338 (__vmi_class_type_info::detail_masks): New member.
20339 * tinfo.cc (__class_type_info::do_upcast): Initialize result
20340 with unknown_details_mask.
20341 (__vmi_class_type_info::do_find_public_src): Adjust
20342 (__vmi_class_type_info::do_dyncast): Adjust.
20343 (__vmi_class_type_info::do_upcast): Set result details, if
20344 needed. Adjust.
20345 (__dynamic_cast): Temporarily #if out optimization.
20346
20347 2000-03-29 Nathan Sidwell <nathan@codesourcery.com>
20348
20349 * rtti.c (get_tinfo_decl): Mark used.
20350 (emit_tinfo_decl): Don't optimize polymorphic type_info. Only
20351 mark as dealt with, if we output it.
20352
20353 2000-03-28 Mark Mitchell <mark@codesourcery.com>
20354
20355 * class.c: Reorganize to put virtual function table initialization
20356 machinery at the end of the file.
20357
20358 2000-03-28 Jason Merrill <jason@casey.cygnus.com>
20359
20360 * class.c (finish_struct): Use bitsize_zero_node.
20361 * pt.c (instantiate_class_template): Likewise.
20362
20363 2000-03-28 Mark Mitchell <mark@codesourcery.com>
20364
20365 Put RTTI entries at negative offsets in new ABI.
20366 * class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
20367 vbase offset at index -3, not -1.
20368 (build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
20369 dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
20370 (dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
20371 (build_rtti_vtbl_entries): New function.
20372 (set_rtti_entry): Remove.
20373 (build_primary_vtable): Don't use it.
20374 (build_secondary_vtable): Likewise.
20375 (start_vtable): Remove.
20376 (first_vfun_index): New function.
20377 (set_vindex): Likewise.
20378 (add_virtual_function): Don't call start_vtable. Do call
20379 set_vindex.
20380 (set_primary_base): Rename parameter.
20381 (determine_primary_base): Likewise.
20382 (num_vfun_entries): Don't use skip_rtti_stuff.
20383 (num_extra_vtbl_entries): Include RTTI information.
20384 (build_vtbl_initializer): Use build_rtti_vtbl_entries.
20385 (skip_rtti_stuff): Remove.
20386 (dfs_modify_vtables): Don't use it.
20387 (modify_all_vtables): Don't use start_vtable. Do use set_vindex.
20388 (layout_nonempty_base_or_field): Update size handling.
20389 (create_vtable_ptr): Tweak.
20390 (layout_class_type): Adjust parameter names.
20391 (finish_struct_1): Simplify.
20392 * cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
20393 (skip_rtti_stuff): Remove.
20394 (first_vfun_index): New function.
20395 (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
20396 (dfs_vtable_path_marked_real_bases_queue_p): Remove.
20397 (marked_vtable_pathp): Declare.
20398 (unmarked_vtable_pathp): Likewise.
20399 * error.c (dump_expr): Use first_vfun_index to calculate vtable
20400 offsets.
20401 * rtti.c (build_headof): Look for RTTI at negative offsets.
20402 (get_tinfo_decl_dynamic): Likewise.
20403 (tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
20404 here.
20405 (create_pseudo_type_info): Do it here instead. Adjust so that
20406 vptr points at first virtual function.
20407 * search.c (marked_vtable_pathp): Make it global.
20408 (unmarked_vtable_pathp): Likewise.
20409 (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
20410 (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
20411 (dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
20412 (get_pure_virtuals): Likewise.
20413 (expand_upcast_fixups): Likewise.
20414 * tree.c (debug_binfo): Likewise.
20415 * tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
20416 negative offset.
20417
20418 2000-03-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
20419
20420 * class.c (check_field_decl): Fix typo.
20421 (build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
20422 (check_methods): Likewise.
20423 (check_field_decls): Likewise.
20424 Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
20425 * cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
20426 Use DECL_RESULT_FLD, not DECL_RESULT.
20427 * decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
20428 * lex.c (identifier_type): Likewise.
20429 * pt.c (determine_specialization, lookup_template_class): Likewise.
20430 (tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
20431 (resolve_overloaded_unification, more_specialized): Likewise.
20432 * semantics.c (finish_member_declaration): Likewise.
20433 * typeck.c (build_x_function_call): Likewise.
20434
20435 2000-03-26 Mark Mitchell <mark@codesourcery.com>
20436
20437 * class.c (layout_empty_base): Handle empty bases with non-byte
20438 alignment.
20439 (build_base_field): Likewise.
20440 (layout_virtual_bases): Likewise.
20441
20442 * class.c (finish_struct_1): Fix typo in this change:
20443
20444 Sat Mar 25 09:12:10 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
20445
20446 2000-03-25 Mark Mitchell <mark@codesourcery.com>
20447
20448 * decl.c (grokdeclarator): Count partial specializations when
20449 keeping track of how many template classes have been seen.
20450
20451 * dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.
20452
20453 2000-03-25 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
20454
20455 * class.c (build_vbase_pointer_fields): layout_field now place_field.
20456 (get_vfield_offset): Use byte_position.
20457 (set_rtti_entry): Set OFFSET to ssizetype zero.
20458 (get_binfo_offset_as_int): Deleted.
20459 (dfs_record_base_offsets): Use tree_low_cst.
20460 (dfs_search_base_offsets): Likewise.
20461 (layout_nonempty_base_or_field): Reflect changes in RLI format
20462 and call byte_position.
20463 (layout_empty_base): Convert offset to ssizetype.
20464 (build_base_field): use rli_size_unit_so_far.
20465 (dfs_propagate_binfo_offsets): Do computation in proper type.
20466 (layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
20467 (layout_class_type): Reflect changes in RLI names and fields.
20468 (finish_struct_1): Set DECL_FIELD_OFFSET.
20469 * dump.c (dequeue_and_dump): Call bit_position.
20470 * expr.c (cplus_expand_constant): Use byte_position.
20471 * rtti.c (expand_class_desc): Use bitsize_one_node.
20472 * typeck.c (build_component_addr): Use byte_position and don't
20473 special case for zero offset.
20474
20475 2000-03-24 Nathan Sidwell <nathan@codesourcery.com>
20476
20477 * decl.c (vtype_decl_p): Use TYPE_POLYMORPHIC_P.
20478
20479 * rtti.c (get_tinfo_decl): Set comdat linkage on new-abi
20480 tinfo object.
20481 (emit_tinfo_decl): Only emit polymorphic tinfo's when emitting
20482 vtable.
20483
20484 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
20485
20486 * call.c (check_dtor_name, build_new_method_call): Use TYPE_P and
20487 DECL_P macros.
20488 * decl.c (push_class_binding, poplevel, pushtag, lookup_namespace_name,
20489 make_typename_type, check_initializer, cp_finish_decl,
20490 xref_tag): Likewise.
20491 * decl2.c (grokfield, build_expr_from_tree, build_expr_from_tree,
20492 decl_namespace, arg_assoc_template_arg, arg_assoc,
20493 validate_nonmember_using_decl, do_class_using_decl): Likewise.
20494 * error.c (dump_template_argument, dump_expr, cp_file_of, cp_line_of,
20495 args_to_string): Likewise.
20496 * friend.c (is_friend): Likewise.
20497 * lex.c (note_got_semicolon, note_list_got_semicolon,
20498 is_global): Likewise.
20499 * method.c (build_overload_nested_name, build_overload_value,
20500 build_qualified_name, build_qualified_name, hack_identifier): Likewise.
20501 * parse.y (typename_sub, typename_sub1): Likewise.
20502 * pt.c (push_inline_template_parms_recursive, check_template_shadow,
20503 process_partial_specialization, convert_template_argument,
20504 template_args_equal, add_pending_template, lookup_template_class,
20505 for_each_template_parm_r, maybe_fold_nontype_arg,
20506 tsubst, instantiate_template, type_unification_real, unify,
20507 instantiate_pending_templates, set_mangled_name_for_template_decl):
20508 Likewise.
20509 * repo.c (repo_get_id, repo_template_used): Likewise.
20510 * search.c (lookup_field_1): Likewise.
20511 * tree.c (walk_tree, get_type_decl, cp_tree_equal, member_p): Likewise.
20512 * xref.c (classname): Likewise.
20513
20514 2000-03-22 Mark Mitchell <mark@codesourcery.com>
20515
20516 * cp-tree.h (BINFO_FOR_VBASE): Adjust documentation.
20517 (CANONICAL_BINFO): New macro.
20518 (BINFO_NEW_VTABLE_MARKED): Use it.
20519 (SET_BINFO_NEW_VTABLE_MARKED): Likewise.
20520 (CLEAR_BINFO_NEW_VTABLE_MARKED): Likewise.
20521 * class.c (dfs_build_vbase_offset_vtbl_entries): Use BINFO_TYPE,
20522 not TREE_TYPE.
20523 (build_primary_vtable): Adjust usage of BINFO_NEW_VTABLE_MARKED.
20524 (build_secondary_vtable): Likewise.
20525 (dfs_finish_vtbls): Likewise.
20526 (dfs_accumulate_vtbl_inits): Likewise.
20527 (accumulate_vtbl_inits): New function.
20528 (finish_vtbls): Make sure that virtual bases come after
20529 non-virtual bases in the vtable group.
20530 (record_base_offsets): Don't save and restore TREE_VIA_VIRTUAL.
20531 (finish_struct_1): Adjust usage of BINFO_NEW_VTABLE_MARKED.
20532 * search.c (struct vbase_info): Move definition.
20533 (marked_new_vtable_p): Adjust usage of BINFO_NEW_VTABLE_MARKED.
20534 (unmarked_new_vtable_p): Likewise.
20535 (dfs_mark_vtable_path): Remove.
20536 (dfs_mark_new_vtable): Remove.
20537 (dfs_unmark_new_vtable): Likewise.
20538 (dfs_clear_search_slot): Likewise.
20539 (dfs_find_vbases): Adjust usage of BINFO_NEW_VTABLE_MARKED.
20540 (dfs_clear_vbase_slots): Likewise.
20541 (init_vbase_pointers): LIkewise.
20542
20543 2000-03-22 Jason Merrill <jason@casey.cygnus.com>
20544
20545 * typeck.c (type_after_usual_arithmetic_conversions): Prefer a
20546 SIZETYPE to a non-SIZETYPE.
20547
20548 2000-03-21 Mark Mitchell <mark@codesourcery.com>
20549
20550 * class.c (layout_virtual_bases): Adjust names in conditionally
20551 compiled code.
20552
20553 * class.c (record_base_offsets): New function.
20554 (layout_conflict_p): Likewise.
20555 (layout_nonempty_base_or_field): Use it.
20556 (layout_empty_base): New function.
20557 (build_base_field): Use it.
20558 (build_base_fields): Update comment.
20559 (layout_virtual_bases): Fold in a little code form
20560 layout_basetypes. Use layout_empty_base.
20561 (layout_basetypes): Remove.
20562 (end_of_class): New function.
20563 (layout_class_type): Use it. Adjust.
20564
20565 * cp-tree.h (CLASSTYPE_VBASECLASSES): Fix typo in comment.
20566 (fntype_p): Remove.
20567 * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Fix typo in
20568 comment.
20569 (dfs_skip_nonprimary_vbases_markedp): Likewise.
20570 * typeck.c (fntype_p): Remove.
20571
20572 * cp-tree.h (TI_SPEC_INFO): Remove.
20573 (CLASSTYPE_TI_SPEC_INFO): Likewise.
20574 * pt.c (process_partial_specialization): Likewise.
20575
20576 * class.c (build_base_field): Fix thinko in computation of binfo
20577 offsets.
20578
20579 * tree.c (mark_local_for_remap_p): Mark variables declared in
20580 TARGET_EXPRs as well.
20581
20582 2000-03-21 Nathan Sidwell <nathan@codesourcery.com>
20583
20584 * typeck.c (require_complete_type, complete_type,
20585 complete_type_or_else, c_sizeof, c_sizeof_nowarn,
20586 build_array_ref, convert_arguments, pointer_diff,
20587 build_x_unary_op, build_unary_op, build_c_cast,
20588 build_modify_expr): Use COMPLETE_TYPE_P etc.
20589 * call.c (is_complete, convert_like_real,
20590 build_new_method_call): Likewise.
20591 * class.c (build_vbase_pointer_fields, check_bases,
20592 build_base_field, finish_struct_1, pushclass): Likewise.
20593 * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
20594 * decl.c (maybe_process_template_type_declaration, pushtag,
20595 pushdecl, redeclaration_error_message, start_decl, start_decl_1,
20596 layout_var_decl, check_initializer, cp_finish_decl,
20597 grokdeclarator, require_complete_types_for_parms,
20598 grok_op_properties, xref_tag, xref_basetypes,
20599 check_function_type): Likewise.
20600 * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
20601 * friend.c (do_friend): Likewise.
20602 * init.c (build_offset_ref): Likewise.
20603 * parse.y (structsp): Likewise.
20604 * pt.c (maybe_process_partial_specialization,
20605 tsubst_friend_function, instantiate_class_template, tsubst,
20606 do_type_instantiation, instantiate_pending_templates): Likewise.
20607 * repo.c (repo_get_id): Likewise.
20608 * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
20609 synthesize_tinfo_var, emit_support_tinfos): Likewise.
20610 * search.c (lookup_fnfields_1, lookup_conversions): Likewise.
20611 * semantics.c (begin_class_definition): Likewise.
20612 * tree.c (build_cplus_method_type): Likewise.
20613 * typeck2.c (digest_init, build_functional_cast,
20614 add_exception_specifier): Likewise.
20615 * parse.h, parse.c: Regenerated.
20616
20617 2000-03-21 Nathan Sidwell <nathan@codesourcery.com>
20618
20619 * inc/cxxabi.h: New header file. Define new-abi entry points.
20620 (__pointer_type_info::target): Rename member to ...
20621 (__pointer_type_info::type): ... here.
20622 (__base_class_info::type): Rename member to ...
20623 (__base_class_info::base): ... here.
20624 * Make-lang.in (CXX_EXTRA_HEADERS): Add cxxabi.h
20625 * cp-tree.h (CPTI_ABI): New global tree enumeration.
20626 (abi_node): New global tree node.
20627 * decl.c (abi_node): Document.
20628 (init_decl_processing): Initialize abi_node.
20629 * rtti.c (build_dynamic_cast_1): Use abi_node for new-abi.
20630 (get_vmi_pseudo_type_info): Likewise.
20631 (create_tinfo_types): Likewise.
20632 (emit_support_tinfos): Likewise.
20633 * tinfo.h (cxxabi.h): Include for new-abi.
20634 Move rtti class definitions to new header file.
20635 * tinfo.cc (abi): Use the namespace.
20636 (std): Move new abi rtti classes from here ...
20637 (__cxxabiv1): ... to here.
20638 * tinfo2.cc (cxxabi.h): Include for new-abi.
20639 Move rtti class definitions to new header file.
20640 (std): Move new abi rtti classes from here ...
20641 (__cxxabiv1): ... to here.
20642 * inc/typeinfo (__class_type_info): Move into __cxxabiv1
20643 namespace.
20644
20645 2000-03-20 Jed Wing <jedwin@zloty.ugcs.caltech.edu>
20646 Jason Merrill <jason@casey.cygnus.com>
20647
20648 * method.c (build_overload_int): Use host_integerp.
20649
20650 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
20651
20652 * init.c (build_offset_ref): Handle the case of a templated member
20653 function.
20654
20655 2000-03-19 Martin v. Löwis <loewis@informatik.hu-berlin.de>
20656
20657 * except.c (expand_exception_blocks): Clear catch_clauses_last.
20658
20659 2000-03-18 Mark Mitchell <mark@codesourcery.com>
20660
20661 * cp-tree.h (CLEAR_DECL_C_BIT_FIELD): New macro.
20662 * class.c (check_bitfield_decl): Turn illegal bitfields into
20663 non-bitfields.
20664 (dfs_propagate_binfo_offsets): Adjust for new size_binop
20665 semantics.
20666 (dfs_offset_for_unshared_vbases): Likewise.
20667 * cvt.c (cp_convert_to_pointer): Convert NULL to a
20668 pointer-to-member correctly under the new ABI.
20669 * expr.c (cplus_expand_constant): Don't use cp_convert when
20670 turning an offset into a pointer-to-member.
20671 * init.c (resolve_offset_ref): Don't adjust pointers-to-members
20672 when dereferencing them under the new ABI.
20673 * typeck.c (get_member_function_from_ptrfunc): Tweak calculation
20674 of pointers-to-members under the new ABI.
20675
20676 * class.c (check_bitfield_decl): Remove restriction on really long
20677 bitfields.
20678 (layout_class_type): Implement new ABI handling of bitfields
20679 longer than their types.
20680
20681 2000-03-18 Martin v. Löwis <loewis@informatik.hu-berlin.de>
20682
20683 * parse.y (extdefs): Call ggc_collect.
20684 * parse.c: Regenerated.
20685
20686 2000-03-18 Nathan Sidwell <nathan@codesourcery.com>
20687
20688 * class.c (build_base_field): Use TYPE_ALIGN to examine a type.
20689 (note_name_declared_in_class): Use OVL_CURRENT to get at a
20690 potential overload.
20691
20692 2000-03-17 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
20693
20694 * class.c (build_vbase_path): Use integer_zerop.
20695 (build_vtable_entry): Use tree_low_cst.
20696 (get_vfield_offset): Use bit_position.
20697 (dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
20698 Use tree_low_cst.
20699 (check_bitfield_decl): Set DECL_SIZE using convert.
20700 (build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
20701 (layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
20702 Use tree_low_cst.
20703 (finish_struct_1): Use bit_position.
20704 (dump_class_hierarchy): Use tree_low_cst.
20705 * cp-tree.h (min_precision): Add declaration.
20706 * decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
20707 * error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
20708 (dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
20709 * expr.c (cplus_expand_constant): Use bit_position.
20710 * init.c (build_vec_init): Use host_integerp and tree_low_cst.
20711 * rtti.c (get_base_offset): Use bit_position.
20712 * typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
20713 host_integerp, and tree_low_cst.
20714 (pointer_int_sum): Use integer_zerop.
20715 (build_component_addr): Use bit_position.
20716
20717 2000-03-17 Nathan Sidwell <nathan@codesourcery.com>
20718
20719 * typeck.c (require_complete_type): Don't assume size_zero_node.
20720 (complete_type_or_else): Likewise.
20721
20722 2000-03-16 Steven Grady <grady@digitaldeck.com>
20723 Jason Merrill <jason@casey.cygnus.com>
20724
20725 * rtti.c (build_dynamic_cast_1): Improve diagnostics.
20726
20727 2000-03-16 Nathan Sidwell <nathan@codesourcery.com>
20728
20729 * decl2.c (grokfield): Bail out if type is error_mark_node.
20730
20731 2000-03-15 Nathan Sidwell <nathan@codesourcery.com>
20732
20733 * tinfo2.cc (__ptr_to_member_data): Rename to ...
20734 (__pointer_to_member_data): ... here. Adjust.
20735 * rtti.c (create_tinfo_types): Adjust.
20736
20737 2000-03-15 Nathan Sidwell <nathan@codesourcery.com>
20738
20739 * cp-tree.h (CPTI_REF_DESC_TYPE, ref_desc_type_node): Remove.
20740 * decl.c (ref_desc_type_node): Undocument.
20741 * rtti.c (ptr_ref_initializer): Rename to ...
20742 (ptr_initializer): ... here. Adjust comments.
20743 (ptmd_initializer): Fix comment thinko.
20744 (synthesize_tinfo_var): Remove REFERENCE_TYPE case.
20745 (create_tinfo_types): Remove ref_desc_type_node init.
20746 * tinfo2.cc (__reference_type_info): Remove.
20747
20748 2000-03-15 Nathan Sidwell <nathan@codesourcery.com>
20749
20750 * decl.c (cp_finish_decl): Remove obsolete comment.
20751
20752 * typeck.c (build_ptrmemfunc1): Kill uninitialized warning.
20753
20754 2000-03-14 Mark Mitchell <mark@codesourcery.com>
20755
20756 * cp-tree.h: Tweak documentation.
20757 * class.c (build_vbase_pointer_fields): Layout the fields, too.
20758 (avoid_overlap): Remove.
20759 (get_binfo_offset_as_int): New function.
20760 (dfs_serach_base_offsets): Likewise.
20761 (layout_nonempty_base_or_field): Likewise.
20762 (build_base_field): Layout fields here. Avoid placing two objects
20763 of the same type at the same address, under the new ABI.
20764 (build_base_fields): Adjust accordingly.
20765 (create_vtable_ptr): Return the new field, but don't attach it to
20766 TYPE_FIELDS.
20767 (remove_base_field): Remove.
20768 (remove_base_fields): Remove.
20769 (layout_basetypes): Adjust accordingly.
20770 (layout_class_type): Call layout_field for each field, rather than
20771 just making a wholesale call to layout_type.
20772
20773 2000-03-14 Jeff Sturm <jsturm@sigma6.com>
20774
20775 * except.c (expand_throw): Fix typo in _Jv_Sjlj_Throw.
20776
20777 2000-03-13 Jason Merrill <jason@casey.cygnus.com>
20778
20779 * decl.c (grokfndecl): Set TREE_NOTHROW if TYPE_NOTHROW_P.
20780
20781 * except.c (dtor_nothrow): New fn.
20782 (do_pop_exception): Use it. Take type parm.
20783 (push_eh_cleanup): Take type parm.
20784 (expand_start_catch_block): Pass it.
20785 (build_eh_type_type_ref): Accept null type.
20786
20787 2000-03-12 Mark Mitchell <mark@codesourcery.com>
20788
20789 * cp-tree.h (revert_static_member_fn): Change prototype.
20790 * decl.c (grokfndecl): Adjust call to revert_static_member_fn.
20791 (grok_op_properties): Likewise.
20792 (start_function): Likewise.
20793 (revert_static_member_fn): Simplify.
20794 * pt.c (check_explicit_specialization): Adjust call to
20795 revert_static_member_fn.
20796
20797 2000-03-11 Mark Mitchell <mark@codesourcery.com>
20798
20799 * cp-tree.h (scope_kind): New type.
20800 (tmpl_spec_kind): Likewise.
20801 (declare_pseudo_global_level): Remove.
20802 (pseudo_global_level_p): Rename to template_parm_scope_p.
20803 (pushlevel): Remove declaration.
20804 (begin_scope): New function.
20805 (finish_scope): Likewise.
20806 (current_tmpl_spec_kind): Likewise.
20807 * decl.c (struct binding_level): Shorten parm_flag to 2 bits.
20808 Shorten keep to 2 bits. Rename pseudo_global to template_parms_p.
20809 Add template_spec_p.
20810 (toplevel_bindings_p): Adjust.
20811 (declare_pseudo_global_level): Remove.
20812 (pseudo_global_level_p): Rename to template_parm_scope_p.
20813 (current_tmpl_spec_kind): New function.
20814 (begin_scope): Likewise.
20815 (finish_scope): Likewise.
20816 (maybe_push_to_top_level): Adjust.
20817 (maybe_process_template_type_declaration): Likewise.
20818 (pushtag): Likewise.
20819 (pushdecl_nonclass_level): Likewise.
20820 (lookup_tag): Likewise.
20821 (grokfndecl): Handle member template specializations. Share
20822 constructor and non-constructor code.
20823 * decl2.c (check_classfn): Handle member template specializations.
20824 * pt.c (begin_template_parm_list): Use begin_scope.
20825 (begin_specialization): Likewise.
20826 (end_specialization): Likewise.
20827 (check_explicit_specialization): Use current_tmpl_spec_kind.
20828 Handle member template specializations.
20829 (end_template_decl): Use finish_scope. Remove call to
20830 get_pending_sizes.
20831 (push_template_decl_real): Remove bogus error message.
20832 (tsubst_decl): Fix typo in code contained in comment.
20833 (instantiate_template): Handle member template specializations.
20834 (most_general_template): Likewise.
20835
20836 2000-03-11 Gabriel Dos Reis <gdr@codesourcery.com>
20837
20838 * lex.c (whitespace_cr): Compress consecutive calls to warning().
20839 (do_identifier): Ditto for error().
20840
20841 * pt.c (convert_nontype_argument): Ditto for cp_error().
20842 (convert_template_argument): Ditto for cp_pedwarn().
20843
20844 2000-03-11 Jason Merrill <jason@casey.cygnus.com>
20845
20846 * exception.cc (__check_null_eh_spec): New fn.
20847 * except.c (expand_end_eh_spec): Call it if the spec is throw().
20848
20849 2000-03-10 Jason Merrill <jason@casey.cygnus.com>
20850
20851 * decl.c (push_throw_library_fn): Take the FUNCTION_TYPE.
20852 * except.c (expand_end_eh_spec): Add the return type.
20853 * rtti.c (throw_bad_cast): Add the parmtypes.
20854 (throw_bad_typeid): Likewise.
20855
20856 * semantics.c (expand_stmt): Only leave out rtl for unused
20857 artificials, and set DECL_IGNORED_P on them as well.
20858 * decl.c (wrapup_globals_for_namespace): Likewise.
20859
20860 2000-03-09 Nathan Sidwell <nathan@codesourcery.com>
20861
20862 * decl.c (maybe_commonize_var): Skip all artificial decls.
20863 * pt.c (tsubst_decl): Don't copy TREE_ASM_WRITTEN.
20864
20865 2000-03-10 Jason Merrill <jason@casey.cygnus.com>
20866
20867 * lang-options.h, decl2.c: Add -fno-enforce-eh-specs.
20868 * cp-tree.h: Declare flag_enforce_eh_specs.
20869 * decl.c (store_parm_decls, finish_function): Check it.
20870
20871 C library functions don't throw.
20872 * Makefile.in (cfns.h): New target.
20873 (except.o): Depend on it.
20874 * Make-lang.in (cc1plus): Depend on cfns.gperf.
20875 * cfns.gperf: New file.
20876 * cfns.h: Generated.
20877 * except.c: Include it.
20878 (nothrow_libfn_p): New fn.
20879 * decl.c (grokfndecl): Use it.
20880 * cp-tree.h: Declare it.
20881
20882 * decl.c (push_overloaded_decl_1, auto_function,
20883 define_function): Lose.
20884 (build_library_fn_1): New static fn.
20885 (builtin_function): Use it.
20886 (get_atexit_node): Use build_library_fn_ptr.
20887 (build_library_fn, build_cp_library_fn, build_library_fn_ptr,
20888 build_cp_library_fn_ptr, push_library_fn, push_cp_library_fn,
20889 push_void_library_fn, push_throw_library_fn): New fns.
20890 * cp-tree.h: Declare them.
20891 (cp_tree_index): Remove CPTI_BAD_CAST, CPTI_BAD_TYPEID.
20892 (throw_bad_cast_node, throw_bad_typeid_node): Lose.
20893 * except.c (init_exception_processing, call_eh_info, do_pop_exception,
20894 (expand_end_eh_spec, alloc_eh_object, expand_throw): Use above fns.
20895 * rtti.c (build_runtime_decl): Lose.
20896 (throw_bad_cast, throw_bad_typeid, get_tinfo_decl,
20897 build_dynamic_cast_1, expand_si_desc, expand_class_desc,
20898 expand_ptr_desc, expand_attr_desc, expand_generic_desc): Use above fns.
20899
20900 * call.c (build_call): Remove result_type parm.
20901 Call mark_used on unused artificial fns.
20902 * init.c, method.c, typeck.c, except.c, rtti.c: Adjust.
20903
20904 2000-03-09 Jason Merrill <jason@casey.cygnus.com>
20905
20906 * call.c (build_call): Set TREE_NOTHROW on the CALL_EXPR as
20907 appropriate.
20908 * decl.c (define_function): Set TREE_NOTHROW on the FUNCTION_DECL.
20909 * except.c (call_eh_info, alloc_eh_object, expand_throw): Set
20910 TREE_NOTHROW or TREE_THIS_VOLATILE on the function as appropriate.
20911 * rtti.c (build_runtime_decl, get_tinfo_decl, build_dynamic_cast_1,
20912 expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
20913 expand_generic_desc): Likewise.
20914
20915 2000-03-08 Nathan Sidwell <nathan@codesourcery.com>
20916
20917 * exception.cc (__cp_pop_exception): Cleanup the original object.
20918
20919 2000-03-08 Nathan Sidwell <nathan@codesourcery.com>
20920
20921 * decl.c (grok_op_properties): Merge conversion to void warning
20922 with other silly op warnings.
20923
20924 2000-03-08 Jason Merrill <jason@casey.cygnus.com>
20925
20926 * typeck2.c (process_init_constructor): Set TREE_PURPOSE of
20927 array CONSTRUCTOR elements. Don't use expr_tree_cons.
20928
20929 2000-03-08 Nathan Sidwell <nathan@codesourcery.com>
20930
20931 * decl.c (cp_make_fname_decl): New function.
20932 (wrapup_globals_for_namespace): Don't emit unused static vars.
20933 (init_decl_processing): Remove comment about use of
20934 array_domain_type. Set make_fname_decl.
20935 (cp_finish_decl): Remove __FUNCTION__ nadgering.
20936 * semantics.c (begin_compound_stmt): Remove
20937 current_function_name_declared flagging.
20938 (expand_stmt): Don't emit unused local statics.
20939 * typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
20940 specially.
20941
20942 2000-03-08 Nathan Sidwell <nathan@codesourcery.com>
20943
20944 * typeck.c (convert_for_assignment): Don't look at array
20945 initializer.
20946 * call.c (convert_like_real): Likewise.
20947
20948 2000-03-07 Jason Merrill <jason@casey.cygnus.com>
20949
20950 Add initial support for '\uNNNN' specifier.
20951 * lex.c (read_ucs): New fn.
20952 (readescape, skip_white_space): Call it.
20953 (is_extended_char, is_extended_char_1): New fns.
20954 (utf8_extend_token): New fn, #if 0'd out.
20955 (real_yylex): Treat extended chars like letters.
20956
20957 * search.c (note_debug_info_needed): Walk the bases even if we
20958 weren't deferring the type itself.
20959
20960 2000-03-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
20961
20962 * decl2.c (finish_objects): Constify a char*.
20963
20964 * method.c (emit_thunk): Likewise.
20965
20966 2000-03-06 Nathan Sidwell <nathan@codesourcery.com>
20967
20968 * typeck.c (dubious_conversion_warnings): Look through
20969 REFERENCE_TYPE.
20970
20971 2000-03-06 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
20972
20973 * class.c (dfs_modify_vtables): I is now unsigned.
20974 (check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
20975 (build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
20976 * error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
20977 * init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
20978 * method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
20979 * typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
20980 Call integer_all_onesp.
20981 * typeck2.c (process_init_constructor): Use compare_tree_int.
20982
20983 * lang-specs.h (as): Don't call if -syntax-only.
20984
20985 2000-03-06 Mark Mitchell <mark@codesourcery.com>
20986
20987 * expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
20988 RTL_EXPR_HAS_NO_SCOPE after all.
20989
20990 2000-03-05 Mark Mitchell <mark@codesourcery.com>
20991
20992 * expr.c (cplus_expand_expr, case STMT_EXPR): Use
20993 expand_start_stmt_expr and expand_end_stmt_expr directly. Set
20994 RTL_EXPR_HAS_NO_SCOPE.
20995
20996 * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
20997 later.
20998
20999 * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
21000
21001 2000-03-05 Nathan Sidwell <nathan@codesourcery.com>
21002
21003 * call.c (convert_like): Macrofy.
21004 (convert_like_with_context): New macro.
21005 (convert_like_real): Renamed from convert_like. Add calling
21006 context parameters, for diagnostics. Add recursive flag. Call
21007 dubious_conversion_warnings for outer conversion.
21008 (build_user_type_conversion): Use convert_like_with_context.
21009 (build_over_call): Likewise. Don't warn about dubious
21010 conversions here. Adjust convert_default_arg calls.
21011 (convert_default_arg): Add context parameters for diagnostics.
21012 Pass through to convert_like_with_context.
21013 * cp-tree.h (convert_default_arg): Add context parameters.
21014 (dubious_conversion_warnings): Prototype new function.
21015 * typeck.c (convert_arguments): Adjust convert_default_arg call.
21016 (dubious_conversion_warnings): New function, broken
21017 out of convert_for_assignment.
21018 (convert_for_assignment): Adjust.
21019
21020 2000-03-03 Jason Merrill <jason@casey.cygnus.com>
21021
21022 * decl2.c (key_method): Break out from...
21023 (import_export_vtable, import_export_class): ...here.
21024
21025 * decl.c (finish_function): Don't mess with flag_keep_inline_functions.
21026 * decl2.c (finish_vtable_vardecl): Don't check decl_function_context.
21027
21028 * search.c (note_debug_info_needed, dfs_debug_mark,
21029 dfs_debug_unmarkedp): Uncomment. Adjust for new scheme.
21030 * decl2.c (finish_vtable_vardecl): Call note_debug_info_needed.
21031
21032 2000-03-03 Nathan Sidwell <nathan@codesourcery.com>
21033
21034 * decl.c (cp_finish_decl): Remove obsolete obstack comments, fix
21035 typos.
21036
21037 2000-03-02 Mark Mitchell <mark@codesourcery.com>
21038
21039 * cp-tree.h (TYPE_NEEDS_DESTRUCTOR): Rename to ...
21040 (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): ... this.
21041 (TYPE_HAS_TRIVIAL_DESTRUCTOR): New macro.
21042 (lang_type): Split gets_new into has_new and has_array_new.
21043 (TYPE_VEC_NEW_USES_COOKIE): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
21044 (TYPE_GETS_NEW): Split into ...
21045 (TYPE_HAS_NEW_OPERATOR): ... this, and ...
21046 (TYPE_HAS_ARRAY_NEW_OPERATOR): ... this.
21047 (DECL_ARRAY_DELETE_OPERATOR_P): New macro
21048 (build_op_new_call): Don't declare.
21049 (build_new_1): Likewise.
21050 * call.c (build_op_new_call): Remove.
21051 * class.c (check_bases): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
21052 instead of TYPE_NEEDS_DESTRUCTOR.
21053 (finish_struct_bits): Likewise.
21054 (add_implicitly_declared_members): Likewise.
21055 (check_field_decl): Likewise.
21056 (check_methods): Set TYPE_VEC_DELETE_TAKES_SIZE here, and set it
21057 correctly under the new ABI.
21058 * decl.c (start_decl_1): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
21059 instead of TYPE_NEEDS_DESTRUCTOR.
21060 (initialize_local_var): Likewise.
21061 (destroy_local_var): Likewise.
21062 (cp_finish_decl): Likewise.
21063 (register_dtor_fn): Likewise.
21064 (grok_op_properties): Set TYPE_HAS_NEW_OPERATOR and
21065 TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW. Don't set
21066 TYPE_VEC_DELETE_TAKES_SIZE here.
21067 (xref_basetypes): Set TYPE_HAS_NEW_OPERATOR and
21068 TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.
21069 (store_parm_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
21070 (finish_destructor_body): Likewise.
21071 (maybe_build_cleanup_1): Likewise.
21072 * decl2.c (do_static_destruction): Likewise.
21073 * init.c (build_new_1): Make it static.
21074 (perform_member_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
21075 (expand_cleanup_for_base): Likewise.
21076 (get_cookie_size): New function.
21077 (build_new_1): Handle array-new cookies correctly under the new
21078 ABI.
21079 (build_vec_delete_1): Likewise.
21080 (build_vec_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
21081 (build_delete): Likewise.
21082 (build_vec_delete): Handle array-new cookies correctly under the new
21083 ABI.
21084 * lex.c (do_identifier): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
21085 * pt.c (instantiate_class_template): Set TYPE_HAS_NEW_OPERATOR and
21086 TYPE_HAS_ARRAY_NEW_OPERATOR.
21087 * ptree.c (print_lang_type): Check them.
21088 * search.c (context_for_name_lookup): Fix typo in comment.
21089 (tree_has_any_destructor_p): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
21090 * tree.c (break_out_cleanups): Likewise.
21091 (build_cplus_array_test_1): Likewise.
21092 (cp_build_qualified_type_real): Likewise.
21093 * typeck.c (complete_type): Likewise.
21094
21095 * g++spec.c (lang_specific_driver): Add -fnew-abi at the start of
21096 the command-line, not the end.
21097
21098 2000-03-01 Jason Merrill <jason@casey.cygnus.com>
21099
21100 * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG.
21101
21102 2000-03-02 Tom Tromey <tromey@cygnus.com>
21103
21104 * cp-tree.h (build_java_class_ref): Declare.
21105 * init.c (build_java_class_ref): No longer static.
21106 * except.c (expand_throw): Generate a Java-style `throw' if the
21107 thrown object is a "Java" object.
21108 (initialize_handler_parm): Generate a Java-style lookup of
21109 exception info if the caught object is a "Java" object.
21110 (catch_language, catch_language_init): New globals.
21111 (decl_is_java_type): New function.
21112 (expand_start_catch_block): Don't call push_eh_info() or
21113 push_eh_cleanup() when handling a Java-style "catch". Pass Java
21114 class reference to build_catch_block.
21115
21116 2000-03-02 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
21117
21118 * typeck.c (comptypes): Treat sizetype like its language equivalent.
21119
21120 2000-03-01 Bernd Schmidt <bernds@cygnus.co.uk>
21121
21122 * typeck.c (maybe_warn_about_returning_address_of_local): Reorganize
21123 to merge reference/pointer code and fix incorrect warnings.
21124
21125 2000-02-29 Jason Merrill <jason@casey.cygnus.com>
21126
21127 * search.c (protected_accessible_p): Use context_for_name_lookup.
21128
21129 * init.c (construct_virtual_bases): Fix thinko.
21130 * typeck.c (expand_ptrmemfunc_cst): Fix thinko.
21131
21132 2000-03-01 Martin von Loewis <loewis@informatik.hu-berlin.de>
21133
21134 * decl.c (current_function_decl): Move to toplev.c.
21135
21136 2000-02-29 Nathan Sidwell <nathan@codesourcery.com>
21137
21138 * pt.c (fn_type_unification): Unify return type, whenever
21139 provided.
21140 (get_bindings_real): Only pass return type when necessary.
21141 Remove explicit return type check.
21142 * class.c (resolve_address_of_overloaded_function): Pass desired
21143 return type to fn_type_unification.
21144
21145 2000-02-28 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
21146
21147 * class.c (build_vtbl_or_vbase_field, check_methods): Don't clear
21148 DECL_FIELD_SIZE.
21149 (check_bitfield_decl, check_field_decls): Set DECL_SIZE, not
21150 DECL_FIELD_SIZE.
21151 * rtti.c (expand_class_desc): Likewise.
21152 * cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name.
21153 (THUNK_VCALL_OFFSET): Likewise.
21154 (THUNK_DELTA): Reflect changes in ../tree.h.
21155
21156 2000-02-28 Jason Merrill <jason@casey.cygnus.com>
21157
21158 * search.c (protected_accessible_p): Also allow the access if
21159 the member is public in DERIVED. Lose TYPE parm.
21160 (friend_accessible_p): Lose TYPE parm.
21161 (accessible_p): Adjust.
21162
21163 2000-02-27 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
21164
21165 * class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop
21166 on things that are not sizes; ssize_binop deleted.
21167 Call size_diffop when appropriate.
21168 (dfs_build_vcall_offset_vtbl_entries): Likewise.
21169 (build_primary_vtable, build_secondary_vtable): Likewise.
21170 (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
21171 Variable I is HOST_WIDE_INT.
21172 (get_vfield_offset): Pass proper types to size_binop.
21173 (size_extra_vtbl_entries, layout_virtual_bases): Likewise.
21174 (finish_struct_1): Likewise.
21175 (skip_rtti_stuff): Arg N is now pointer to signed.
21176 (layout_class_type): Use size_zero_node.
21177 * cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
21178 * cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
21179 * decl.c (complete_arry_type): Pass proper types to size_binop.
21180 (xref_basetypes): BINFO_OFFSET is sizetype.
21181 * error.c (dump_expr): Don't use size_binop non-sizes.
21182 * expr.c (cplus_expand_constant): Pass proper types to size_binop.
21183 * init.c (construct_virtual_bases): Fix type error.
21184 (build_vec_delete_1): Pass proper type to size_binop and don't
21185 fold result.
21186 * lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
21187 * rtti.c (get_base_offset): Pass proper type to size_binop.
21188 * search.c (dfs_find_vbases): Fix type error.
21189 (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
21190 (dfs_get_vbase_types): BINFO_OFFSET is sizetype.
21191 * tree.c (debug_binfo): Variable N is signed.
21192 Use HOST_WIDE_INT_PRINT_DEC.
21193 * typeck.c (comptypes): sizetype is same as equivalent integer type.
21194 (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
21195 size_one_node and size_zero_node.
21196 (c_alignof): Use size_one_node.
21197 (build_component_addr): Pass proper types to size_binop.
21198 (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
21199
21200 2000-02-26 Jason Merrill <jason@casey.cygnus.com>
21201
21202 Implement class scope using-declarations for functions.
21203 * class.c (handle_using_decl): Call add_method for used functions.
21204 Use IDENTIFIER_CLASS_VALUE to check for conflicts.
21205 (add_method): Used functions are hidden by local functions.
21206 (check_bases_and_members): Handle using-decls before finalizing
21207 CLASSTYPE_METHOD_VEC.
21208 * call.c (add_function_candidate): Add ctype parm; if nonzero,
21209 override the type of 'this' accordingly.
21210 (add_template_candidate, add_template_candidate_real): Add ctype parm.
21211 (convert_class_to_reference, build_user_type_conversion_1,
21212 build_new_function_call, build_object_call, build_new_op,
21213 build_new_method_call): Pass ctype parm.
21214
21215 * search.c (lookup_member): Put rval_binfo, not basetype_path, in
21216 the baselink.
21217 * call.c (convert_class_to_reference, build_user_type_conversion_1,
21218 build_new_function_call, build_object_call, build_new_op,
21219 build_new_method_call, build_op_delete_call): Don't get basetype_path
21220 from a baselink.
21221 * typeck.c (build_component_ref): Likewise.
21222 * init.c (build_offset_ref): Likewise.
21223 (resolve_offset_ref): Don't call enforce_access.
21224 Call build_scoped_ref.
21225 * typeck2.c (build_scoped_ref): Simplify. Do nothing if it
21226 would cause an error or if -pedantic.
21227 * class.c (alter_access): Lose binfo parm.
21228
21229 2000-02-26 Mark Mitchell <mark@codesourcery.com>
21230
21231 * semantics.c (simplify_aggr_init_exprs_p): Don't walk into
21232 types.
21233
21234 2000-02-25 Alfred Minarik <a8601248@unet.univie.ac.at>
21235
21236 * rtti.c (get_vmi_pseudo_type_info): Move __vmi_class_type_info
21237 pseudo_type_info creation into the std namespace
21238
21239 2000-02-26 Mark Mitchell <mark@codesourcery.com>
21240
21241 * cp-tree.h (DECL_NEEDED_P): Tweak to correct usage before EOF.
21242 (import_export_class): Remove declaration.
21243 * decl2.c (import_export_class): Make it static.
21244 * dump.c (dequeue_and_dump): Handle PREDECREMENT_EXPR,
21245 PREINCREMENT_EXPR, POSTDECREMENT_EXPR, POSTINCREMENT_EXPR,
21246 EXPR_WITH_FILE_LOCATION.
21247 * lex.c (check_newline): Tweak filename/lineno setting.
21248 * semantics.c (begin_while_stmt): Fix typo in comment.
21249
21250 2000-02-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
21251
21252 * lang-options.h (-fmessage-length=): Add missing option.
21253
21254 * Make-lang.in (CXX_SRCS): Add .h files and sort list.
21255
21256 2000-02-26 Zack Weinberg <zack@wolery.cumb.org>
21257
21258 * Make-lang.in: Delete refs to LIBGCC2_DEPS.
21259
21260 2000-02-25 Jim Wilson <wilson@cygnus.com>
21261
21262 * optimize.c (expand_call_inline): Emit the return label before
21263 evaluating the return value.
21264
21265 2000-02-24 Mark Mitchell <mark@codesourcery.com>
21266
21267 * lex.c (check_newline): Use push_srcloc and pop_srcloc, rather
21268 than duplicating functionality here.
21269 * optimize.c: Include input.h.
21270 (expand_call_inline): Use push_srcloc and pop_srcloc.
21271 * parse.y (maybe_cv_qualifier): Remove calls to emit_line_note.
21272 * parse.c: Regenerated.
21273 * Makefile.in (lex.o): Depend on input.h.
21274 (optimize.o): Likewise.
21275
21276 2000-02-24 Nathan Sidwell <nathan@codesourcery.com>
21277
21278 * decl.c (grokdeclarator): Diagnose qualifiers on non-member
21279 function type, rather than ICE.
21280
21281 2000-02-23 Jason Merrill <jason@casey.cygnus.com>
21282
21283 * decl.c (grokdeclarator): Call decl_type_access_control.
21284 * parse.y (parse_end_decl): Don't call decl_type_access_control if
21285 decl is null.
21286
21287 2000-02-23 Nathan Sidwell <nathan@codesourcery.com>
21288
21289 * decl.c (decls_match): Remove obsolete static member nadgering.
21290
21291 2000-02-21 Martin v. Löwis <loewis@informatik.hu-berlin.de>
21292
21293 * decl.c (grokdeclarator): Change ANSI to ISO.
21294 * lex.c (consume_string, readescape, do_identifier): Likewise.
21295 (parse_float, real_yylex): Likewise.
21296 * parse.y (paren_expr_or_null, paren_cond_or_null): Likewise.
21297 (unary_expr, new_initializer, cast_expr, primary, primary_no_id,
21298 new_type_id, maybe_label_decls, simple_stmt,
21299 for.init.statement): Likewise.
21300 * pt.c (do_decl_instantiation, do_type_instantiation): Likewise.
21301 * semantics.c (finish_named_return_value): Likewise.
21302 * parse.c: Regenerate.
21303
21304 2000-02-21 Mark Mitchell <mark@codesourcery.com>
21305
21306 * cp-tree.h (CPTI_VTABLE_INDEX_TYPE): New macro.
21307 (CPTI_CLASS_STAR_TYPE): Remove.
21308 (vtable_index_type): Likewise.
21309 (class_star_type_node): Remove.
21310 (TYPE_PTRMEMFUNC_FN_TYPE): Adjust for the new ABI.
21311 (build_binary_op_nodefault): Remove.
21312 * call.c (build_new_op): Use build_binary_op instead of
21313 build_binary_op_nodefault.
21314 * decl.c (init_decl_processing): Remove class_star_type_node
21315 initialization. Make delta_type_node ptrdiff_type_node under the
21316 new ABI. Initialize vtable_index_type.
21317 (build_ptrmemfunc_type): Build different structures for the new
21318 ABI.
21319 (build_enumerator): Use build_binary_op instead of
21320 build_binary_op_nodefault.
21321 * method.c (build_overload_value): Mangle pointers-to-members
21322 appropriately under the new ABI.
21323 * typeck.c (build_array_ref): Use build_binary_op instead of
21324 build_binary_op_nodefault.
21325 (get_member_function_from_ptrfunc): Adjust for the new ABI.
21326 (build_binary_op_nodefault): Rename to ...
21327 (build_binary_op): ... this. Remove old version. Adjust for
21328 pointer-to-member comparisons under the new ABI.
21329 (build_ptrmemfunc1): Remove dead code. Adjust for the new ABI.
21330 (build_ptrmemfunc): Adjust for the new ABI.
21331 (expand_ptrmemfunc_cst): Likewise.
21332 (delta2_from_ptrmemfunc): Assert that we're not using the new ABI.
21333 (pfn_from_ptrmemfunc): Adjust for the new ABI.
21334
21335 2000-02-21 Gabriel Dos Reis <gdr@codesourcery.com>
21336
21337 * call.c (build_object_call): Compress consecutive calls to
21338 cp_error.
21339 (build_conditional_expr): Say 'ISO C++' not 'ANSI C++'.
21340 (build_op_delete_call): Adjust message formatting.
21341
21342 * class.c (check_bases): Compress consecutive calls to
21343 cp_pedwarn.
21344 (finish_struct_anon): Say 'ISO C++'.
21345
21346 * decl.c (start_decl): Same here.
21347 (grok_reference_init): Likewise.
21348 (grokfndecl): Correct message formatting.
21349 (grokfndecl): Improve diagnostic.
21350 (check_static_variable_definition): Likewise. Say 'ISO C++'
21351 (compute_array_index_type): Say 'ISO C++'
21352 (create_array_type_for_decl): Compress consecutive calls to
21353 cp_error.
21354 (grokdeclarator): Say 'ISO C++'
21355 (grok_op_properties): Likewise.
21356
21357 * decl2.c (delete_sanity): Clairify diagnostic.
21358 (check_member_template): Same here.
21359 (grok_function_init): Use consistent terminology.
21360
21361 * expr.c (do_case): Say 'ISO C++'
21362
21363 * friend.c (do_friend): Compress consecutive calls to warning.
21364
21365 2000-02-20 Mark Mitchell <mark@codesourcery.com>
21366
21367 * cp-tree.h (merge_primary_and_secondary_vtables_p): New macro.
21368 * class.c (build_secondary_vtable): Reorganize. Don't create a
21369 new vtable under the new ABI.
21370 (layout_vtable_decl): Don't add num_extra_vtbl_entries when
21371 computing the size.
21372 (build_vtbl_initializer): Don't return a CONSTRUCTOR; just return
21373 the initializing elements.
21374 (initialize_vtable): New function.
21375 (dfs_finish_vtbls): Use it.
21376 (dfs_accumulate_vtbl_inits): New function.
21377 (finish_vtbls): Merge primary and secondary vtables under the new
21378 ABI.
21379 (finish_struct_1): Remove redundant call to layout_vtable_decl.
21380 * init.c (expand_virtual_init): Deal with BINFO_VTABLEs that
21381 aren't VAR_DECLs.
21382
21383 * class.c (build_vtable): New function, split out from ...
21384 (get_vtable_decl): ... here, and ...
21385 (build_secondary_vtable): ... here.
21386
21387 * pt.c (tsubst_decl): Fix formatting.
21388
21389 2000-02-19 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
21390
21391 * class.c (build_primary_vtable, layout_vtable_decl): Likewise.
21392 (avoid_overlap, build_base_field): Likewise.
21393 (build_base_field, build_base_fields, is_empty_class):
21394 Test DECL_SIZE with integer_zero.
21395 (layout_class_type): Set CLASSTYPE_SIZE_UNIT.
21396 * cp-tree.h (struct lang_type): New field size_unit.
21397 (CLASSTYPE_SIZE_UNIT): New macro.
21398 * decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
21399 (cp_finish_decl): Delete -Wlarger-than processing.
21400 * optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
21401 * pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
21402 * tree.c (make_binfo): binfo vector is one entry longer.
21403 (walk_tree): Walk DECL_SIZE_UNIT.
21404
21405 2000-02-19 Mark Mitchell <mark@codesourcery.com>
21406
21407 * class.c (dfs_build_vcall_offset_vtbl_entries): Fix typo in
21408 comment.
21409 (build_vtable_entry): Don't assume all vtable entries are
21410 functions.
21411 (build_vtbl_initializer): Adjust accordingly.
21412 (get_vtable_decl): Fix formatting.
21413
21414 2000-02-18 Jason Merrill <jason@casey.cygnus.com>
21415
21416 * semantics.c (deferred_type_access_control): Walk the entire
21417 type_lookups list.
21418 (save_type_access_control): Rename from
21419 initial_deferred_type_access_control. Just remember the value.
21420 (decl_type_access_control): New fn.
21421 (begin_function_definition): Use deferred_type_access_control, after
21422 we've started the function. Set type_lookups to error_mark_node.
21423 * parse.y (frob_specs, fn.def1): Adjust.
21424 (parse_decl0, parse_field, parse_field0, parse_bitfield): New fns.
21425 (parse_end_decl, parse_bitfield0, parse_method): New fns.
21426 (fn.def2, initdcl, initdcl0_innards, nomods_initdcl0): Use them.
21427 (after_type_component_declarator0): Likewise.
21428 (after_type_component_declarator): Likewise.
21429 (notype_component_declarator): Likewise.
21430 * cp-tree.h: Adjust.
21431
21432 * decl.c (redeclaration_error_message): Allow redeclaration of
21433 namespace-scope decls.
21434
21435 2000-02-18 Martin von Loewis <loewis@informatik.hu-berlin.de>
21436
21437 * typeck2.c (my_friendly_abort): Use GCCBUGURL.
21438
21439 2000-02-17 Mark Mitchell <mark@codesourcery.com>
21440
21441 * class.c (add_method): Don't set DECL_VIRTUAL_CONTEXT.
21442 * decl2.c (grokclassfn): Likewise.
21443
21444 * ir.texi: Document DECL_TEMPLATE_INSTANTIATIONS.
21445
21446 * decl2.c (lang_decode_option): Don't set default message length
21447 here.
21448 * lex.c (lang_init_options): Set it here.
21449
21450 2000-02-16 Mark Mitchell <mark@codesourcery.com>
21451
21452 Make DECL_CONTEXT mean the class in which a member function was
21453 declared, even for a virtual function.
21454 * cp-tree.h (DECL_CLASS_CONTEXT): Adjust.
21455 (DECL_FRIEND_CONTEXT): New macro.
21456 (DECL_REAL_CONTEXT): Remove.
21457 (SET_DECL_FRIEND_CONTEXT): Likewise.
21458 (DECL_VIRTUAL_CONTEXT): Adjust.
21459 (DECL_CLASS_SCOPE_P): Use TYPE_P.
21460 (add_friends): Remove.
21461 (hack_decl_function_context): Likewise.
21462 * call.c (build_new_function_call): Replace DECL_REAL_CONTEXT with
21463 CP_DECL_CONTEXT.
21464 (build_over_call): Fix indentation. Use DECL_CONTEXT
21465 instead of DECL_CLASS_CONTEXT.
21466 * class.c (dfs_build_vcall_offset_vtbl_entries): Likewise.
21467 (add_method): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
21468 (strictly_overrides): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
21469 (build_vtbl_or_vbase_field): Don't set DECL_CLASS_CONTEXT.
21470 (build_base_field): Likewise.
21471 (finish_struct_1): Likewise.
21472 (build_self_reference): Likewise.
21473 * decl.c (push_class_binding): Use CP_DECL_CONTEXT, not
21474 DECL_REAL_CONTEXT.
21475 (pushtag): Use decl_function_context, not
21476 hack_decl_function_context.
21477 (decls_match): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
21478 (duplicate_decls): Use DECL_VIRTUAL_CONTEXT.
21479 (pushdecl): Remove bogus code.
21480 (start_decl): Use DECL_CONTEXT rather than DECL_CLASS_CONTEXT.
21481 (cp_finish_decl): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
21482 (grokfndecl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
21483 Use decl_function_context, nothack_decl_function_context.
21484 (grokvardecl): Don't set DECL_CLASS_CONTEXT.
21485 (grokdeclarator): Likewise. Use decl_function_context, not
21486 hack_decl_function_context.
21487 (copy_args_p): Document. Don't use DECL_CLASS_CONTEXT.
21488 (start_function): Use DECL_FRIEND_CONTEXT, not
21489 DECL_CLASS_CONTEXT. Use decl_function_context, not
21490 hack_decl_function_context.
21491 (finish_function): Use decl_function_context, not
21492 hack_decl_function_context.
21493 (maybe_retrofit_in_chrg): Use DECL_CONTEXT, not
21494 DECL_CLASS_CONTEXT.
21495 (grokclassfn): Set DECL_VIRTUAL_CONTEXT, not DECL_CONTEXT.
21496 (finish_static_data_member_decl): Don't set DECL_CLASS_CONTEXT.
21497 (grokfield): Likewise.
21498 (finish_builtin_type): Likewise.
21499 (finish_vtable_vardec): Use decl_function_context, not
21500 hack_decl_function_context.
21501 (import_export_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
21502 (start_static_initialization_or_destruction): Likewise.
21503 (finish_static_initialization_or_destruction): Likewise.
21504 (mark_used): Adjust logic for deciding when to synthesize methods.
21505 * dump.c (dequeue_and_dump): Use CP_DECL_CONTEXT, not
21506 DECL_REAL_CONTEXT.
21507 * error.c (dump_function_decl): Use DECL_CONTEXT, not
21508 DECL_CLASS_CONTEXT.
21509 * friend.c (is_friend): Likewise.
21510 (add_friends): Remove.
21511 (do_friend): Use SET_DECL_FRIEND_CONTEXT.
21512 * lex.c (begin_definition_of_inclass_inline): Use
21513 decl_function_context, not hack_decl_function_context.
21514 (process_next_inline): Likewise.
21515 (do_identifier): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
21516 * method.c (set_mangled_name_for_decl): Use DECL_CONTEXT, not
21517 DECL_CLASSS_CONTEXT.
21518 (hack_identifier): Likewise.
21519 (synthesize_method): Use decl_function_context, not
21520 hack_decl_function_context.
21521 * pt.c (template_class_depth_real): Use CP_DECL_CONTEXT, not
21522 DECL_REAL_CONTEXT.
21523 (is_member_template): Use decl_function_context, not
21524 hack_decl_function_context. Use DECL_CONTEXT, not
21525 DECL_CLASS_CONTEXT.
21526 (build_template_decl): Set DECL_VIRTUAL_CONTEXT, not
21527 DECL_CLASS_CONTEXT.
21528 (check_default_tmpl_args): Use CP_DECL_CONTEXT, not
21529 DECL_REAL_CONTEXT.
21530 (push_template_decl_real): Likewise.
21531 (instantiate_class_template): Don't call add_friends.
21532 (tsubst_default_argument): Use DECL_CONTEXT, not
21533 DECL_REAL_CONTEXT.
21534 (tsubst_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
21535 Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
21536 (set_meangled_name_for_template_decl): Use DECL_CONTEXT, not
21537 DECL_CLASS_CONTEXT.
21538 * repo.c (repo_inline_used): Likewise.
21539 * search.c (current_scope): Adjust for new _CONTEXT macros.
21540 (context_for_name_lookup): Use CP_DECL_CONTEXT, not
21541 DECL_REAL_CONTEXT.
21542 (friend_accessible_p): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
21543 (lookup_fnfields_here):Likewise.
21544 (check_final_overrider): Likewise.
21545 (init_vbase_pointers): Likewise.
21546 (virtual_context): Likewise.
21547 * semantics.c (finish_member_declaration): Just set DECL_CONTEXT.
21548 (expand_body): Use decl_function_context, not
21549 hack_decl_function_context.
21550 * tree.c (hack_decl_function_context): Remove.
21551 * typeck.c (build_x_function_call): Use DECL_CONTEXT, not
21552 DECL_CLASS_CONTEXT.
21553 * typeck2.c (error_not_base_type): Likewise.
21554
21555 2000-02-15 Jason Merrill <jason@casey.cygnus.com>
21556
21557 * decl.c (xref_tag): Don't SET_IDENTIFIER_NAMESPACE_VALUE.
21558
21559 2000-02-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
21560
21561 * Make-lang.in (g++spec.o): Depend on $(GCC_H), not gcc.h.
21562
21563 2000-02-15 Jonathan Larmour <jlarmour@redhat.co.uk>
21564
21565 * lang-specs.h: Add new __GNUC_PATCHLEVEL__ define to default spec.
21566
21567 2000-01-16 Gabriel Dos Reis <gdr@codesourcery.com>
21568
21569 * decl2.c (lang_decode_option): Enable automatic line wrapping.
21570
21571 2000-02-13 Jason Merrill <jason@casey.cygnus.com>
21572
21573 * parse.y (frob_specs): Split out...
21574 (parse_decl): From here.
21575 (fn.def2): Call initial_deferred_type_access_control.
21576 (after_type_component_declarator0): Call frob_specs.
21577 (notype_component_declarator0): Likewise.
21578 * search.c (friend_accessible_p): Nested classes are friends of their
21579 enclosing classes.
21580
21581 2000-02-10 Mark Mitchell <mark@codesourcery.com>
21582
21583 * ir.texi (ADDR_EXPR): Document the fact that an ADDR_EXPR can be
21584 used to create an implicit temporary.
21585
21586 * class.c (dfs_modify_vtables): Tweak calculation of functions to
21587 override.
21588
21589 2000-02-08 Nathan Sidwell <nathan@acm.org>
21590
21591 * typeck.c (strip_all_pointer_quals): Use TYPE_MAIN_VARIANT, to
21592 strip array element qualifiers too.
21593
21594 2000-02-07 Mark Mitchell <mark@codesourcery.com>
21595
21596 * decl.c (store_parm_decls): Don't build cleanups for parameters
21597 while processing_template_decl.
21598
21599 2000-02-07 Jason Merrill <jason@casey.cygnus.com>
21600
21601 * cp-tree.h (struct saved_scope): Add incomplete field.
21602 (namespace_scope_incomplete): New macro.
21603 * decl.c (pushdecl): Use it.
21604 (hack_incomplete_structures): Use it. See through artificial
21605 binding levels.
21606 (mark_saved_scope): Mark it.
21607
21608 Implement access control for nested types.
21609 * search.c (type_access_control): New fn.
21610 (accessible_p): Now we do perform access control for types.
21611 * semantics.c (deferred_type_access_control): New fn.
21612 (initial_deferred_type_access_control): New fn.
21613 (begin_function_definition): Call it. Add lookups parm.
21614 * decl.c (struct binding_level): Add this_class field.
21615 (pushlevel_class): Set it.
21616 (mark_binding_level): Mark it.
21617 (lookup_name_real): Use it. Call type_access_control.
21618 (mark_saved_scope): Mark lookups field.
21619 * cp-tree.h (flagged_type_tree): Add lookups field.
21620 (struct saved_scope): Add lookups field.
21621 (type_lookups): New macro.
21622 * parse.y (declmods): Now <ftype>.
21623 (parse_decl): Add lookups parm. Call
21624 initial_deferred_type_access_control.
21625 (lang_extdef): Clear type_lookups.
21626 (typed_declspecs, declmods, typespec): Set lookups field.
21627 (initdcl): Call deferred_type_access_control.
21628 (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0,
21629 component_decl_1, named_parm): Adjust.
21630 * friend.c (is_friend): Nested classes are friends of their
21631 enclosing classes.
21632
21633 * class.c (currently_open_derived_class): New fn.
21634 * method.c (hack_identifier): Use it.
21635
21636 * lex.c (do_identifier): Remove obsolete code.
21637
21638 * parse.y (typed_typespecs): Propagate new_type_flag properly.
21639
21640 2000-02-05 Zack Weinberg <zack@wolery.cumb.org>
21641
21642 * tinfo.h: Remove apostrophes from C++ comment (xgettext
21643 thinks this file is plain C).
21644
21645 2000-02-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
21646
21647 * Makefile.in (call.o): Depend on $(EXPR_H).
21648
21649 * call.c: Include "expr.h".
21650
21651 * class.c (dump_class_hierarchy): Add prototype.
21652
21653 * search.c (dfs_get_pure_virtuals): Likewise.
21654
21655 2000-02-1 Ulrich Drepper <drepper@redhat.com>
21656
21657 * parse.y (simple_stmt): Allow :: token in asm parameter list.
21658 * parse.c: Rebuilt.
21659
21660 2000-01-31 Jim Wilson <wilson@cygnus.com>
21661
21662 * class.c (build_vtbl_or_vbase_field): New parameter fcontext.
21663 Store it in DECL_FCONTEXT.
21664 (build_vbase_pointer_fields, create_vtable_ptr): Fix callers.
21665
21666 2000-01-31 Jason Merrill <jason@casey.cygnus.com>
21667
21668 * tinfo.h (old abi): #include "tconfig.h".
21669 * tinfo.cc (convert_to_base): Move into old abi section.
21670
21671 2000-01-31 Mark Mitchell <mark@codesourcery.com>
21672
21673 * cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
21674 (CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
21675 (BINFO_PRIMARY_BINFO): New macro.
21676 (BF_DELTA): Rename to ...
21677 (BV_DELTA): ... this.
21678 (BF_VCALL_INDEX): Rename to ...
21679 (BV_VCALL_INDEX): ... this.
21680 (BF_FN): Rename to ...
21681 (BV_FN): ... this.
21682 * class.c (build_vbase_path): Adjust for changes to reverse_path.
21683 (set_rtti_entry): Rename BF_ macros to BV_ variants.
21684 (modify_vtable_entry): Simplify.
21685 (add_virtual_function): Rename BF_ macros to BV_ variants.
21686 (build_vtable_initializer): Likewise.
21687 (get_class_offset_1): Remove.
21688 (dfs_get_class_offset): Likewise.
21689 (get_class_offset): Likewise.
21690 (dfs_find_final_overrider): New function.
21691 (find_final_overrider): Likewise.
21692 (modify_one_vtable): Remove.
21693 (dfs_find_base): New function.
21694 (dfs_modify_vtables): Fold modify_one_vtable in here. Use
21695 find_final_overrider.
21696 (modify_all_vtables): Adjust. Set BV_VCALL_INDEX on new
21697 virtuals.
21698 (dfs_fixup_vtable_deltas): Remove.
21699 (override_one_vtable): Remove.
21700 (merge_overrides): Likewise.
21701 (layout_virtual_bases): Make sure BINFO_OFFSET is set right for
21702 unreal chilren of virtual bases.
21703 (finish_struct_1): Don't use merge_overrides. Don't use
21704 dfs_fixup_vtable_deltas.
21705 * tree.c (reverse_path): Return a TREE_LIST, not a chain of
21706 BINFOs.
21707
21708 2000-01-31 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
21709 Jason Merrill <jason@yorick.cygnus.com>
21710
21711 * tinfo.h: Rename USItype to myint32, depend on BITS_PER_UNIT.
21712
21713 2000-01-31 Alfred Minarik <a8601248@unet.univie.ac.at>
21714
21715 * exception.cc (__throw_bad_typeid): Add missing std::.
21716
21717 2000-01-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
21718
21719 * cp-tree.h (make_thunk): PROTO -> PARAMS.
21720
21721 2000-01-31 Nathan Sidwell <sidwell@codesourcery.com>
21722
21723 * cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
21724
21725 Runtime support for new-abi rtti.
21726 * inc/typeinfo (type_info::operator!=): Define in class.
21727 (type_info::before, type_info::name, type_info::operator==,
21728 type_info::operator!=): Define new ABI implementations.
21729 (type_info::is_pointer_p, type_info::is_function_p): Declare
21730 new virtual functions.
21731 (type_info::do_catch, type_info::do_upcast): Likewise.
21732
21733 * tinfo.h (__base_class_info): Define new class.
21734 (__class_type_info): Likewise.
21735 (__si_class_type_info): Likewise.
21736 (__vmi_class_type_info): Likewise.
21737 (__dynamic_cast): Prototype.
21738
21739 * tinfo.cc: Conditionalize old and new rtti mechanisms.
21740 (type_info::is_pointer_p): Define new function.
21741 (type_info::is_function_p): Likewise.
21742 (type_info::do_catch): Likewise.
21743 (type_info::do_upcast): Likewise.
21744 (vtable_prefix): New structure for vtable access.
21745 (adjust_pointer): Define new template function.
21746 (contained_p, public_p, virtual_p, contained_public_p,
21747 contained_nonpublic_p, contained_nonvirtual_p): Define new
21748 functions.
21749 (nonvirtual_base_type): New local variable.
21750 (__class_type_info::~__class_type_info): Define.
21751 (__si_class_type_info::~__si_class_type_info): Likewise.
21752 (__vmi_class_type_info::~__vmi_class_type_info): Likewise.
21753 (__class_type_info::do_catch): Define new function.
21754 (__class_type_info::do_upcast): Likewise.
21755 (__class_type_info::find_public_src): Likewise.
21756 (__class_type_info::do_find_public_src): Likewise.
21757 (__si_class_type_info::do_find_public_src): Likewise.
21758 (__vmi_class_type_info::do_find_public_src): Likewise.
21759 (__class_type_info::do_dyncast): Likewise.
21760 (__si_class_type_info::do_dyncast): Likewise.
21761 (__vmi_class_type_info::do_dyncast): Likewise.
21762 (__class_type_info::do_upcast): Likewise.
21763 (__si_class_type_info::do_upcast): Likewise.
21764 (__vmi_class_type_info::do_upcast): Likewise.
21765 (__dynamic_cast): Likewise.
21766
21767 * tinfo2.cc (__fundamental_type_info): Define new class.
21768 (__pointer_type_info): Likewise.
21769 (__reference_type_info): Likewise.
21770 (__array_type_info): Likewise.
21771 (__function_type_info): Likewise.
21772 (__enum_type_info): Likewise.
21773 (__ptr_to_member_type_info): Likewise.
21774 (__fundamental_type_info::~__fundamental_type_info): Define.
21775 (__pointer_type_info::~__pointer_type_info): Likewise.
21776 (__reference_type_info::~__reference_type_info): Likewise.
21777 (__array_type_info::~__array_type_info): Likewise.
21778 (__function_type_info::~__function_type_info): Likewise.
21779 (__enum_type_info::~__enum_type_info): Likewise.
21780 (__ptr_to_member_type_info::~__ptr_to_member_type_info): Likewise.
21781 (__pointer_type_info::do_catch): Define new function.
21782 (__ptr_to_member_type_info::do_catch): Define new function.
21783
21784 (__throw_type_match_rtti_2): Use new ABI interface, if enabled.
21785 (__is_pointer): Likewise.
21786
21787 * exception.cc (__cplus_type_matcher): Deal with new-abi rtti.
21788
21789 2000-01-30 Mark Mitchell <mark@codesourcery.com>
21790
21791 * cp/class.c (build_vtable): Rename to build_primary_vtable.
21792 (prepare_fresh_vtable): Rename to build_secondary_vtable.
21793 (make_new_vtable): New function.
21794 (modify_vtable_entry): Handle generation of new vtables correctly.
21795 (modify_one_vtable): Remove unused parameter.
21796 (dfs_fixup_vtable_deltas): Likewise.
21797 (override_one_vtable): Use build_secondary_vtable.
21798 (finish_struct_1): Use build_primary_vtable and
21799 build_secondary_vtable.
21800
21801 2000-01-28 Ulrich Drepper <drepper@redhat.com>
21802
21803 * cp/decl.c: Adjust variable names, comments, help strings.
21804
21805 2000-01-29 Nathan Sidwell <nathan@acm.org>
21806
21807 * new2.cc (operator delete[]): Use operator delete, don't assume
21808 implementation.
21809
21810 2000-01-29 Nathan Sidwell <sidwell@codesourcery.com>
21811
21812 * class.c (build_vtbl_initializer): Add argument to
21813 build_vtable_entry call.
21814
21815 2000-01-27 Mark Mitchell <mark@codesourcery.com>
21816
21817 * cp-tree.def (THUNK_DECL): Discuss vcall indices.
21818 * cp-tree.h (BINFO_VIRTUALS): Update documentation.
21819 (BF_DELTA): New macro.
21820 (BF_VCALL_INDEX): Likewise.
21821 (BF_FN): Likewise.
21822 (THUNK_VCALL_OFFSET): Likewise.
21823 (make_thunk): Change prototype.
21824 * class.c (build_vtable_entry): Integrate
21825 build_vtable_entry_for_fn. Handle vcall indices.
21826 (build_vtable_entry_for_fn): Remove.
21827 (set_rtti_entry): Handle vcall indices. Use BF_DELTA,
21828 BF_VCALL_INDEX, BF_FN.
21829 (modify_vtable_entry): Integrate common code from
21830 modify_one_vtable and dfs_fixup_vtable_deltas.
21831 (add_virtual_function): Set BF_VCALL_INDEX.
21832 (build_vtbl_initializer): Simplify. Use BF_DELTA, BF_VCALL_INDEX,
21833 and BF_FN.
21834 (modify_one_vtable): Simplify.
21835 (dfs_fixup_vtable_deltas): Likewise.
21836 (override_one_vtable): Use BF_DELTA, BF_VCALL_INDEX, BF_FN.
21837 * method.c (make_thunk): Handle vcall indices.
21838
21839 2000-01-28 Nathan Sidwell <sidwell@codesourcery.com>
21840
21841 Compiler side new abi rtti (not enabled).
21842 * cp-tree.h (new_abi_rtti_p): New macro.
21843 (emit_support_tinfos): Prototype new function.
21844 (tinfo_decl_p): Likewise.
21845 (emit_tinfo_decl): Likwise.
21846 * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL): New accessor
21847 macros.
21848 (doing_runtime): New local static.
21849 (init_rtti_processing): Add new-abi initializer.
21850 (get_tinfo_decl): Add new-abi logic.
21851 (tinfo_from_decl): Likewise.
21852 (build_dynamic_cast_1): Likewise.
21853 (qualifier_flags): New static function.
21854 (tinfo_base_init): Likewise.
21855 (generic_initializer): Likewise.
21856 (ptr_ref_initializer): Likewise.
21857 (ptmd_initializer): Likewise.
21858 (class_hint_flags): Likewise.
21859 (class_initializer): Likewise.
21860 (synthesize_tinfo_var): Likewise.
21861 (create_real_tinfo_var): Likewise.
21862 (create_pseudo_type_info): Likewise.
21863 (get_vmi_pseudo_type_info): Likewise.
21864 (create_tinfo_types): Likewise.
21865 (emit_support_tinfos): New global function.
21866 (tinfo_decl_p): New global predicate.
21867 (emit_tinfo_decl): New global function.
21868 * class.c (set_rtti_entry): Generalize for old and new rtti.
21869 (build_vtbl_initializer): Likewise.
21870 * decl2.c (finish_file): Likewise.
21871
21872 2000-01-27 Jim Wilson <wilson@cygnus.com>
21873
21874 * optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
21875 and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).
21876
21877 2000-01-27 Mike Stump <mrs@wrs.com>
21878
21879 * decl.c (pushdecl): Fix up shadow warnings with respect to implicit
21880 for scopes.
21881
21882 2000-01-26 Jason Merrill <jason@casey.cygnus.com>
21883
21884 * pt.c (unify): Use fold, not maybe_fold_nontype_arg.
21885
21886 2000-01-26 J"orn Rennecke <amylaar@cygnus.co.uk>
21887
21888 * optimize.c (calls_setjmp_r): Supply new argument
21889 to special_function_p.
21890
21891 2000-01-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
21892
21893 * call.c: PROTO -> PARAMS.
21894 * class.c: Likewise.
21895 * cp-tree.h: Likewise.
21896 * cvt.c: Likewise.
21897 * decl.c: Likewise.
21898 * decl.h: Likewise.
21899 * decl2.c: Likewise.
21900 * dump.c: Likewise.
21901 * errfn.c: Likewise.
21902 * error.c: Likewise.
21903 * except.c: Likewise.
21904 * expr.c: Likewise.
21905 * init.c: Likewise.
21906 * input.c: Likewise.
21907 * lex.c: Likewise.
21908 * lex.h: Likewise.
21909 * method.c: Likewise.
21910 * optimize.c: Likewise.
21911 * parse.y: Likewise.
21912 * pt.c: Likewise.
21913 * repo.c: Likewise.
21914 * rtti.c: Likewise.
21915 * search.c: Likewise.
21916 * semantics.c: Likewise.
21917 * spew.c: Likewise.
21918 * tree.c: Likewise.
21919 * typeck.c: Likewise.
21920 * typeck2.c: Likewise.
21921 * xref.c: Likewise.
21922
21923 2000-01-25 Richard Henderson <rth@cygnus.com>
21924
21925 * typeck.c (build_binary_op_nodefault): Remove UNNE_EXPR.
21926
21927 2000-01-25 Mark Mitchell <mark@codesourcery.com>
21928
21929 * cp-tree.h (vcall_offset_in_vtable_p): New macro.
21930 * class.c (build_vbase_offset_vtbl_entries): Fix typo in commment.
21931 (struct vcall_offset_data_s): New type.
21932 (dfs_vcall_offset_queue_p): New function.
21933 (dfs_build_vcall_offset_vtbl_entries): Likewise.
21934 (build_vcall_offset_vtbl_entries): Likewise.
21935 (layout_vtable_decl): Likewise.
21936 (num_vfun_entries): Likewise.
21937 (num_extra_vtbl_entries): Add the entries for vcall offsets.
21938 (build_vtbl_initializer): Likewise.
21939 (dfs_finish_vtabls): Use layout_vtable_decl.
21940 (modify_one_vtables): Always duplicate vtables under the new ABI.
21941 (finish_struct_1): Use layout_vtable_decl.
21942
21943 2000-01-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
21944
21945 * decl.c (member_function_or_else): Change third arg from a format
21946 specifier to an `enum overload_flags'. Callers changed.
21947
21948 2000-01-25 Gabriel Dos Reis <gdr@codesourcery.com>
21949
21950 * typeck.c (composite_pointer_type, c_sizeof, expr_sizeof,
21951 build_binary_op_nodefault, build_unary_op, build_reinterpret_cast,
21952 build_const_cast, get_delta_difference, check_return_expr): Avoid
21953 ANSI string concatenation usage.
21954
21955 2000-01-24 Mark Mitchell <mark@codesourcery.com>
21956
21957 * class.c (layout_class_type): Put the fields required to make a
21958 class non-empty at the end, not the beginning, of the TYPE_FIELDs
21959 list.
21960
21961 2000-01-24 Jason Merrill <jason@casey.cygnus.com>
21962
21963 * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a
21964 template.
21965
21966 * decl2.c (mark_used): Do instantiate inlines that have been
21967 explicitly instantiated.
21968
21969 2000-01-24 Richard Henderson <rth@cygnus.com>
21970
21971 * call.c (build_over_call): Use expand_tree_builtin.
21972 * typeck.c (build_function_call_real): Likewise.
21973 (build_binary_op_nodefault): Handle unordered compares.
21974
21975 2000-01-24 Nathan Sidwell <sidwell@codesourcery.com>
21976
21977 * cp-tree.h (CPTI_BAD_CAST, CPTI_BAD_TYPEID, CPTI_DCAST): New
21978 cp_tree_index values.
21979 (throw_bad_cast_node, throw_bad_typeid_node, dynamic_cast_node):
21980 New global node #defines for them.
21981 * rtti.c (call_void_fn): Replace with ...
21982 (build_runtime_decl): ... new static function.
21983 (throw_bad_cast): Use throw_bad_cast_node and build_runtime_decl.
21984 (throw_bad_typeid): Use throw_bad_typeid_node and build_runtime_decl.
21985 (build_dynamic_cast_1): Always produce correctly typed result.
21986 Explicitly produce type_info addresses. Use dynamic_cast_node.
21987 * exception.cc (__throw_bad_cast): Return `void *'.
21988 (__throw_bad_typeid): Return `const type_info &'.
21989
21990 2000-01-24 Nathan Sidwell <sidwell@codesourcery.com>
21991
21992 * cp-tree.h (get_vtable_decl): Prototype new function.
21993 * class.c (get_vtable_decl): New function. Broken out from ...
21994 (build_vtable): ... here. Use it.
21995 * decl2.c (finish_vtable_vardecl): Ignore dummy vtables created
21996 by get_vtable_decl.
21997
21998 2000-01-24 Nathan Sidwell <sidwell@codesourcery.com>
21999
22000 * cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
22001 CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
22002 CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
22003 (CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
22004 CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
22005 CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
22006 (CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
22007 (CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
22008 (CPTI_TINFO_VAR_ID): New enumeration.
22009 (__tp_desc_type_node, __access_mode_type_node,
22010 __bltn_desc_type_node, __user_desc_type_node,
22011 __class_desc_type_node, __ptr_desc_type_node,
22012 __attr_desc_type_node, __func_desc_type_node,
22013 __ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
22014 (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
22015 ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
22016 enum_desc_type_node, class_desc_type_node,
22017 si_class_desc_type_node, vmi_class_desc_type_node,
22018 ptmd_desc_type_node, base_desc_type_node): New #defines.
22019 (tinfo_fn_id, tinfo_fn_type): Rename to ...
22020 (tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
22021 (tinfo_var_id): New enumeration.
22022 (DECL_TINFO_FN_P): Augment comment.
22023 * decl.c (cp_global_trees): Adjust documentation.
22024 * rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
22025 tinfo_decl_type and tinfo_var_id.
22026 (get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
22027 (build_typeid): Remove unused variable.
22028 (get_tinfo_var): Use tinfo_var_id.
22029 (tinfo_name): New static function.
22030 (get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
22031 (tinfo_from_decl): Likewise.
22032 (get_base_offset): New static function, broken out of
22033 expand_class_desc.
22034 (expand_si_desc): Use tinfo_name.
22035 (expand_class_desc): Likewise. Lose local static variable.
22036 Use base_desc_type_node. Use get_base_offset.
22037 (expand_ptr_desc): Use tinfo_name.
22038 (expand_attr_desc): Likewise.
22039 (expand_generic_desc): Likewise.
22040
22041 * tinfo.cc (__GXX_ABI_VERSION): Test value and existence.
22042 * tinfo.h (__GXX_ABI_VERSION): Test value and existence.
22043
22044 2000-01-23 Mark Mitchell <mark@codesourcery.com>
22045
22046 * cp-tree.h (__eprintf): Remove declaration.
22047 * tree.c (__eprintf): Remove definition.
22048
22049 2000-01-23 Zack Weinberg <zack@rabi.columbia.edu>
22050 Mark Mitchell <mark@codesourcery.com>
22051
22052 * cp-tree.h (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
22053 CLEAR_CLASSTYPE_MARKED_N): Avoid signed vs. unsigned warnings.
22054
22055 2000-01-23 Brad Lucier <lucier@math.purdue.edu>
22056
22057 * class.c (dump_class_hierarchy): Print HOST_WIDE_INT properly.
22058
22059 2000-01-23 Mark Mitchell <mark@codesourcery.com>
22060
22061 * cp-tree.h (register_dtor_fn): New function.
22062 * decl.c (destroy_local_static): Rename to ...
22063 (register_dtor_fn): ... this. Give it external linkage.
22064 (expand_static_init): Use it.
22065 * decl2.c (do_static_initialization): Likewise, if using
22066 __cxa_atexit.
22067 (do_static_destruction): Check that __cxa_atexit is not in use.
22068 (finish_file): Don't call do_static_destruction if using
22069 __cxa_atexit.
22070
22071 * typeck.c (convert_arguments): Restore two-message error
22072 reporting.
22073
22074 2000-01-20 Nathan Sidwell <sidwell@codesourcery.com>
22075
22076 Remap dynamic cast hint values to be consistent across ABIs.
22077 * search.c (dynamic_cast_base_recurse): Remap generated value.
22078 (get_dynamic_cast_base_type): Adjust documentation.
22079 * tinfo.h (__user_type_info::dyncast): Likewise.
22080 (__user_type_info::find_public_subobj): Remap BOFF meaning.
22081 * tinfo.cc (__si_type_info::do_dyncast): Remap BOFF meaning.
22082 (__class_type_info::do_dyncast): Likewise.
22083 (__class_type_info::do_find_public_subobj): Likewise.
22084 * tinfo2.cc (__dynamic_cast): Remap BOFF parameter.
22085
22086 2000-01-19 Gabriel Dos Reis <gdr@codesourcery.com>
22087
22088 * typeck.c (build_unary_op): Use cp_pedwarn, not pedwarn.
22089
22090 * typeck2.c (incomplete_type_error): Restore previous
22091 cp_error and cp_error_at call sequence.
22092
22093 2000-01-20 Brad Lucier <lucier@math.purdue.edu>
22094
22095 * class.c (dump_class_hierarchy): Make format agree with argument;
22096 cast pointer to unsigned long and print with %lx.
22097
22098 2000-01-19 Gabriel Dos Reis <gdr@codesourcery.com>
22099
22100 * decl2.c (lang_decode_option): Set default line-wrap length to 72.
22101
22102 * typeck.c (composite_pointer_type, common_type,
22103 comp_target_parms, c_sizeof, expr_sizeof, build_array_ref,
22104 build_function_call_real, convert_arguments,
22105 build_binary_op_nodefault, pointer_int_sum, pointer_diff,
22106 build_unary_op, mark_addressable, build_compound_expr,
22107 build_static_cast, build_reinterpret_cast, build_const_cast,
22108 build_c_cast, build_modify_expr, get_delta_difference,
22109 build_ptrmemfunc, check_return_expr): Replace 'ANSI C++' with
22110 'ISO C++'. Fusion consecutive calls to diagnostic message routines
22111 into a single one.
22112 * typeck2.c (readonly_error, abstract_virtuals_error,
22113 process_init_constructor, check_for_new_type): Likewise.
22114
22115 2000-01-19 Mark Mitchell <mark@codesourcery.com>
22116
22117 * tree.c (bot_manip): Set DECL_CONTEXT for newly created
22118 VAR_DECLs.
22119
22120 2000-01-18 Nathan Sidwell <sidwell@codesourcery.com>
22121
22122 * cp-tree.h (get_tinfo_fn_dynamic): Remove prototype.
22123 (build_x_typeid): Likewise.
22124 (get_tinfo_fn): Likewise.
22125 (get_tinfo_fn_unused): Rename to ...
22126 (get_tinfo_decl): ... here.
22127 * rtti.c (build_headof): Replace logic error with assertion.
22128 (get_tinfo_fn_dynamic): Rename to ...
22129 (get_tinfo_decl_dynamic): ... here. Make static. Use
22130 complete_type_or_else.
22131 (build_x_typeid): Move into ...
22132 (build_typeid): ... here. Adjust call to
22133 get_tinfo_decl_dynamic. Use tinfo_from_decl. Simplify
22134 throw_bad_typeid expression.
22135 (get_tinfo_fn_unused): Rename to ...
22136 (get_tinfo_decl): ... here. Adjust comment.
22137 (get_tinfo_fn): Delete.
22138 (tinfo_from_decl): New static function.
22139 (get_typeid_1): Call get_tinfo_decl and tinfo_from_decl.
22140 (get_typeid): Use complete_type_or_else.
22141 (build_dynamic_cast_1): Adjust calls to
22142 get_tinfo_decl_dynamic. Simplify throw_bad_cast expression.
22143 * parse.y (primary): Adjust call to build_typeid.
22144 * except.c (build_eh_type_type_ref): Adjust call to
22145 get_tinfo_decl. Mark as used.
22146 * class.c (set_rtti_entry): Adjust call to get_tinfo_decl.
22147 * decl2.c (build_expr_from_tree): Adjust call to build_typeid.
22148 * parse.c: Regenerated.
22149
22150 2000-01-17 Mark Mitchell <mark@codesourcery.com>
22151
22152 * class.c (fixed_type_or_null): Don't clear NONNULL. Document
22153 calling convention.
22154 (resolves_to_fixed_type_p): Document calling convention.
22155 * rtti.c (build_x_typeid): Initialize NONNULL.
22156
22157 * cp-tree.h (build_shared_int_cst): New function.
22158 * call.c (build_over_call): Use DECL_VIRTUAL_CONTEXT, for clarity.
22159 * class.c (modify_vtable_entry): Likewise.
22160 (add_virtual_function): Split out code to generated shared
22161 INTEGER_CSTs to build_share_int_cst.
22162 (modify_all_vtables): Handle all the overridden functions here.
22163 Add overridden functions from non-primary virtual bases to the
22164 primary vtable.
22165 (finish_struct_1): Adjust call to modify_all_vtables. Add
22166 overridden functions from non-primary bases to the vtable.
22167 * tree.c (build_shared_int_cst): New function.
22168
22169 * cp-tree.h (scratchalloc): Remove.
22170 (build_scratch_list): Likewise.
22171 * call.c (convert_class_to_reference): Replace build_scratch_list
22172 and build_expr_list with build_tree_list.
22173 (add_candidate): Replace scratchalloc with expralloc. Note memory
22174 leak.
22175 (build_user_type_conversion_1): Replace build_scratch_list
22176 and build_expr_list with build_tree_list.
22177 (build_new_op): Likewise.
22178 (build_op_delete_call): Likewise.
22179 (convert_like): Likewise.
22180 * cvt.c (ocp_convert): Likewise.
22181 * decl.c (start_decl): Likewise.
22182 (start_function): Likewise.
22183 (finish_destructor_body): Likewise.
22184 (maybe_build_cleanup_1): Likewise.
22185 * decl2.c (reparse_decl_as_expr): Likewise.
22186 * init.c (perform_member_init): Likewise.
22187 (expand_cleanup_for_base): Likewise.
22188 (build_builtin_delete_call): Likewise.
22189 (build_new_1): Likewise.
22190 (build_delete): Likewise.
22191 * method.c (do_build_assign_ref): Likewise.
22192 * parse.y (already_scoped_stmt): Likewise.
22193 (nontrivial_exprlist): Likewise.
22194 (net_initializer): Likewise.
22195 (initlist): Likewise.
22196 * parse.c: Regenerated.
22197 * rtti.c (build_x_typeid): Likewise.
22198 (build_dynamic_cast_1): Likewise.
22199 * typeck.c (build_x_compound_expr): Likewise.
22200 (build_static_cast): Likewise.
22201 (build_modify_expr): Likewise.
22202
22203 * cp-tree.h (DECL_VINDEX): Add documentation.
22204 * class.c (build_vtable_entry): Likewise.
22205 (start_vtable): Add comment.
22206 (add_virtual_function): Replace pending_hard_virtuals with
22207 overridden_virtuals and pending_virtuals with new_virtuals.
22208 Replace redundant assignments with assertions.
22209 (check_for_override): Add comment.
22210 (check_bases_and_members): Replace pending_hard_virtuals with
22211 overridden_virtuals and pending_virtuals with new_virtuals.
22212 (create_vtbl_ptr): Likewise.
22213 (layout_class_type): Likewise.
22214 (finish_struct_1): Likewise. Add comments.
22215
22216 2000-01-16 Mark Mitchell <mark@codesourcery.com>
22217
22218 * class.c (finish_struct_1): Replace redundant code with
22219 assertions.
22220
22221 * cp-tree.h (flag_new_abi): Move.
22222 (flag_use_cxa_atexit): Likewise.
22223 (flag_honor_std): Likewise.
22224 (flag_rtti): Likewise.
22225 (vbase_offsets_in_vtable_p): Define.
22226 (vptrs_present_everywhere_p): Likewise.
22227 (TYPE_CONTAINS_VPTR_P): Likewise.
22228 (dfs_walk_real): Declare.
22229 * class.c (build_vbase_pointer_fields): Check
22230 vbase_offsets_in_vtable_p.
22231 (dfs_build_vbase_offset_vtbl_entries): Record the vbase indices in
22232 BINFO_VPTR_FIELD.
22233 (build_vbase_offset_vtbl_entries): Simplify.
22234 (build_vbase_offset_vtbl_entries): Adjust.
22235 (build_vbase_pointer): Add ability to look up vbase offsets in
22236 vtable.
22237 (start_vtable): New function.
22238 (add_virtual_function): Use it.
22239 (determine_primary_base): Use TYPE_CONTAINS_VPTR_P.
22240 (num_extra_vtbl_entries): Use vbase_offsets_in_vtable_p.
22241 (build_vtbl_initializer): Take the type of the complete object as
22242 input. Use it to correctly calculate vbase offsets.
22243 (dfs_finish_vtbls): Pass the complete type to
22244 build_vtbl_initializer.
22245 (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
22246 (create_vtable_ptr): Create a vtable even if there are no
22247 new virtual functions, under the new ABI.
22248 (finish_struct_1): Likewise.
22249 (get_vfield_name): Use TYPE_CONTAINS_VPTR_P.
22250 * decl.c (exapnd_static_init): Remove call to
22251 preserve_initializer.
22252 * decl2.c (mark_vtable_entries): Tweak to handle vbase offsets in
22253 vtables.
22254 * init.c (initialize_vtbl_ptrs): Initialize them in pre-order.
22255 (expand_virtual_init): Use vbase_offsets_in_vtable_p.
22256 (construct_virtual_bases): Don't initialize virtual base pointers
22257 under the new ABI.
22258 (build_aggr_init): Clean up comment.
22259 (expand_aggr_init_1): Likewise.
22260 * rtti.c (expand_class_desc): Store the virtual function table
22261 index where the vbase offset lives in the offset field.
22262 * search.c (dfs_walk_real): Make it global.
22263 (dfs_debug_mark): Use TYPE_CONTAINS_VPTR_P.
22264 * tree.c (make_binfo): Don't clear BINFO_VPTR_FIELD.
22265
22266 * tinfo.h (USItype): Make it signed under the new ABI.
22267 * tinfo.cc (convert_to_base): New function. Encapsulate base
22268 conversion logic here.
22269 (__class_type_info::do_upcast): Use it.
22270 (__class_type_info::do_dyncast): Likewise.
22271 (__class_type_info::do_find_public_subobj): Likewise.
22272
22273 * init.c (construct_virtual_bases): Don't look up the addresses of
22274 virtual bases at run-time.
22275
22276 * class.c (build_vbase_pointer): Relocate.
22277 (build_vbase_pointer_fields): Likewise.
22278 (dfs_build_vbase_offset_vtbl_entries): Likewise.
22279 (build_vbase_offset_vtbl_entries): Likewise.
22280
22281 * decl.c (init_decl_processing): Complain if -fnew-abi
22282 -fno-vtable-thunks is used.
22283
22284 * decl2.c (lang_decode_option): Don't couple flag_honor_std to
22285 flag_new_abi.
22286
22287 2000-01-15 Mark Mitchell <mark@codesourcery.com>
22288
22289 * cp-tree.h (num_extra_vtbl_entries): New function.
22290 (size_extra_vtbl_entries): Likewise.
22291 (dfs_vtable_path_unmark): Likewise.
22292 (dfs_vtable_path_unmarked_real_bases_queue_p): Likewise.
22293 (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
22294 * class.c (num_extra_vtbl_entries): New function.
22295 (size_extra_vtbl_entries): Likewise.
22296 (dfs_build_vbase_offset_vtbl_entries): New function.
22297 (build_vbase_offset_vtbl_entries): Likewise.
22298 (build_vtbl_initializer): Use it.
22299 (finish_struct_1): Adjust vtable sizes (using
22300 num_extra_vtbl_entries).
22301 * expr.c (cplus_expand_expr): Assert that the DECL_RTL for a
22302 THUNK_DECL is non-NULL before expanding it.
22303 * init.c (expand_virtual_init): Adjust the vtable pointer by
22304 size_extra_vtbl_entries before storing it.
22305 * search.c (get_shared_vase_if_not_primary): Adjust prototype.
22306 Handle TREE_LIST parameters here, not in the dfs_* functions.
22307 (dfs_unmarked_real_bases_queue_p): Adjust.
22308 (dfs_marked_real_bases_queue_p): Likewise.
22309 (dfs_vtable_path_unmarked_real_bases_queue_p): New function.
22310 (dfs_vtable_path_marked_real_bases_queue_p): New function.
22311 (dfs_vtable_path_unmark): Likewise.
22312
22313 2000-01-14 Mark Mitchell <mark@codesourcery.com>
22314
22315 * optimize.c (copy_body_r): Clear the operand three of a
22316 TARGET_EXPR when copying it.
22317
22318 2000-01-14 Martin v. Löwis <loewis@informatik.hu-berlin.de>
22319
22320 * method.c (build_decl_overload_real): Check whether we are in ::
22321 before returning __builtin_new/delete.
22322
22323 2000-01-13 Mark Mitchell <mark@codesourcery.com>
22324
22325 * pt.c (tsubst_friend_function): Improve comment.
22326 (instantiate_decl): Avoid crashing when a "nested" function is
22327 instantiated from the top level.
22328
22329 * dump.c (dqeueue_and_dump): Dump
22330 DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.
22331
22332 2000-01-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
22333
22334 * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.
22335
22336 2000-01-13 Nathan Sidwell <sidwell@codesourcery.com>
22337
22338 * g++spec.c (lang_specific_driver): Add -fnew-abi if
22339 ENABLE_NEW_GXX_ABI defined.
22340 * Make-lang.in (tinfo.o, tinfo2.o, exception.o, new.o,
22341 opnew.o, opnewnt.o, opvnew.o, opvnewnt.o, opdel.o, opdelnt.o,
22342 opvdel.o, opvdelnt.o): Use GXX_ABI_FLAG switch.
22343
22344 2000-01-12 Mark Mitchell <mark@codesourcery.com>
22345
22346 * decl.c (start_cleanup_fn): Call pushdecl.
22347
22348 * call.c (convert_class_to_reference): Fix typos.
22349 (build_conditional_expr): Handle errors gracefully.
22350 * class.c (push_nested_class): Likewise.
22351 * cp-tree.h (VAR_FUNCTION_OR_PARM_DECL_CHECK): New macro.
22352 (DECL_THIS_EXTERN): Use it.
22353 (DECL_THIS_STATIC): Likewise.
22354 * cvt.c (convert_to_void): Handle errors gracefully.
22355 (build_expr_type_conversion): Likewise.
22356 * decl.c (maybe_push_decl): Likewise.
22357 (start_decl_1): Likewise.
22358 (require_complete_types_for_parms): Likewise.
22359 * parse.y (structsp): Likewise.
22360 (base_class): Likewise.
22361 * parse.c: Regenerated.
22362 * pt.c (finish_member_template_decl): Likewise.
22363 * typeck.c (decay_conversion): Likewise.
22364
22365 * cp-tree.h (dfs_skip_vbases): New function.
22366 (find_vbase_instance): Likewise.
22367 * class.c (determine_primary_base): Allow a nearly empty base to
22368 serve as a primary base class under the new ABI.
22369 (get_class_offset_1): Rename to ...
22370 (dfs_get_class_offset): ... this. Simplify. Don't issue error
22371 messages here.
22372 (get_class_offset): Use it. Issue error messages here.
22373 (dfs_modify_vtables): Rely on dfs_unmarked_real_bases_queue_p to
22374 find the right copies of virtual bases.
22375 (fixup_vtable_deltas1): Rename to ...
22376 (dfs_fixup_vtable_deltas): ... this. Adjust to handle virtual
22377 bases as primary bases.
22378 (fixup_vtable_deltas): Remove.
22379 (override_one_vtable): Handle virtual bases as primary bases.
22380 (merge_overrides): Likewise.
22381 (finish_struct_1): Likewise.
22382 (dump_class_hierarchy): Dump primary-ness of bases as well.
22383 * search.c (mark_primary_bases): Use a pre-order traversal to
22384 handle primary virtual bases.
22385 (dfs_skip_vbases): New fiunction.
22386 (expand_upcast_fixups): Adjust to handle primary virtual bases.
22387 (fixup_virtual_upcast_offsets): Likewise.
22388 (fixup_all_virtual_upcast_offsets): Likewise.
22389 (dfs_find_vbase_instances): New function.
22390 (find_vbase_instance): Likewise.
22391
22392 2000-01-11 Mumit Khan <khan@xraylith.wisc.edu>
22393
22394 * lex.c (DIR_SEPARATOR): Delete macro.
22395
22396 2000-01-12 Gabriel Dos Reis <gdr@codesourcery.com>
22397
22398 * decl2.c (lang_decode_option): Handle automatic line wrapping
22399 option.
22400
22401 2000-01-11 Mark Mitchell <mark@codesourcery.com>
22402
22403 * friend.c (do_friend): Don't resolve scopes when processing
22404 template declarations, even if the qualifying scope doesn't
22405 involve template parameters.
22406
22407 2000-01-10 Mark Mitchell <mitchell@dumbledore.codesourcery.com>
22408
22409 * class.c (dfs_modify_vtables_queue_p): Remove.
22410 (modify_all_vtables): Use dfs_unmarked_real_bases_queue_p
22411 and dfs_marked_real_bases_queue_p instead of
22412 dfs_modify_vtables_queue_p.
22413
22414 * class.c (build_vbase_path): Simplify.
22415 (dfs_propagate_binfo_offsets): New function.
22416 (propagate_binfo_offsets): Use it.
22417 (remove_base_field): Simplify.
22418 (dfs_set_offset_for_vbases): Remove.
22419 (dfs_set_offset_for_shared_vbases): New function.
22420 (dfs_set_offset_for_unshared_vbases): Likewise.
22421 (layout_virtual_bases): Use them.
22422 (layout_basetypes): Don't call propagate_binfo_offsets.
22423 * search.c (dfs_get_vbase_types): Clone completely fresh binfos
22424 for the vbases.
22425
22426 * class.c (build_base_field): New function, split out from ...
22427 (build_base_fields): ... here. Use it. Allocate primary bases
22428 first, under the new ABI.
22429 (get_vtable_entry): Remove.
22430 (remove_base_field): New function, split out from ...
22431 (remove_base_fields): ... here. Adjust since primary bases come
22432 first under the new ABI.
22433
22434 * cp-tree.h (expand_direct_vtbls_init): Remove declaration.
22435 (initialize_vtbl_ptrs): New function.
22436 (expand_indirect_vtbls_init): Change prototype.
22437 (convert_pointer_to_vbase): Declare.
22438 * init.c (expand_direct_vtbls_init): Remove.
22439 (dfs_initialize_vtbl_ptrs): New function.
22440 (initialize_vtbl_ptrs): Likewise.
22441 (emit_base_init): Use initialize_vtbl_ptrs.
22442 * search.c (convert_pointer_to_vbase): Make it global.
22443 (expand_indirect_vtbls_init): Remove vtable initialization code.
22444 * semantics.c (setup_vtbl_ptr): Use initialize_vtbl_ptrs.
22445
22446 * class.c (dfs_finish_vtbls): New function.
22447 (finish_vtbls): Use it.
22448 (dump_class_hierarchy): New function.
22449
22450 * cp-tree.h (BINFO_PRIMARY_MARKED_P): Change definition.
22451 (BINFO_VBASE_PRIMARY_P): New macro.
22452 (BINFO_VIRTUALS): Add to documentation.
22453 (SET_BINFO_PRIMARY_MARKED_P): Remove.
22454 (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
22455 (dfs_mark_primary_bases_queue_p): Likewise.
22456 (dfs_unmarked_real_bases_queue_p): New function.
22457 (dfs_marked_real_bases_queue_p): Likewise.
22458 * search.c (dfs_mark_primary_bases): Adjust.
22459 (mark_primary_bases): Likewise.
22460 (get_shared_vbase_if_not_primary): New function.
22461 (dfs_unmarked_real_bases_queue_p): Likewise.
22462 (dfs_marked_real_bases_queue_p): Likewise.
22463 (dfs_get_pure_virtuals): Simplify.
22464 (get_pure_virtuals): Likewise.
22465
22466 2000-01-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
22467
22468 * lex.c: Include tm_p.h.
22469
22470 2000-01-07 Nathan Sidwell <sidwell@codesourcery.com>
22471
22472 * lang-specs.h (__GXX_ABI_VERSION): New preprocessor macro.
22473
22474 2000-01-06 Jason Merrill <jason@casey.cygnus.com>
22475
22476 * decl2.c (comdat_linkage): Don't set DECL_DEFER_OUTPUT.
22477 * pt.c (instantiate_decl): Defer comdat templates that might not be
22478 needed.
22479
22480 * cp-tree.h (DECL_NEEDED_P): Also true if !DECL_COMDAT.
22481 * decl2.c (finish_vtable_vardecl): Don't check !DECL_COMDAT.
22482 (finish_file): Likewise.
22483
22484 * decl2.c (import_export_class): Undo 12/14 change.
22485
22486 * error.c (dump_decl): operator new, not operatornew.
22487
22488 * class.c (field_decl_cmp): A nontype is "greater" than a type.
22489 * search.c (lookup_field_1): Look for the last field with the
22490 desired name.
22491
22492 2000-01-05 Nathan Sidwell <nathan@acm.org>
22493
22494 * decl2.c (lookup_arg_dependent): Deal with FNS not being a
22495 FUNCTION_DECL.
22496
22497 2000-01-05 Nathan Sidwell <nathan@acm.org>
22498
22499 * typeck.c (build_static_cast): Don't strip target qualifiers
22500 when casting from a class.
22501
22502 2000-01-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
22503
22504 * class.c (warn_hidden): Initialize variable `fndecl'.
22505
22506 2000-01-03 Ulrich Drepper <drepper@cygnus.com>
22507
22508 * decl.c (flag_isoc9x): New variable to be able to use code in
22509 c-common.c. For now always zero.
22510
22511 2000-01-03 Mark Mitchell <mark@codesourcery.com>
22512
22513 * cp-tree.h (CLASSTYPE_VBASECLASSES): Improve documentation.
22514 * class.c (layout_basetypes): Don't set BINFO_INHERITANCE_CHAIN
22515 or unshare_base_binfos for virtual bases here.
22516 * search.c (dfs_get_vbase_types): Do it here.
22517 (get_vbase_types): Adjust.
22518
22519 2000-01-02 Mark Mitchell <mark@codesourcery.com>
22520
22521 * cp-tree.h (CLASSTYPE_VFIELDS): Move definition.
22522 (BINFO_PRIMARY_MARKED_P): Use flag 5.
22523 (SET_BINFO_PRIMARY_MARKED_P): Likewise.
22524 (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
22525 (unmark_primary_bases): Remove declaration.
22526 (unmarkedp): Declare.
22527 (dfs_vbase_unmark): Likewise.
22528 * class.c (determine_primary_base): Return immediately if there
22529 are no base classes. Call mark_primary_bases here.
22530 (modify_all_direct_vtables): Remove.
22531 (modify_all_indirect_vtables): Remove.
22532 (dfs_modify_vtables_queue_p): New function.
22533 (dfs_modify_vtables): New function.
22534 (modify_all_vtables): Use them.
22535 (build_base_fields): Build FIELD_DECLs for primary virtual base
22536 classes.
22537 (create_vtable_ptr): Don't call determine_primary_base here.
22538 (dfs_mark_primary_bases_and_set_vbase_offsets): Rename to ...
22539 (dfs_set_offset_for_vbases): ... this.
22540 (layout_virtual_bases): Use it.
22541 (layout_class_type): Call determine_primary_base here.
22542 * search.c (unmarkedp): Make it global.
22543 (shared_marked_p): Simplify.
22544 (shared_unmarked_p): Likewise.
22545 (dfs_primary_bases_queue_p): Remove.
22546 (dfs_unmark_primary_bases): Likewise.
22547 (unmark_primary_bases): Likewise.
22548 (mark_primary_bases): Simplify.
22549 (get_pure_virtuals): Don't call mark_primary_bases here.
22550 (dfs_vbase_unmark): New function.
22551 (get_vbase_types): Simplify.
22552
22553 * class.c (struct base_info): Remove.
22554 (determine_primary_base): Take has_virtual_p rather than a
22555 base_info as input. Don't calculate max_has_virtual.
22556 (finish_struct_bits): Remove max_has_virtual argument.
22557 (create_vtable_ptr): Remove max_has_virtual_p argument.
22558 (layout_virtual_bases): Remove max argument.
22559 (layout_basetypes): Likewise.
22560 (layout_class_type): Remove max_has_virtual_p argument.
22561 (finish_struct_1): Remove max_has_virtual.
22562
22563 * cp-tree.h (dfs_mark_primary_bases_queue_p): New function.
22564 (layout_basetypes): Remove.
22565 * class.c (propagate_binfo_offsets): Moved here from tree.c.
22566 Update to handle primary virtual bases.
22567 (remove_base_fields): New function, split out from
22568 layout_basetypes.
22569 (dfs_mark_primary_bases_and_set_vbase_offsets): New function.
22570 (layout_virtual_bases): New function, split out from
22571 layout_basetypes. Update to handle primary virtual bases.
22572 (layout_basetypes): Moved here from tree.c. Use
22573 remove_base_fields and layout_virtual_bases.
22574 * search.c (dfs_mark_primary_bases_queue_p): New function.
22575 (mark_primary_bases): Use it.
22576 * tree.c (CEIL): Remove.
22577 (propagate_binfo_offsets): Remove.
22578 (layout_basetypes): Remove.
22579
22580 2000-01-01 Mark Mitchell <mark@codesourcery.com>
22581
22582 * cp-tree.h (CLASSTYPE_N_BASECLASSES): Use BINFO_N_BASETYPES.
22583 (BINFO_PRIMARY_MARKED_P): New macro.
22584 (SET_BINFO_PRIMARY_MARKED_P): Likewise.
22585 (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
22586 (mark_primary_bases): New function.
22587 (unmark_primary_bases): Likewise.
22588 * search.c (get_abstract_virtuals_1): Remove.
22589 (dfs_mark_primary_bases): New function.
22590 (mark_primary_bases): Likewise.
22591 (dfs_unmark_primary_bases): Likewise.
22592 (unmark_primary_bases): Likewise.
22593 (dfs_get_pure_virtuals): Likewise.
22594
22595 2000-01-01 Mark Mitchell <mark@codesourcery.com>
22596
22597 * cp-tree.h (skip_rtti_stuff): Adjust prototype.
22598 * class.c (skip_rtti_stuff): Reorganize parameters and return value.
22599 (modify_one_vtable): Adjust.
22600 (fixup_vtable_deltas1): Likewise.
22601 (override_one_vtable): Likewise.
22602 * search.c (get_abstract_virtuals_1): Likewise.
22603 (get_pure_virtuals): Likewise.
22604 (expand_upcast_fixups): Likewise.
22605 * tree.c (debug_binfo): Likewise.
22606
22607 * class.c (build_vtable): Don't return a value. Don't rebuild
22608 vtables for bases that have already been handled.
22609 (prepare_fresh_vtable): Don't rebuild vtables for bases that have
22610 already been handled.
22611 (modify_one_vtable): Adjust accordingly.
22612 (fixup_vtable_deltas1): Likewise.
22613 (finish_struct_1): Likewise.
22614
22615 2000-01-01 Martin v. Löwis <loewis@informatik.hu-berlin.de>
22616
22617 * call.c (build_new_method_call): Also check destructors.