]> gcc.gnu.org Git - gcc.git/blob - gcc/cp/ChangeLog
builtins.c, [...]: Avoid "`" as left quote, using "'" or %q, %< and %> as appropriate.
[gcc.git] / gcc / cp / ChangeLog
1 2004-11-09 Joseph S. Myers <joseph@codesourcery.com>
2
3 * call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
4 pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
5 quoting in diagnostics.
6 * parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
7 quoting in printf format.
8 * decl.c (duplicate_decls, start_decl): Use %qD instead of
9 unquoted %D.
10
11 2004-11-08 Kazu Hirata <kazu@cs.umass.edu>
12
13 * class.c, decl.c, lex.c, name-lookup.c, parser.c, pt.c,
14 search.c, typeck2.c: Fix comment formatting.
15
16 2004-11-04 Ulrich Weigand <uweigand@de.ibm.com>
17
18 PR tree-optimization/18184
19 * cp-objcp-common.c (cxx_types_compatible_p): Do not treat pointers
20 of different modes or alias-all flags as equivalent.
21 * typeck.c (comptypes): Likewise.
22
23 2004-11-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
24
25 DR 49, 100
26 * cp-tree.h (TYPE_REF_OBJ_P): New macro.
27 (TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P,
28 TYPE_REFFN_P): Document.
29 (fold_decl_constant_value): New prototype.
30 * pt.c (convert_nontype_argument_function): Rewrite and extract
31 parts into...
32 (fold_decl_constant_value, convert_nontype_argument_function): New.
33 (lookup_template_class): Add comment about useless double call.
34 * mangle.c (write_expression): Strip conversions before lowering
35 pointer to members.
36 * cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow
37 enum to enum conversion.
38
39 2004-11-02 Mark Mitchell <mark@codesourcery.com>
40
41 PR c++/18124
42 * parser.c (cp_parser_type_parameter): Robustify.
43
44 PR c++/18155
45 * parser.c (cp_parser_single_declaration): Disallow template
46 typedefs.
47
48 PR c++/18177
49 * typeck.c (build_const_cast): Use error_operand_p.
50
51 2004-11-02 Ziemowit Laski <zlaski@apple.com>
52
53 * cp-lang.c (cxx_types_compatible_p): Remove prototype and definition.
54 (LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h.
55 * cp-objcp-common.c (cxx_types_compatible_p): Moved definition here
56 from cp-lang.c.
57 * cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here
58 from cp-lang.c.
59 (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c.
60
61 2004-11-01 Nathan Sidwell <nathan@codesourcery.com>
62
63 PR c++/18064
64 * search.c (check_final_overrider): Deprecate gnu covariant extension.
65
66 2004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
67
68 Convert diagnostics to use quoting flag q 9/n
69 * typeck.c (build_x_unary_op, convert_member_func_to_ptr,
70 get_delta_difference): Use new quotation style.
71 * repo.c (reopen_repo_file_for_write): Likewise.
72 * pt.c (do_type_instantiation): Likewise.
73 * parser.c (cp_parser_diagnose_invalid_type_name):
74 * name-lookup.c (push_overloaded_decl, set_decl_namespace):
75 * error.c (cp_print_error_function,
76 print_instantiation_full_context): Likewise.
77 * decl.c (define_label, grok_reference_init,
78 maybe_deduce_size_from_array_init, revert_static_member_fn):
79 * decl2.c (check_classfn): Likewise.
80 * class.c (add_method, check_field_decls, layout_class_type,
81 resolve_address_of_overloaded_function): Likewise.
82 * call.c (build_x_va_arg, build_over_call): Likewise.
83
84 2004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
85
86 Convert diagnostics to use quoting flag q 8/n
87 * cvt.c (cp_convert_to_pointer, warn_ref_binding,
88 convert_to_reference, ocp_convert, convert_to_void
89 cp_convert_to_pointer): Use new quotation style.
90
91 2004-10-31 Mark Mitchell <mark@codesourcery.com>
92
93 PR c++/15172
94 * typeck2.c (store_init_value): Use split_nonconstant_init even
95 for types that require construction.
96
97 1004-10-28 Matt Austern <austern@apple.com>
98
99 PR c++/17542
100 * cp-tree.h (class_key_or_enum_as_string): Declare.
101 * error.c (class_key_or_enum): Rename to class_key_or_enum_as_string
102 and remove static qualifier.
103 * decl.c (shadow_tag): Warn about ignored attributes in class/struct/
104 union/enum declaration.
105
106 2004-10-29 Kazu Hirata <kazu@cs.umass.edu>
107
108 * pt.c: Fix a comment typo.
109
110 2004-10-28 Nathan Sidwell <nathan@codesourcery.com>
111
112 * typeck.c (composite_pointer_type): Remove comment about DR 195.
113 (build_reinterpret_cast_1): Revert DR195 patch. Only emit a
114 warning when being pedantic.
115 (build_reinterpet_cast, build_c_cast): Adjust.
116
117 2004-10-29 Mark Mitchell <mark@codesourcery.com>
118
119 PR c++/17695
120 * decl.c (grokdeclarator): Mark TYPE_DECLs as abstract when they
121 appear in a constructor/destructor that will be cloned.
122
123 1004-10-28 Matt Austern <austern@apple.com>
124
125 PR c++/14124
126 * decl.c (finish_enum): Handle packed attribute.
127 * parser.c (cp_parser_enum_specifier): Process trailing attributes.
128
129 2004-10-28 Mark Mitchell <mark@codesourcery.com>
130
131 PR c++/17132
132 * pt.c (instantiate_class_template): Increment
133 processing_template_decl when substituting into a member class
134 template.
135
136 2004-10-27 Mark Mitchell <mark@codesourcery.com>
137
138 PR c++/17435
139 * call.c (convert_like_real): Fix formatting.
140 (initialize_reference): When binding a temporary to a base class,
141 ensure that the nominal copy made is to the derived class, not the
142 base class.
143
144 PR c++/18140
145 * parser.c (cp_parser_next_token_ends_template_argument_p): Do not
146 include ">>".
147
148 2004-10-27 Andrew Pinski <pinskia@physics.uc.edu>
149
150 * decl.c (bad_specifiers): Move the q after the %.
151
152 2004-10-27 Andrew Pinski <pinskia@physics.uc.edu>
153
154 * parser.c (cp_parser_diagnose_invalid_type_name): Move the q after
155 the %.
156
157 2004-10-26 Mark Mitchell <mark@codesourcery.com>
158
159 * name-lookup.c (do_namespace_alias): Use FROB_CONTEXT.
160 * search.c (current_scope): Fix prototype.
161
162 PR c++/18093
163 * search.c (current_scope): Return the innermost non-block scope,
164 not the innermost non-block, non-namespace scope.
165 (at_namespace_scope_p): Adjust accordingly.
166 (dfs_accessible_post): Do not pass namespaces to is_friend.
167 (dfs_walk_once_accessible_r): Likewise.
168 * decl.c (grokvardecl): Adjust call to current_scope.
169 (build_enumerator): Likewise.
170 * parser.c (cp_parser_using_declaration): Likewise.
171 (cp_parser_direct_declarator): Use at_namespace_scope_p instead of
172 current_scope.
173 (cp_parser_class_head): Adjust call to current_scope.
174 * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the
175 alias.
176
177 PR c++/18020
178 * pt.c (tusbst_copy_and_build): Resolve enumeration constants to
179 their underlying values.
180
181 PR c++/18161
182 * typeck.c (build_binary_op): Honor build_type, even when in a
183 template.
184
185 2004-10-26 Nathan Sidwell <nathan@codesourcery.com>
186
187 * parser.c (cp_lexer_get_preprocessor_token): Remove unneeded
188 padding token checking.
189
190 2004-10-25 Andrew Pinski <pinskia@physics.uc.edu>
191
192 PR c++/18121
193 * decl.c (grokdeclarator) <case cdk_array>: Remove the call
194 layout_type as it is already done by create_array_type_for_decl.
195
196 2004-10-22 Nathan Sidwell <nathan@codesourcery.com>
197
198 PR c++/18095
199 * parser.c (eof_token): Make const, correctly initialize rid and
200 location fields.
201 (struct cp_lexer): Replace buffer_end pointer with buffer_length
202 count. Adjust.
203 (cp_lexer_new_main): Directly grow lexer's buffer here. Don't
204 zero it out.
205 (cp_lexer_new_from_tokens): Adjust.
206 (cp_lexer_grow_buffer): Remove.
207 (cp_lexer_peek_nth_token, cp_lexer_consume_token,
208 cp_lexer_purge_token): Add const casts.
209
210 2004-10-21 Mark Mitchell <mark@codesourcery.com>
211
212 PR c++/18073
213 PR c++/10841
214 * cp-tree.h (convert_to_base): Change prototype.
215 (build_ptrmemfunc): Likewise.
216 (convert_ptrmem): New function.
217 * call.c (struct conversion): Adjust documentation for base_p.
218 (standard_conversion): Set base_p for ck_pmem conversions as
219 appropriate.
220 (convert_like_real): Use convert_to_base for ck_pmem and ck_ptr
221 conversions.
222 * class.c (convert_to_base): Handle both pointers and objects.
223 Add nonnull parameter.
224 (build_vfield_ref): Adjust call to convert_to_base.
225 * cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc.
226 (convert_force): Likewise.
227 * typeck.c (build_unary_op): Likewise.
228 (convert_ptrmem): New function.
229 (build_static_cast_1): Use it.
230 (build_reinterpret_cast): Allow conversions to vector types.
231 (get_delta_difference): Add c_cast_p parameter.
232 (build_ptrmemfunc): Likewise. Adjust calls to
233 get_delta_difference.
234
235 2004-10-21 Andrew Pinski <pinskia@physics.uc.edu>
236
237 PR c++/13560
238 * error.c (cp_error_at): Output the context as it might be
239 different file as the other location.
240
241 2004-10-21 Kazu Hirata <kazu@cs.umass.edu>
242
243 * typeck.c: Fix a comment typo.
244
245 2004-10-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
246
247 PR c++/13495
248 * decl.c (make_unbound_class_template): Add PARM_LIST parameter.
249 * cp-tree.h (make_unbound_class_template): Adjust prototype.
250 * parser.c (cp_parser_lookup_name): Adjust call to
251 make_unbound_class_template.
252 (cp_parser_single_declaration): Handle member class of class
253 template as template friend parsing correctly.
254 * friend.c (is_friend): Call is_specialization_of_friend for
255 template friend class.
256 (make_friend_class): Handle member class of class template as
257 template friend.
258 * pt.c (is_specialization_of_friend): Likewise.
259 (instantiate_class_template): Likewise.
260 (tsubst): Adjust call to make_unbound_class_template.
261
262 2004-10-20 Nathan Sidwell <nathan@codesourcery.com>
263
264 * typeck.c (composite_pointer_type): Add comment about DR 195
265 (build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter.
266 Allow function pointer conversions that DR195 suggests.
267 (build_reinterpret_cast, build_c_cast): Update
268 build_reinterpret_cast_1 calls.
269
270 2004-10-20 Kazu Hirata <kazu@cs.umass.edu>
271
272 * call.c, typeck.c: Fix comment typos.
273
274 2004-10-20 Nathan Sidwell <nathan@codesourcery.com>
275
276 * parser.c (cp_token_position): New typedef. Define VEC thereof.
277 (struct cp_lexer): Allow buffer and buffer_end to be NULL. Make
278 next_token and last_token cp_token_position. Make saved_tokens a
279 VEC(cp_token_position).
280 (eof_token): New static variable.
281 (CP_SAVED_TOKENS_SIZE): Rename to ...
282 (CP_SAVED_TOKEN_STACK): ... here.
283 (cp_lexer_new_main): Adjust main lexer creation and buffer
284 filling.
285 (cp_lexer_new_from_tokens): Do not copy the tokens, merely point
286 to the parent buffer. Do not append eof token.
287 (cp_lexer_destroy): Only free buffer if non-NULL. Free token
288 stack.
289 (cp_lexer_next_token, cp_lexer_prev_token): Remove.
290 (cp_lexer_token_position, cp_lexer_token_at): New.
291 (cp_lexer_saving_tokens): Adjust. Make inline.
292 (cp_lexer_advance_token, cp_lexer_token_difference): Remove.
293 (cp_lexer_peek_token_emit_debug_info): Fold into ...
294 (cp_lexer_peek_token): ... here.
295 (cp_lexer_peek_nth_token): Don't peek past EOF.
296 (cp_lexer_consume_token): Set next_token to eof_token, if reaching
297 EOF.
298 (cp_lexer_purge_token): Adjust eof setting.
299 (cp_lexer_purge_tokens_after): Likewise.
300 (cp_lexer_save_tokens): Push next_token directly.
301 (cp_lexer_commit_tokens): Adjust.
302 (cp_lexer_rollback_tokens): Pop next_token directly.
303 (cp_parser_check_for_invalid_template_id): Adjust token purging.
304 (cp_parser_translation_unit): Do not consume the EOF.
305 (cp_parser_nested_name_specifier_opt): Adjust token purging.
306 (cp_parser_template_id, cp_parser_template_name): Likewise.
307
308 2004-10-19 Mark Mitchell <mark@codesourcery.com>
309
310 PR c++/14035
311 * call.c (struct conversion): Add base_p.
312 (convert_like): Add c_cast_p argument.
313 (convert_like_with_conversion): Likewise.
314 (build_conv): Clear base_p.
315 (standard_conversion): Set it, for derived-to-base conversions.
316 (convert_like_real): Add c_cast_p parameter. Handle pointer
317 conversions directly rather than relying on ocp_convert.
318 (perform_direct_initialization_if_possible): Add c_cast_p
319 parameter.
320 * cp-tree.h (perform_direct_initialization_if_possible): Change
321 prototype.
322 (convert_member_func_to_ptr): New function.
323 * typeck.c (check_for_casting_away_constness): Add diag_fn
324 parameter.
325 (build_static_cast_1): New function, split out from ...
326 (build_static_cast): ... here. Use build_static_cast_1.
327 (build_reinterpret_cast_1): New function, split out from ...
328 (build_reinterpret_cast): ... here. Use build_reinterpret_cast_1.
329 (build_const_cast_1): New function, split out from ...
330 (build_const_cast): ... here. Use build_const_cast_1.
331 (build_c_cast): Rewrite to use build_const_cast_1,
332 build_static_cast_1, and build_reinterpret_cast_1.
333 (convert_member_func_to_ptr): New function.
334
335 2004-10-19 Paolo Bonzini <bonzini@gnu.org>
336
337 PR c++/18047
338 * parser.c (enum cp_parser_prec): Give relational expressions
339 a higher precedence than equality expressions.
340
341 2004-10-15 Nathan Sidwell <nathan@codesourcery.com>
342
343 * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call.
344 (ACCESSIBLY_UNIQUELY_DERIVED_P): Remove.
345 (PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call.
346 (enum base_access): Reorganize.
347 (accessible_base_p, accessible_p): Add consider_local_p parameter.
348 * call.c (standard_conversion): Update comment about
349 DERIVED_FROM_P.
350 (enforce_access): Adjust accessible_p call.
351 (build_over_call): Adjust accessible_base_p call.
352 * class.c (convert_to_base): Adjust lookup_base call.
353 (build_vtbl_ref_1): Likewise.
354 (warn_about_ambiguous_bases): Likewise. Add early exit.
355 * cvt.c (convert_to_pointer_force) Adjust lookup_base call.
356 * search.c (accessible_base_p): Add consider_local_p parameter.
357 (lookup_base): Pass consider_local_p to accessible_base_p call.
358 (friend_accessible_p): Check whether scope is a class member.
359 Remove unnecessary class template check.
360 (accessible_p): Add consider_local_p parameter. Use it.
361 (adjust_result_of_qualified_name_lookup): Adjust lookup_base call.
362 * tree.c (maybe_dummy_object): Likewise.
363 * typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P.
364 (build_class_member_access_expr): Adjust lookup_base call.
365 * typeck2.c (binfo_or_else): Likewise.
366 * rtti.c (build_dynamic_cast_1): Access can consider friendship
367 and current scope.
368
369 2004-10-17 Giovanni Bajo <giovannibajo@gcc.gnu.org>
370
371 PR c++/17743
372 * decl2.c (grokfield): Apply attributes also to TYPE_DECLs.
373
374 2004-10-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
375
376 PR c++/10479
377 * parser.c (cp_parser_parenthesized_expression_list): Fold
378 non-dependent expressions in attribute lists.
379
380 2004-10-15 Mark Mitchell <mark@codesourcery.com>
381
382 PR c++/17042
383 * decl.c (declare_global_var): Use the return value from pushdecl.
384
385 PR c++/14667
386 * parser.c (cp_parser_simple_declaration): Do not diagnose invalid
387 type names if we have already found a valid type.
388 (cp_parser_member_declaration): Likewise.
389
390 PR c++/17916
391 * parser.c (cp_parser_member_specification_opt): Handle
392 CPP_PRAGMA.
393
394 2004-10-15 Kazu Hirata <kazu@cs.umass.edu>
395
396 * dump.c, g++spec.c, repo.c: Update copyright.
397
398 2004-10-15 Kazu Hirata <kazu@cs.umass.edu>
399
400 * decl.c: Fix a comment typo.
401
402 2004-10-13 Andrew Pinski <pinskia@physics.uc.edu>
403
404 PR c++/16301
405 * name-lookup.c (parse_using_directive): If we have a
406 error_mark_node, do not set the decl namespace associations
407 on it.
408
409 2004-10-14 Mark Mitchell <mark@codesourcery.com>
410
411 PR c++/17976
412 * decl.c (cp_finish_decl): Do not call expand_static_init more
413 than once for a single variable.
414
415 2004-10-14 Matt Austern <austern@apple.com>
416
417 * Make-lang.in (pt.o): depends on pointer-set.h
418 * cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now.
419 * pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t
420 (for_each_template_parm): Convert from htab_t to pointer_set_t.
421 * tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now.
422
423 2004-10-13 Andrew Pinski <pinskia@physics.uc.edu>
424
425 PR c++/17661
426 * semantics.c (finish_for_expr): Convert expression to void
427 so that we don't create temporaries for a?b:c.
428
429 2004-10-13 Kazu Hirata <kazu@cs.umass.edu>
430
431 * search.c: Fix a comment typo.
432
433 2004-10-12 Nathan Sidwell <nathan@codesourcery.com>
434
435 * class.c (dfs_modify_vtables): Simplify condition. Return
436 dfs_skip_bases as appropriate.
437 (modify_all_vtables): Walk in pre-order.
438 * search.c (dfs_walk_all, dfs_walk_once_r,
439 dfs_walk_once_accessible_r): Assert post order function never
440 returns dfs_skip_bases.
441
442 * search.c (struct lookup_base_data_s): New.
443 (lookup_base_r): Replace with ...
444 (dfs_lookup_base): ... this.
445 (lookup_base): Use dfs_walk_all.
446
447 2004-10-12 Kazu Hirata <kazu@cs.umass.edu>
448
449 * search.c: Fix comment typos.
450
451 2004-10-11 Mark Mitchell <mark@codesourcery.com>
452
453 PR c++/15786
454 * parser.c (cp_parser_declarator): Add member_p parameter.
455 (cp_parser_condition): Adjust calls to cp_parser_declarator.
456 (cp_parser_explicit_instantiation): Likewise.
457 (cp_parser_init_declarator): Likewise.
458 (cp_parser_direct_declarator): Add member_p parameter. Do not
459 parse tentatively when parsing the parameters to a member.
460 (cp_parser_type_id): Adjust calls to cp_parser_declarator.
461 (cp_parser_parameter_declaration): Likewise.
462 (cp_parser_member_declaration): Likewise.
463 (cp_parser_exception_declaration): Likewise.
464
465 PR c++/17936
466 * cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment.
467 * pt.c (optimize_specialization_lookup_p): Do not optimize lookups
468 for members of partial or explicit specializations.
469
470 PR c++/17929
471 * decl2.c (finish_anon_union): Robustify.
472
473 2004-10-11 Nathan Sidwell <nathan@codesourcery.com>
474
475 * cp-tree.h (get_dynamic_cast_base_type): Rename to ...
476 (dcast_base_hint): ... here.
477 * rtti.c (build_dynamic_cast_1): Use dcast_base_hint.
478 * search.c (struct dcast_data_s): New.
479 (dynamic_cast_base_recurse): Remove. Replace with ...
480 (dfs_dcast_hint_pre, dfs_dcast_base_post): ... these. New.
481 (get_dynamic_cast_base_type): Rename to ...
482 (dcast_base_hint): ... here. Use dfs_walk_once_accessible.
483 (accessible_r): Remove.
484 (dfs_accessible_post): New, broken out of accessible_r.
485 (accessible_p): Use dfs_walk_once_accessible.
486 (dfs_walk_once_accessible_r): New. From accessible_r.
487 (dfs_walk_once_accessible): New. From acessible_p.
488
489 * cp-tree.h (SAME_BINFO_TYPE_P): New.
490 * class.c (build_base_path): Use SAME_BINFO_TYPE_P to compare
491 binfo types.
492 (convert_to_base_statically, determine_primary_bases,
493 update_vtable_entry_for_fn, dfs_modify_vtables, build_vtt_inits,
494 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
495 accumulate_vtbl_inits, dfs_accumulate_vtbl_inits,
496 build_vtbl_initializer, add_vcall_offset_vtbl_entries_1): Likewise.
497 * init.c (expand_member_init): Likewise.
498 * search.c (lookup_base_r, dynamic_cast_base_recurse,
499 binfo_via_virtual, copied_binfo, binfo_for_vbase,
500 original_binfo): Likewise.
501 * tree.c (copy_binfo): Likewise.
502
503 2004-10-11 Kazu Hirata <kazu@cs.umass.edu>
504
505 * semantics.c: Fix comment typos.
506
507 2004-10-10 Andrew Pinski <pinskia@physics.uc.edu>
508
509 PR c++/17554
510 part of c++/17657
511 middle-end/17703
512 * semantics.c (maybe_cleanup_point_expr): Call
513 fold_build_cleanup_point_expr.
514 (maybe_cleanup_point_expr_void): New function.
515 (add_decl_expr): Call maybe_cleanup_point_expr_void.
516 (finish_expr_stmt): Likewise.
517 (finish_return_stmt): Likewise.
518 (finish_for_expr): Likewise.
519 (finish_asm_stmt): Likewise.
520 * typeck.c (condition_conversion): Call
521 fold_build_cleanup_point_expr.
522
523 2004-10-10 Andrew Pinski <pinskia@physics.uc.edu>
524
525 PR c++/17907
526 * semantics.c (add_decl_expr): If the decl has a size which
527 has side effects then the decl expression needs a cleanup point.
528
529 2004-10-10 Mark Mitchell <mark@codesourcery.com>
530
531 PR c++/17393
532 * decl.c (grokdeclarator): Robustify error-recovery on invalid
533 declarations.
534
535 2004-10-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
536
537 Convert diagnostics to use quoting flag q 7/n
538 * typeck.c (composite_pointer_type_r, composite_pointer_type,
539 cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr,
540 string_conv_p, build_class_member_access_expr,
541 build_class_member_access_expr, lookup_destructor,
542 finish_class_member_access_expr, build_indirect_ref,
543 get_member_function_from_ptrfunc, build_function_call,
544 convert_arguments, build_binary_op, pointer_diff, build_unary_op,
545 check_for_casting_away_constness, build_static_cast,
546 build_reinterpret_cast, build_const_cast, build_c_cast,
547 build_modify_expr, get_delta_difference, build_ptrmemfunc,
548 dubious_conversion_warnings, convert_for_assignment,
549 convert_for_initialization,
550 maybe_warn_about_returning_address_of_local, check_return_expr):
551 Use quoting marks.
552
553 * typeck2.c (error_not_base_type, readonly_error,
554 abstract_virtuals_error, cxx_incomplete_type_diagnostic,
555 store_init_value, digest_init, build_x_arrow,
556 build_m_component_ref, require_complete_eh_spec_types): Likewise.
557
558 * tree.c (cp_build_qualified_type_real,
559 handle_java_interface_attribute, handle_init_priority_attribute):
560 Likewise.
561
562 * semantics.c (finish_asm_stmt, finish_non_static_data_member,
563 finish_pseudo_destructor_expr,
564 check_template_template_default_arg, begin_class_definition,
565 finish_base_specifier, qualified_name_lookup_error,
566 finish_id_expression, finish_typeof): Likewise.
567
568 * search.c (lookup_base, check_final_overrider,
569 look_for_overrides_r): Likewise.
570
571 * rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise.
572
573 2004-10-09 Mark Mitchell <mark@codesourcery.com>
574
575 PR c++/17867
576 * error.c (dump_expr): Correct handling of AGGR_INIT_EXPRs using a
577 constructor.
578
579 PR c++/17670
580 * init.c (build_new): Correct comments.
581 * parser.c (cp_parser_new_expression): Use NULL_TREE for nelts in
582 the non-array case.
583
584 PR c++/17821
585 * parser.c (cp_parser_postfix_dot_deref_expression): If the
586 pseduo-destructor-name production does not work, fall back to the
587 ordinary production.
588
589 PR c++/17826
590 * tree.c (cp_tree_equal): Handle a BASELINK.
591
592 PR c++/17524
593 * cp-tree.h (check_var_type): New function.
594 * decl.c (check_var_type): New function, split out from ...
595 (grokdeclarator): ... here.
596 * pt.c (tsubst_decl): Use check_var_type.
597
598 PR c++/17685
599 * decl.c (grokdeclarator): Disallow declarations of operators as
600 non-functions.
601
602 2004-10-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
603
604 PR c++/17868
605 * error.c (dump_expr): Add missing case for RDIV_EXPR.
606
607 2004-10-08 Kazu Hirata <kazu@cs.umass.edu>
608
609 * pt.c, search.c: Fix comment typos.
610
611 2004-10-08 Nathan Sidwell <nathan@codesourcery.com>
612
613 * cp-tree.h (dfs_walk, dfs_walk_real, dfs_unmark, markedp,
614 unmarkedp): Remove.
615 (dfs_skip_bases, dfs_walk_all, dfs_walk_once): New.
616 * class.c (struct find_final_overrider_data): Remove most_derived,
617 vpath_list and vpath fields. Add path field.
618 (dfs_find_final_ocerrider_1): Add DEPTH parameter. Adjust.
619 (dfs_find_final_overrider): Rename to ...
620 (dfs_find_final_overrider_pre): ... here. Adjust.
621 (dfs_find_final_overrider_post): Adjust.
622 (dfs_find_final_overrider_q): Fold into
623 dfs_find_final_overrider_pre.
624 (find_final_overrider): Adjust dfs searching.
625 (dfs_modify_vtables): Don't mark binfo here.
626 (modify_all_vtables): Use dfs_walk_once.
627 (build_vtt_inits): Likwise. Use dfs_walk_all.
628 (dfs_build_secondary_vptr_vtt_inits): Don't mark binfo here.
629 Return dfs_skip_bases as appropriate.
630 (dfs_fixup_binfo_vtbls): Return dfs_skip_bases as appropriate.
631 * init.c (dfs_initialized_vtbl_ptrs): Return dfs_skip_bases as
632 appropriate. Don't mark binfo here.
633 (initialize_vtbl_ptrs): Use dfs_walk_once.
634 * search.c (struct vbase_info): Remove unused struct.
635 (access_in_type): Use dfs_walk_once.
636 (dfs_access_in_type): Don't mark binfo here.
637 (dfs_accessible_queue_p, dfs_accessible_p) Remove.
638 Fold into ...
639 (accessible_r): ... here. New. Specialize dfs_walk_once.
640 (accessible_p): Use accessible_r.
641 (lookup_field_queue_p): Remove. Fold into ...
642 (lookup_field_r): ... here. Adjust.
643 (lookup_member): Use dfs_walk_all.
644 (dfs_walk_real, dfs_walk): Replace with ...
645 (dfs_walk_all, dfs_walk_once): ... these.
646 (dfs_walk_once_r, dfs_unmark_r): Workers for dfs_walk_once.
647 (dfs_unmark, unmarkedp, markedp): Remove.
648 (dfs_get_pure_virtuals): Don't mark binfo here.
649 (get_pure_virtuals): Use dfs_walk_once.
650 (dfs_debug_unmarked_p): Remove. Fold into ...
651 (dfs_debug_mark): ... here.
652 (note_debug_info_needed): Use dfs_walk_all.
653
654 2004-10-07 Andrew Pinski <pinskia@physics.uc.edu>
655
656 * pt.c (tsubst_expr) <case ASM_EXPR>: Look passed the
657 CLEANUP_POINT_EXPR to get the asm expression.
658
659 2004-10-07 Mark Mitchell <mark@codesourcery.com>
660
661 * cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag.
662 (DECL_MEMBER_TEMPLATE_P): New macro.
663 (is_member_template): Remove.
664 (class_method_index_for_fn): New function.
665 * pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P.
666 * class.c (finish_struct_methods): Remove out-of-date comment.
667 * decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P.
668 * decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and
669 class_method_index_for_fn.
670 * pt.c (is_member_template): Remove.
671 (is_member_template_class): Likewise.
672 (optimize_specialization_lookup_p): New function.
673 (retrieve_specialization): Optimize lookups for members that are
674 not member templates.
675 (register_specialization): Adjust accordingly.
676 (build_template_decl): Add member_template_p parameter. Set
677 DECL_MEMBER_TEMPLATE_P.
678 (process_partial_specialization): Adjust call to
679 retrieve_specialization.
680 (push_template_decl_real): Determine whether the template is a
681 member template.
682 (lookup_template_class): Use retrieve_specialization.
683 (tsubst_decl): Adjust call to retrieve_specialization.
684 (tsubst_exception_specification): New function.
685 (tsubst): Use it.
686 (tsubst_copy): Use DECL_MEMBER_TEMPLATE_P.
687 (instantiate_template): Adjust call to retrieve_specialization.
688 (regenerate_decl_from_template): Do not actually generate a new
689 DECL.
690 (instantiate_decl): Adjust call to retrieve_specialization.
691 (class_method_index_for_fn): New method.
692
693 2004-10-07 Andrew Pinski <pinskia@physics.uc.edu>
694
695 * parser.c (cp_parser_asm_definition): Look passed the
696 CLEANUP_POINT_EXPR to get the asm expression.
697
698 2004-10-06 Andrew Pinski <pinskia@physics.uc.edu>
699
700 PR c++/17368
701 * semantics.c (finish_asm_stmt): Asm expressions need cleanup
702 also.
703
704 2004-10-05 Gabriel Dos Reis <gdr@integrable-solutions.net>
705
706 Convert diagnostics to use quoting flag q 6/n
707 * pt.c (finish_member_template_decl, check_specialization_scope,
708 maybe_process_partial_specialization, determine_specialization,
709 check_explicit_specialization, maybe_check_template_type,
710 process_partial_specialization, check_default_tmpl_args,
711 push_template_decl_real, redeclare_class_template,
712 convert_nontype_argument, coerce_template_parms,
713 lookup_template_class, push_tinst_level,
714 instantiate_class_template, tsubst_arg_types,
715 tsubst_function_type, tsubst, tsubst_qualified_id,
716 tsubst_copy_and_build, check_instantiated_args,
717 do_decl_instantiation, do_type_instantiation,
718 invalid_nontype_parm_type_p, check_specialization_namespace,
719 convert_template_argument, determine_specialization,
720 check_template_shadow, tsubst_decl
721 instantiate_pending_templates): Use quoting marks.
722
723 2004-10-05 Nathan Sidwell <nathan@codesourcery.com>
724
725 PR c++/17829
726 * parser.c (cp_parser_postfix_expression): Inhibit Koenig when
727 unqualified lookup finds a member function.
728
729 2004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
730
731 Convert diagnostics to use quoting flag q 5/n
732 * parser.c (cp_parser_name_lookup_error,
733 cp_parser_diagnose_invalid_type_name,
734 cp_parser_primary_expression, cp_parser_unqualified_id,
735 cp_parser_nested_name_specifier_opt, cp_parser_labeled_statement,
736 cp_parser_jump_statement, cp_parser_simple_declaration,
737 cp_parser_decl_specifier_seq, cp_parser_mem_initializer_id,
738 cp_parser_type_parameter, cp_parser_template_id,
739 cp_parser_template_name, cp_parser_direct_declarator,
740 cp_parser_parameter_declaration_list, cp_parser_class_head,
741 cp_parser_base_specifier, cp_parser_lookup_name,
742 cp_parser_late_parsing_default_args,
743 cp_parser_optional_template_keyword
744 cp_parser_elaborated_type_specifier, cp_parser_check_class_key,
745 cp_parser_check_access_in_redeclaration): Use quoting marks.
746
747 * name-lookup.c (supplement_binding, pushdecl,
748 check_for_out_of_scope_variable, validate_nonmember_using_decl,
749 do_nonmember_using_decl, lookup_tag, set_decl_namespace,
750 push_namespace, do_namespace_alias, do_using_directive,
751 ambiguous_decl, lookup_namespace_name, add_function): Likewise.
752
753 * method.c (use_thunk): Likewise.
754
755 * lex.c (unqualified_name_lookup_error,
756 unqualified_fn_lookup_error): Likewise.
757
758 2004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
759
760 Convert diagnostics to use quoting flag q 4/n
761 * except.c (decl_is_java_type, build_throw,
762 is_admissible_throw_operand, check_handlers_1, check_handlers):
763 Use quoting formats.
764 * friend.c (add_friend, make_friend_class, do_friend): Likewise.
765 * init.c (sort_mem_initializers, emit_mem_initializers,
766 member_init_ok_or_else, expand_member_init, is_aggr_type,
767 build_offset_ref, build_java_class_ref): Likewise.
768
769 2004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
770
771 Convert diagnostics to use quoting flag q 3/n
772 * decl.c (pop_label, duplicate_decls, redeclaration_error_message,
773 redeclaration_error_message, lookup_label, check_goto,
774 make_typename_type, make_unbound_class_template,
775 fixup_anonymous_aggr, check_tag_decl, start_decl, start_decl_1,
776 grok_reference_init, layout_var_decl, maybe_commonize_var,
777 check_for_uninitialized_const_var, reshape_init_array,
778 reshape_init, check_initializer, cp_finish_decl,
779 member_function_or_else, bad_specifiers, grokfndecl, grokvardecl,
780 check_static_variable_definition, compute_array_index_type,
781 create_array_type_for_decl, check_special_function_return_type,
782 grokdeclarator, check_default_argument, grokparms,
783 grok_ctor_properties, grok_op_properties,
784 check_elaborated_type_specifier, xref_tag, finish_enum,
785 build_enumerator, check_function_type, start_preparsed_function,
786 store_parm_decls): Use quoting formats.
787 * decl2.c (grok_array_decl, delete_sanity, check_member_template,
788 check_java_method, check_classfn, finish_static_data_member_decl,
789 grokfield, grokbitfield, grok_function_init,
790 build_anon_union_vars, coerce_new_type, coerce_delete_type,
791 check_default_args): Likewise.
792 * parser.c (cp_parser_decl_specifier_seq): Likewise.
793
794 2004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
795
796 Convert diagnostics to use quoting flag q 2/n
797 * class.c (build_base_path, add_method, alter_access,
798 handle_using_decl, check_bases,
799 maybe_warn_about_overly_private_class, find_final_overrider,
800 warn_hidden, finish_struct_anon, add_implicitly_declared_members,
801 check_bitfield_decl, check_field_decls, layout_empty_base,
802 build_base_field, check_methods, layout_virtual_bases,
803 warn_about_ambiguous_bases, layout_class_type, finish_struct_1,
804 resolve_address_of_overloaded_function, instantiate_type,
805 note_name_declared_in_class): Use format flag "q" for quoting.
806
807 2004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
808
809 Convert diagnostics to use quoting flag q 1/n
810 * error.c (locate_error): Ignore quoting flag q.
811 * call.c (build_user_type_conversion_1, build_operator_new_call,
812 build_object_call, op_error, build_conditional_expr,
813 build_new_op, build_op_delete_call, enforce_access,
814 convert_like_real, convert_arg_to_ellipsis, build_x_va_arg,
815 convert_default_arg, build_over_call, build_new_method_call,
816 joust, perform_implicit_conversion, initialize_reference): Use the
817 quoting flag q.
818
819 2004-10-03 Andrew Pinski <pinskia@physics.uc.edu>
820
821 PR c++/17797
822 * typeck.c (build_reinterpret_cast): Return if the inner type
823 is error_mark_node.
824
825 2004-10-01 Jan Hubicka <jh@suse.cz>
826
827 * semantics.c (expand_body): Update call of tree_rest_of_compilation.
828
829 2004-09-30 Nathan Sidwell <nathan@codesourcery.com>
830
831 * cp-tree.h (struct lang_decl): Shrink by reordering fields and
832 turning operator_code and fixed_offset into bitfields.
833
834 2004-09-29 Joseph S. Myers <jsm@polyomino.org.uk>
835
836 * decl.c (duplicate_decls): Merge TREE_DEPRECATED.
837
838 2004-09-29 Jason Merrill <jason@redhat.com>
839
840 PR tree-optimization/17697
841 * decl.c (duplicate_decls): Copy TREE_NOTHROW from newdecl to olddecl.
842
843 2004-09-28 Jason Merrill <jason@redhat.com>
844
845 PR middle-end/17525
846 * class.c (build_base_field): Set TYPE_MODE.
847
848 2004-09-28 Roger Sayle <roger@eyesopen.com>
849
850 PR driver/17537
851 * g++spec.c (lang_specific_driver): Unrecognized libraries, other
852 than -lc and -lm, may require linking against libstc++.
853
854 2004-09-28 Kazu Hirata <kazu@cs.umass.edu>
855
856 * tree.c: Fix a comment typo.
857
858 2004-09-28 Nathan Sidwell <nathan@codesourcery.com>
859
860 * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): Remove.
861 (struct secondary_vptr_vtt_init_data_s): New.
862 (build_vtt_inits): Adjust dfs_walkers.
863 (dfs_build_secondary_vptr_vtt_inits): Caller data is a
864 secondary_vptr_vtt_init_data_s structure. Adjust.
865 (dfs_ctor_vtable_bases_queue_p): Remove.
866 (dfs_fixup_binfo_vtbls): No need to clear BINFO_MARKED. Simplify.
867
868 * pt.c (struct get_template_base_data_s): Remove.
869 (get_template_base_r): Fold into get_template_base.
870 (get_template_base): Walk base binfos directly in inheritance
871 graph order.
872
873 2004-09-27 Mark Mitchell <mark@codesourcery.com>
874
875 PR c++/17642
876 * cp-tree.h (fold_if_not_in_template): New function.
877 * call.c (build_conditional_expr): Use fold_if_not_in_template.
878 (build_cxx_call): Likewise.
879 * cvt.c (convert_to_complex): Likewise.
880 (ocp_convert): Likewise.
881 (convert): Likewise.
882 (convert_force): Likewise.
883 * decl.c (compute_array_index_type): Clear
884 processing_template_decl while folding array bounds.
885 * pt.c (convert_nontype_argument): Clear
886 processing_template_decl while processing non-type argument
887 initialization.
888 * tree.c (fold_if_not_in_template): New function.
889 * typeck.c (build_class_member_access_expr): Use
890 fold_if_not_in_template.
891 (build_array_ref): Likewise.
892 (build_binary_op): Likewise. Do not try to optimize computations
893 when processing templates.
894 (cp_pointer_int_sum): Use fold_if_not_in_template.
895 (pointer_diff): Likewise.
896 (build_unary_op): Likewise.
897 (build_reinterpret_cast): Likewise.
898 (get_delta_difference): Likewise.
899 (expand_ptrmemfunc_cst): Likewise.
900 (dubious_conversion_warnings): Likewise.
901
902 2004-09-27 Matt Austern <austern@apple.com>
903
904 * cp/parser.c (struct cp_token): New one-bit field , implicit_extern_c
905 (cp_lexer_get_preprocessor_token): Set implicit_extern_c for
906 tokens that come from headers that are implicitly extern "C".
907 (struct cp_parser): new one-bit field, implicit_extern_c.
908 (cp_parser_new): Set parser's implicit_extern_c to false.
909 (cp_parser_translation_unit): Pop lang context if we were in a
910 header that was implicitly extern "C".
911 (cp_parser_declaration_seq_opt): Push/pop lang context as
912 required by the token's and parser's implicit_extern_c.
913
914 2004-09-27 Mark Mitchell <mark@codesourcery.com>
915
916 PR c++/17585
917 * cp-tree.h (shared_member_p): Declare.
918 * search.c (shared_member_p): Give it external linkage.
919 * semantics.c (finish_qualified_id_expr): Use it.
920 (finish_id_expression): Likewise.
921
922 PR c++/17585
923 * semantics.c (finish_id_expression): Do not add "this->" to
924 static member functions.
925
926 2004-09-27 Nathan Sidwell <nathan@codesourcery.com>
927
928 PR c++/17681
929 * error.c (dump_type): Change TREE_VEC case into TREE_BINFO.
930
931 * class.c (struct count_depth_data): Remove.
932 (dfs_depth_post, dfs_depth_q): Remove.
933 (find_final_overrider): Use number of vbase classes as depth
934 bound.
935
936 * cp-tree.h (types_overlap_p): Remove.
937 * search.c (struct overlap_info): Remove.
938 (dfs_check_overlap, dfs_no_overlap_yet, types_overlap_p): Remove.
939
940 * pt.c (GTB_VIA_VIRTUAL, GTB_IGNORE_TYPE): Remove.
941 (get_template_base_recursive): Remove. Replace with ...
942 (get_template_base_r): ... this.
943 (struct get_template_base_data_s): New.
944 (get_template_base): Use get_template_base_r via dfs_walk. Always
945 return NULL on failure.
946 (unify): Remove error_mark_node check from get_template_base result.
947
948 2004-09-24 Paolo Bonzini <bonzini@gnu.org>
949
950 * parser.c (cp_parser_expression_stack): Clarify why it is
951 an array of NUM_PREC_VALUES elements.
952 (cp_parser_binary_expression): Clarify why we do not need to
953 handle stack overflow.
954
955 2004-09-24 Nathan Sidwell <nathan@codesourcery.com>
956
957 PR c++/16889
958 * search.c (lookup_field_queue_p): Correct check for hidden base.
959
960 * search.c (bfs_walk): Remove.
961 (lookup_member): Use dfs_walk_real.
962 (dfs_walk_real): Move and adjust documentation from bfs_walk.
963
964 2004-09-23 Zack Weinberg <zack@codesourcery.com>
965
966 * decl.c (grokfndecl): If ::main is found not to return int,
967 correct it after issuing a diagnostic.
968 (grokdeclarator): If the incoming type was error_mark_node, do
969 not complain about declaring something with no type.
970 (start_function): Change check for ::main not returning int to
971 an assertion, as grokfndecl now catches this when the user did it.
972 * init.c (perform_member_init, sort_mem_initializers)
973 (emit_mem_initializers): Make most diagnostics be issued on
974 the line of current_function_decl, not whatever the current
975 input line is.
976 * parser.c (cp_lexer_peek_token_emit_debug_info): Surround
977 definition and declaration with #ifdef ENABLE_CHECKING.
978 Avoid unnecessary use of fprintf.
979 (cp_lexer_print_token, cp_lexer_debug_stream): Adjust stub
980 definitions to avoid warnings.
981 (cp_lexer_new_main): Add assertion that first token is not a
982 padding token.
983 (cp_lexer_new_from_token_array): Fold into ...
984 (cp_lexer_new_from_tokens): ... here. Add assertion that
985 first token is not a padding token.
986 (cp_lexer_set_source_position_from_token): Move nearer to callers.
987 Remove unused lexer argument.
988 (cp_lexer_peek_token): Just print debugging report (if enabled)
989 and return lexer->next_token.
990 (cp_lexer_skip_purged_tokens): Delete.
991 (cp_lexer_next_token_is, cp_lexer_next_token_is_not): Make
992 inline, simplify bodies.
993 (cp_lexer_peek_nth_token): Add debugging report a la
994 cp_lexer_peek_token.
995 (cp_lexer_consume_token): Correct commentary. Advance over
996 purged tokens here. Set current source position here, from
997 token to be returned. Avoid unnecessary use of fprintf.
998 (cp_lexer_purge_token): Advance next_token pointer over this and
999 subsequent purged tokens.
1000 (cp_parser_error): Adjust source position to that of the
1001 peeked token.
1002 (cp_parser_push_lexer_for_tokens, cp_parser_pop_lexer): New functions.
1003 (cp_parser_string_literal): Remove some excessive cleverness.
1004 (cp_parser_enum_specifier): Call start_enum before consuming
1005 the opening brace.
1006 (cp_parser_member_declaration): Make the "extra semicolon"
1007 diagnostic consistently-worded with the other place this is
1008 diagnosed. Explicitly set the diagnostic location to the
1009 location of the offending semicolon.
1010 (cp_parser_enclosed_template_argument_list): Use %</%> quoting
1011 in diagnostics. Do not use cp_parser_require. Set location
1012 of diagnostics about improper use of '>>' to location of
1013 offending token.
1014 (cp_parser_late_parsing_for_member):
1015 Use cp_parser_push_lexer_for_tokens and cp_parser_pop_lexer.
1016 (cp_parser_late_parsing_default_args): Likewise. Manually
1017 move some logic outside the loop.
1018
1019 2004-09-23 Andrew Pinski <pinskia@physics.uc.edu>
1020
1021 PR c++/17618
1022 * cvt.c (cp_convert_to_pointer): Return early when the type is
1023 an error_mark_node.
1024
1025 2004-09-21 Fariborz Jahanian <fjahanian@apple.com>
1026
1027 PR c++/13989
1028 PR c++/9844
1029 * decl.c (grokfndecl): Add new argument "attrlist", use it
1030 to call cplus_decl_attributes.
1031 (start_function): Remove call to cplus_decl_attributes.
1032 * cvt.c (ocp_convert): Add support to use type conversion
1033 function to vector type.
1034 * parser.c (cp_parser_conversion_type_id): Add attributes, if any,
1035 to the parsed type.
1036
1037 2004-09-23 Paolo Bonzini <bonzini@gnu.org>
1038
1039 PR c++/17596
1040
1041 * parser.c (cp_parser_token_tree_map_node,
1042 cp_parser_pm_expression, cp_parser_additive_expression,
1043 cp_parser_multiplicative_expression, cp_parser_shift_expression,
1044 cp_parser_relational_expression, cp_parser_equality_expression,
1045 cp_parser_and_expression, cp_parser_exclusive_or_expression,
1046 cp_parser_inclusive_or_expression,
1047 cp_parser_logical_and_expression,
1048 cp_parser_logical_or_expression): Removed.
1049 (enum cp_parser_prec, struct cp_parser_token_tree_map_node,
1050 binops, binops_by_token): New.
1051 (cp_parser_assignment_expression): Use cp_parser_binary_expression.
1052 (cp_parser_new): Initialize binops_by_token.
1053 (cp_parser_binary_expression): Rewritten.
1054 (N_CP_TTYPES): New.
1055
1056 2004-09-23 Kazu Hirata <kazu@cs.umass.edu>
1057
1058 * parser.c: Fix a comment typo.
1059
1060 2004-09-23 Nathan Sidwell <nathan@codesourcery.com>
1061
1062 PR c++/17620
1063 * decl.c (xref_basetypes): Look through typedefs before checking
1064 for duplicate base.
1065
1066 2004-09-22 Nathan Sidwell <nathan@codesourcery.com>
1067
1068 * cp-tree.h (unemitted_tinfo_decls): Make a VEC(tree).
1069 * decl2.c (cp_finish_file): Adjust tinfo decl emission loop.
1070 * rtti.c (unemitted_tinfo_decls): Make a VEC(tree).
1071 (init_rtti_processing): Initialize it to something realistic.
1072 (get_tinfo_decl): Adjust pushing the new decl.
1073
1074 * cp-tree.h (struct lang_type_class): Remove marked flags, add
1075 diamond_shaped and repeated_base flags. Reorder to keep 8-bit blocks.
1076 (TYPE_MARKED_P): New.
1077 (CLASSTYPE_DIAMOND_SHAPED_P, CLASSTYPE_REPEATED_BASE_P): New.
1078 (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
1079 CLEAR_CLASSTYPE_MARKED_N): Remove.
1080 (CLASSTYPE_MARKED_*, SET_CLASSTYPE_MARKED_*,
1081 CLEAR_CLASSTYPE_MARKED_*): Remove.
1082 * decl.c (xref_basetypes): Use TYPE_MARKED_P. Determine diamond
1083 shaped and repeated base properties.
1084 * lex.c (cxx_make_type): Don't clear TYPE_ALIAS_SET.
1085 * rtti.c (dfs_class_hint_mark, dfs_class_hint_unmark,
1086 class_hint_flags): Remove.
1087 (get_pseudo_ti_init): Use CLASSTYPE_REPEATED_BASE_P and
1088 CLASSTYPE_DIAMOND_SHAPED_P.
1089
1090 2004-09-21 Ziemowit Laski <zlaski@apple.com>
1091
1092 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved here from
1093 cp-objcp-common.h.
1094 (objcp_tsubst_copy_and_build): Reformat function signature.
1095 * cp-objcp-common.h (objcp_tsubst_copy_and_build): Likewise.
1096 (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved to cp-lang.c.
1097
1098 2004-09-21 Zack Weinberg <zack@codesourcery.com>
1099
1100 * parser.c (cp_lexer_peek_token, cp_lexer_consume_token):
1101 Don't handle CPP_PRAGMA tokens specially.
1102 (cp_lexer_handle_pragma): Use cp_lexer_consume_token. Don't
1103 purge the token; do clear token->value after processing. Add
1104 assertion at beginning that token->value is nonzero.
1105 (cp_parser_statement, cp_parser_declaration_seq_opt): Handle
1106 CPP_PRAGMA as a full statement or declaration in its own right.
1107
1108 2004-09-21 Matt Austern <austern@apple.com>
1109
1110 PR c++/15049
1111 * decl.c (grokvardecl): Accept declarations of global variables
1112 using anonymous types.
1113
1114 2004-09-21 Roger Sayle <roger@eyesopen.com>
1115
1116 PR c++/7503
1117 * tree.c (lvalue_p_1): Disallow MIN_EXPR and MAX_EXPR as lvalues
1118 if either operand has side-effects.
1119 * typeck.c (rationalize_conditional_expr): Assert that neither
1120 operand of MIN_EXPR or MAX_EXPR has side-effects.
1121 (build_modify_expr): Add support for MIN_EXPR and MAX_EXPR.
1122 Check that the "lhs" is a valid lvalue, i.e. that neither operand
1123 of a MIN_EXPR or MAX_EXPR has a side-effect.
1124
1125 2004-09-21 Nathan Sidwell <nathan@codesourcery.com>
1126
1127 * cp-tree.h (struct lang_type_header): Remove
1128 uses_multiple_inheritance field.
1129 (TYPE_USES_MULTIPLE_INHERITANCE): Remove.
1130 (TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P): Remove.
1131 (TYPE_USES_VIRTUAL_BASECLASSES): Remove.
1132 (DECL_NEEDS_VTT_PARM_P): Use CLASSTYPE_VBASECLASSES.
1133 (TYPE_CONTAINS_VPTR_P): Likewise.
1134 * call.c (add_template_candidate_real): Use
1135 CLASSTYPE_VBASECLASSES.
1136 (build_special_member_call): Likewise.
1137 * class.c (finish_struct_bits): Remove
1138 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P & TYPE_USES_VIRTUAL_BASECLASSES
1139 bookkeeping.
1140 (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
1141 (create_vtable_ptr): Remove TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P
1142 bookkeeping.
1143 (build_vtt_inits): Use CLASSTYPE_VBASECLASSES.
1144 (accumulate_vtbl_inits, build_vbase_offset_vtbl_entries):
1145 Likewise.
1146 * decl.c (xref_basetypes): Remove TYPE_USES_MULTIPLE_INHERITANCE,
1147 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
1148 bookkeeping.
1149 (cxx_maybe_build_cleanup): Use CLASSTYPE_VBASECLASSES.
1150 * decl2.c (maybe_retrofit_in_chrg): Likewise.
1151 * init.c (expand_member, push_base_cleanups): Likewise.
1152 * pt.c (instantiate_class_template): Remove
1153 TYPE_USES_MULTIPLE_INHERITANCE,
1154 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
1155 bookkeeping.
1156 * ptree.c (cxx_print_type): Remove TYPE_USES_MULTIPLE_INHERITANCE
1157 check.
1158 * typeck2.c (process_init_constructor): Replace some sorrys with
1159 asserts.
1160
1161 2004-09-21 Andreas Tobler <a.tobler@schweiz.ch>
1162
1163 * decl.c (reshape_init_array): Initialize max_index_cst to fix
1164 bootstrap failure.
1165
1166 2004-09-20 Mark Mitchell <mark@codesourcery.com>
1167
1168 PR c++/17530
1169 * pt.c (tsubst): Fix parentheses to accomodate emacs.
1170 (tsubst_baselink): If we get a single function, mark it as used.
1171
1172 2004-09-20 Matt Austern <austern@apple.com>
1173 Zack Weinberg <zack@codesourcery.com>
1174
1175 * decl.c (make_rtl_for_nonlocal_decl, start_preparsed_function):
1176 Apply lbasename to input_filename before passing to get_fileinfo.
1177 * semantics.c (begin_class_definition): Likewise.
1178 * lex.c (handle_pragma_interface): Apply get_fileinfo to the
1179 correct filename. Rename variables to be less confusing.
1180 (handle_pragma_implementation): Likewise. Disable "appears
1181 after file is included" diagnostic.
1182
1183 * parser.c (struct cp_token): Add in_system_header fiag.
1184 (CP_TOKEN_BLOCK_NUM_TOKENS, struct cp_token_block)
1185 (CP_TOKEN_BUFFER_SIZE, cp_token_cache_push_token)
1186 (CPP_NONE, cp_lexer_read_token): Delete.
1187 (struct cp_lexer): Remove first_token, string_tokens,
1188 main_lexer_p fields. Clarify comments.
1189 (struct cp_token_cache): Now just a pair of pointers.
1190 (CP_LEXER_BUFFER_SIZE): New #define.
1191 (CPP_PURGED): New fake token type.
1192 (cp_lexer_new_from_token_array, cp_lexer_destroy)
1193 (cp_lexer_peek_token_emit_debug_info, cp_lexer_skip_purged_tokens)
1194 (cp_lexer_handle_pragma, cp_token_cache_new, cp_parser_string_literal):
1195 New functions.
1196 (cp_lexer_new_from_tokens): Now a simple wrapper around
1197 cp_lexer_new_from_token_array.
1198 (cp_lexer_set_source_position_from_token): Also update
1199 in_system_header.
1200 (cp_lexer_next_token, cp_lexer_prev_token, cp_lexer_advance_token):
1201 Don't wrap round.
1202 (cp_lexer_token_difference): Dont handle wrapping round.
1203 (cp_lexer_new_main): Enable pragma deferral and raw strings,
1204 read the entire translation unit through c_lex_with_flags into
1205 this lexer's buffer, then turn raw strings back off again.
1206 (cp_lexer_grow_buffer): Adjust for buffer no longer being circular.
1207 (cp_lexer_get_preprocessor_token): No need to handle not being
1208 the main lexer. Set token->in_system_header too.
1209 (cp_lexer_peek_token): Skip purged tokens. Feed pragma tokens
1210 to cp_lexer_handle_pragma. No need to call cp_lexer_read_token.
1211 (cp_lexer_peek_nth_token): Likewise.
1212 (cp_lexer_purge_token): Mark the token PURGED, don't shift all
1213 the other tokens down.
1214 (cp_lexer_purge_tokens_after): Likewise.
1215 (cp_lexer_save_tokens, cp_lexer_rollback_tokens): Don't worry
1216 about there being no tokens.
1217 (cp_lexer_print_token): Revise to give useful information on
1218 all tokens.
1219 (struct cp_parser): Add field translate_strings_p.
1220 (cp_parser_new): Initialize it.
1221 (cp_parser_translation_unit): Destroy the lexer when done.
1222 (cp_parser_parameter_declaration): Restructure saving of
1223 default arguments.
1224 (cp_parser_save_member_function_body): Likewise.
1225 (cp_parser_check_for_invalid_template_id)
1226 (cp_parser_nested_name_specifier_opt, cp_parser_template_id):
1227 Adjust calls to cp_lexer_advance_token.
1228 (cp_parser_skip_to_closing_parenthesis, cp_parser_declaration):
1229 No need to fiddle c_lex_string_translate.
1230 (cp_parser_primary_expression, cp_parser_linkage_specification)
1231 (cp_parser_asm_definition, cp_parser_asm_specification_opt)
1232 (cp_parser_asm_operand_list, cp_parser_asm_clobber_list)
1233 Use cp_parser_string_literal.
1234 (cp_parser_attribute_list): Save and restore
1235 parser->translate_strings_p, not c_lex_string_translate.
1236 (cp_parser_cache_group): Delete.
1237 (cp_parser_cache_group_1): Rename cp_parser_cache_group. Do
1238 not take a cache argument.
1239
1240 2004-09-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1241
1242 PR c++/14179
1243 * decl.c (reshape_init): Extract array handling into...
1244 (reshape_init_array): New function. Use integers instead of trees
1245 for indices. Handle out-of-range designated initializers.
1246
1247 2004-09-20 Steven Bosscher <stevenb@suse.de>
1248
1249 * lex.c (cxx_init): Don't set the ridpointer for RID_NULL
1250 to null_node.
1251
1252 2004-09-19 Mark Mitchell <mark@codesourcery.com>
1253
1254 * decl2.c (determine_visibility): Allow class visibility
1255 directives to override targetm.cxx.export_class_data.
1256
1257 2004-09-18 Kazu Hirata <kazu@cs.umass.edu>
1258
1259 * call.c, semantics.c: Follow spelling conventions.
1260 * class.c: Fix a comment typo.
1261
1262 2004-09-16 Geoffrey Keating <geoffk@apple.com>
1263
1264 PR pch/13361
1265 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
1266 (handle_pragma_implementation): Likewise.
1267
1268 2004-09-17 Jeffrey D. Oldham <oldham@codesourcery.com>
1269 Zack Weinberg <zack@codesourcery.com>
1270
1271 * cp-tree.def: Use tree_code_class enumeration constants
1272 instead of code letters.
1273 * call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
1274 * mangle.c, pt.c, semantics.c, tree.c, typeck.c:
1275 Update for new tree-class enumeration constants.
1276
1277 2004-09-16 Mark Mitchell <mark@codesourcery.com>
1278
1279 PR c++/16002
1280 * parser.c (cp_parser_simple_declaration): Commit to tentative
1281 parses after seeing a decl-specifier.
1282 (cp_parser_simple_declaration): Eliminate spurious message.
1283 (cp_parser_init_declarator): Adjust error message.
1284
1285 PR c++/16029
1286 * lex.c (unqualified_name_lookup_error): Mark the dummy
1287 declaration as used.
1288
1289 PR c++/17501
1290 * parser.c (cp_parser_nested_name_specifier): Do not resolve
1291 typename types if the user explicitly said "typename".
1292
1293 2004-09-16 Andrew MacLeod <amacleod@redhat.com>
1294
1295 * error.c (dump_decl): Make sure there is lang_specific info before
1296 checking for DTOR and CTOR decls.
1297
1298 2004-09-16 Nathan Sidwell <nathan@codesourcery.com>
1299
1300 * class.c (copy_virtuals): Remove.
1301 (build_primary_vtable): Use copy_list directly.
1302 (build_secondary_vtable): Likewise.
1303 (update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
1304 (create_vtable_ptr): Likewise.
1305
1306 2004-09-16 Kazu Hirata <kazu@cs.umass.edu>
1307
1308 * search.c: Follow spelling conventions.
1309
1310 2004-09-16 Nathan Sidwell <nathan@codesourcery.com>
1311
1312 * cp-tree.h (struct lang_type_class): Make pure_virtuals a
1313 VEC(tree).
1314 (CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
1315 comments.
1316 * call.c (build_new_method_call): Don't confirm a pure virtual is
1317 in CLASSTYPE_PURE_VIRTUALS. Reorder checks. Make it a warning.
1318 * class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
1319 (fixup_inline_methods, finish_struct): Likewise.
1320 * decl.c (finish_method): Likewise.
1321 * search.c (dfs_get_pure_virtuals, get_pure_virtuals):
1322 CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
1323 * typeck2.c (abstract_virtuals_error): Likewise. Truncate the
1324 vector to avoid repeating the list in error messages.
1325
1326 2004-09-15 Mark Mitchell <mark@codesourcery.com>
1327
1328 * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define.
1329 * cp-tree.h (cxx_comdat_group): Declare.
1330 * decl.c (cxx_comdat_group): New function.
1331
1332 2004-09-15 Nathan Sidwell <nathan@codesourcery.com>
1333
1334 * search.c (get_pure_virtuals): Remove unused variables.
1335
1336 * cp-tree.h (struct lang_decl_flags): Remove
1337 needs_final_overrider.
1338 (DECL_NEEDS_FINAL_OVERRIDER_P): Remove.
1339 * decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P.
1340 * class.c (finish_struct_bits): Correct comment about
1341 CLASSTYPE_PURE_VIRTUALS.
1342 * search.c (get_pure_virtuals): Remove useless loop.
1343
1344 2004-09-14 Mark Mitchell <mark@codesourcery.com>
1345
1346 PR c++/17324
1347 * mangle.c (partially_mangled_name): New variable.
1348 (partially_mangled_name_len): Likewise.
1349 (save_partially_mangled_name): New function.
1350 (restore_partially_mangled_name): Likewise.
1351 (write_encoding): Save and restore partially mangled names around
1352 calls to get_mostly_instantiated_function_type.
1353 (write_unqualified_name): Likewise.
1354
1355 2004-09-14 Nathan Sidwell <nathan@codesourcery.com>
1356
1357 * pt.c (unify): Replace gcc_unreachable with gcc_assert.
1358
1359 2004-09-13 Mark Mitchell <mark@codesourcery.com>
1360
1361 PR c++/16162
1362 * parser.c (cp_parser_id_expression): Correct value for
1363 is_declarator.
1364 (cp_parser_nested_name_specifier_opt): Look through typenames as
1365 necessary.
1366 (cp_parser_template_name): Honor check_dependency_p.
1367
1368 PR c++/16716
1369 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
1370 Robustify.
1371
1372 PR c++/17327
1373 * pt.c (unify): Add ENUMERAL_TYPE case. Replace sorry with
1374 gcc_unreacable.
1375
1376 2004-09-12 Richard Henderson <rth@redhat.com>
1377
1378 PR c++/16254
1379 * semantics.c (maybe_cleanup_point_expr): Don't call fold.
1380 * typeck.c (condition_conversion): Likewise.
1381
1382 2004-09-11 Richard Henderson <rth@redhat.com>
1383
1384 PR c++/17404
1385 * pt.c (cur_stmt_expr): Move from tsubst_expr.
1386 (tsubst_expr) <case STMT_EXPR>: Move ...
1387 (tsubst_copy_and_build): ... here.
1388
1389 2004-09-10 Zack Weinberg <zack@codesourcery.com>
1390
1391 * cp-tree.h (interface_only, interface_unknown): Delete declarations;
1392 comment explaining them moved to c-common.h.
1393 * lex.c (interface_only, interface_unknown, extract_interface_info):
1394 Delete definitions.
1395 (cxx_finish): Don't reset interface_unknown.
1396 (handle_pragma_interface): Don't set interface_only and
1397 interface_unknown; just the like-named fields in finfo.
1398 (handle_pragma_implementation): Adjust comment.
1399 * decl2.c (cp_finish_file): Don't reset interface_only and
1400 interface_unknown.
1401 * method.c (synthesize_method): Don't reset interface_unknown or
1402 call extract_interface_info.
1403 * pt.c (pop_tinst_level): Don't call extract_interface_info.
1404 * decl.c (start_cleanup_fn): Don't save or restore interface_only
1405 and interface_unknown.
1406 (make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
1407 and use the result instead of the interface_only/interface_unknown
1408 globals.
1409 (start_preparsed_function): Likewise.
1410 * lex.c (cxx_make_type): Likewise.
1411 * semantics.c (begin_class_definition): Likewise.
1412 (expand_body): Don't call extract_interface_info.
1413
1414 2004-09-10 Ziemowit Laski <zlaski@apple.com>
1415
1416 * decl.c (objc_mark_locals_volatile): Make description of
1417 routine more descriptive; only mark VAR_DECLs at each
1418 binding level.
1419
1420 2004-09-10 Richard Henderson <rth@redhat.com>
1421
1422 PR c++/17386
1423 * call.c (build_vfield_ref): Move...
1424 * class.c (build_vfield_ref): ... here. Convert datum to the
1425 primary base containing the vptr.
1426 (make_new_vtable): Simplify build_primary_vtable arguments.
1427 (finish_struct_1): Do not duplicate TYPE_VFIELD.
1428 * typeck.c (build_class_member_access_expr): Don't warn for
1429 null object access to base fields.
1430
1431 2004-09-10 Ziemowit Laski <zlaski@apple.com>
1432
1433 * decl.c (objc_get_current_scope, objc_mark_locals_volatile):
1434 New functions, to be called from ObjC++.
1435
1436 2004-09-10 Kazu Hirata <kazu@cs.umass.edu>
1437
1438 * class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
1439 name-lookup.h, parser.c, search.c, semantics.c, typeck2.c: Fix
1440 comment typos.
1441
1442 2004-09-09 Ziemowit Laski <zlaski@apple.com>
1443
1444 * typeck.c (build_c_cast): Preserve the cast if casting
1445 to and from an Objective-C type.
1446
1447 2004-09-09 Ziemowit Laski <zlaski@apple.com>
1448
1449 * Make-lang.in (cp/typeck.o): Depend on c-common.h.
1450 * typeck.c: Include c-common.h.
1451 (comptypes): For RECORD_TYPEs, call objc_comptypes() and
1452 return the result if nonnegative.
1453
1454 2004-09-09 Zack Weinberg <zack@codesourcery.com>
1455
1456 * decl2.c (import_export_class)
1457 * lex.c (handle_pragma_interface):
1458 Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.
1459
1460 2004-09-08 Ziemowit Laski <zlaski@apple.com>
1461
1462 * Make-lang.in (cp/semantics.o): Depend on c-common.h.
1463 * semantics.c: Include c-common.h.
1464 (finish_compound_stmt): Call objc_clear_super_receiver().
1465
1466 2004-09-08 Ziemowit Laski <zlaski@apple.com>
1467
1468 * cp-tree.h (do_poplevel): New prototype.
1469 * semantics.c (do_poplevel): Make externally visible.
1470
1471 2004-09-08 Nathan Sidwell <nathan@codesourcery.com>
1472
1473 * cp-tree.h (tree_pair_s): Define a GC'd vector.
1474 * name-lookup.h (cxx_saved_binding, cp_class_binding): Likewise.
1475 * semantics.c (deferred_access): Likewise.
1476
1477 2004-09-06 Daniel Jacobowitz <dan@debian.org>
1478
1479 * semantics.c (expand_body): Assert that we are not nested.
1480
1481 2004-09-06 Zack Weinberg <zack@codesourcery.com>
1482
1483 * decl.c (build_enumerator): Use add_double and int_fits_type_p
1484 instead of cp_build_binary_op, to avoid creating short-lived trees.
1485 * parser.c (cp_parse_type_specifier <RID_ENUM>): Use two-token
1486 lookahead instead of backtracking. Move some code to avoid a
1487 conditional branch.
1488 (cp_parser_enum_specifier): Avoid duplication of effort with caller.
1489 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
1490 (cp_parser_enumerator_list, cp_parser_enumerator_definition):
1491 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
1492
1493 2004-09-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1494
1495 * decl.c (grok_declarator): Remove a redundant semicolon.
1496
1497 * parser.c (cp_parser_decl_specifier_seq, cp_parser_type_specifier):
1498 Correct comments describing function parameters.
1499
1500 2004-09-03 Matt Austern <austern@apple.com>
1501 Compile speed improvement.
1502 * parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING set.
1503 Otherwise define a stub macro that expands to nothing.
1504 (cp_lexer_debugging_p): Only define if ENABLE_CHECKING set. Otherwise
1505 define a stub macro that expands to 0.
1506 (cp_lexer_start_debugging): Only define if ENABLE_CHECKING set.
1507 (cp_lexer_stop_debugging): Likewise.
1508 (cp_lexer_debug_stream): Only define if ENABLE_CHECKING set. Otherwise
1509 define a stub macro that expands to NULL.
1510 (cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set.
1511 (cp_lexer_new_from_tokens): Likewise.
1512
1513 2004-09-03 Jan Hubicka <jh@suse.cz>
1514
1515 * decl.c (finish_function): Clean out pointers we no longer need.
1516
1517 2004-09-03 Jan Beulich <jbeulich@novell.com>
1518
1519 * g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
1520 than "-lm".
1521
1522 2004-09-02 Paul Brook <paul@codesourcery.com>
1523
1524 * decl2.c (determine_visibility): Only check data visibility
1525 for VAR_DECLS.
1526
1527 2004-08-31 Mark Mitchell <mark@codesourcery.com>
1528
1529 * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
1530 * class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
1531 * decl2.c (determine_visibility): Honor
1532 TARGET_CXX_EXPORT_CLASS_DATA.
1533
1534 * class.c (key_method): Rename to ...
1535 (determine_key_method): ... this.
1536 (finish_struct_1): Adjust accordingly.
1537 * cp-tree.h (key_method): Declare.
1538 * decl2.c (maybe_emit_vtables): Determine the key method here if
1539 it has not already been done.
1540
1541 2004-08-31 Ziemowit Laski <zlaski@apple.com>
1542
1543 * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o.
1544 (cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h.
1545 (cp/cp-decl.c): Do not depend on gtype-cp.h.
1546 (cp/cp-objcp-common.o): New target.
1547 * cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h.
1548 (cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size,
1549 cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move
1550 prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c,
1551 respectively.
1552 (LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH,
1553 LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS,
1554 LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
1555 LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT,
1556 LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET,
1557 LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR,
1558 LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE,
1559 LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION,
1560 LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE,
1561 LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
1562 LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
1563 LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION,
1564 LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS,
1565 LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
1566 LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
1567 LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
1568 LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
1569 LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
1570 LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1571 LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P,
1572 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1573 LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P,
1574 LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
1575 LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE,
1576 LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR,
1577 LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE,
1578 LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE,
1579 LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
1580 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR,
1581 LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE,
1582 LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move
1583 hooks to cp-objcp-common.h.
1584 (finish_file): New function.
1585 * cp-objcp-common.c: New file.
1586 * cp-objcp-common.h: New file.
1587 * cp-tree.h (cp_finish_file): New prototype.
1588 * decl.c: Do not include gtype-cp.h.
1589 * decl2.c (finish_file): Rename to cp_finish_file.
1590
1591 2004-08-31 Richard Henderson <rth@redhat.com>
1592
1593 PR c++/17221
1594 * pt.c (tsubst_expr): Move OFFSETOF_EXPR handling ...
1595 (tsubst_copy_and_build): ... here.
1596
1597 2004-08-30 Mark Mitchell <mark@codesourcery.com>
1598
1599 * cp-tree.h (initialize_artificial_var): Declare.
1600 * decl.c (initialize_artifical_var): New function.
1601 * class.c (initialize_array): Remove.
1602 (initialize_vtable): Use initialize_artificial_var.
1603 (build_vtt): Likewise.
1604 (build_ctor_vtbl_group): Likewise.
1605
1606 2004-08-30 Richard Henderson <rth@redhat.com>
1607
1608 * class.c (build_base_path): Use build_address directly.
1609 * typeck.c (build_unary_op): Don't lower &a.b to pointer
1610 arithmetic directly.
1611 * typeck2.c (store_init_value): Don't assume !TREE_CONSTANT
1612 means !initializer_constant_valid_p.
1613
1614 2004-08-30 Richard Henderson <rth@redhat.com>
1615
1616 * class.c (fixed_type_or_null): Use get_base_address before
1617 assuming an ADDR_EXPR is non-null.
1618
1619 2004-08-30 Nathan Sidwell <nathan@codesourcery.com>
1620
1621 * name-lookup.c (pop_binding, pushdecl,
1622 set_identifier_type_value_with_scope, push_overloaded_decl,
1623 arg_assoc_type): Replace abort with gcc_assert or gcc_unreachable.
1624 * parser.c (cp_parser_diagnose_invalid_type_name,
1625 cp_parser_postfix_expression, cp_parser_unary_expression,
1626 cp_parser_check_declarator_template_para): Likewise.
1627 * pt.c (push_inline_template_parms_recursive,
1628 check_explicit_specialization, convert_nontype_argument,
1629 coerce_template_template_parms, uses_template_parms,
1630 instantiate_class_template, tsubst_decl, tsubst, tsubst_copy,
1631 tsubst_expr, instantiate_template,
1632 maybe_adjust_types_for_deduction, type_unification_real,
1633 resolve_overloaded_unification, template_decl_level,
1634 type_dependent_expression_p): Likewise.
1635 * search.c (lookup_base_r): Likewise.
1636 * semantics.c (finish_stmt_expr, simplify_aggr_init_expr): Likewise.
1637 * tree.c (lvalue_p_1, count_functions, cxx_printable_name,
1638 verify_stmt_tree_r, get_type_decl, stabilize_call): Likewise.
1639 * typeck.c (common_type, get_member_function_from_ptrfunc,
1640 build_binary_op, build_unary_op, expand_ptrmemfunc_cst): Likewise.
1641 * typeck2.c (cxx_incomplete_type_diagnostic,
1642 split_nonconstant_init_1, store_init_value,
1643 process_init_constructor): Likewise.
1644
1645 2004-08-30 Nathan Sidwell <nathan@codesourcery.com>
1646
1647 * call.c (check_dtor_name): Replace abort with gcc_assert or
1648 gcc_unreachable.
1649 (build_call, add_builtin_candidate, build_new_op,
1650 convert_like_real, build_over_call, in_charge_arg_for_name,
1651 source_type, joust): Likewise.
1652 * class.c (build_simple_base_path, get_vcall_index,
1653 finish_struct_1, instantiate_type, get_enclosing_class,
1654 add_vcall_offset_vtbl_entries_1, cp_fold_obj_type_ref): Likewise.
1655 * cp-gimplify.c (cp_genericize): Likewise.
1656 * cp-lang.c (cp_expr_size, cp_tree_size): Likewise.
1657 * cvt.c (cp_convert_to_pointer, ocp_convert): Likewise.
1658 * decl.c (poplevel, make_unbound_class_template, reshape_init,
1659 check_special_function_return_type, grokdeclarator,
1660 grok_op_properties, tag_name, xref_tag, start_preparsed_function,
1661 finish_function): Likewise.
1662 * decl2.c (grokfield, maybe_emit_vtables):Likewise.
1663 * error.c (dump_global_iord, dump_decl, dump_template_decl,
1664 language_to_string): Likewise.
1665 * except.c (choose_personality_routine): Likewise.
1666 * friend.c (do_friend): Likewise.
1667 * g++spec.c (lang_specific_driver): Likewise.
1668 * init.c (build_zero_init, expand_default_init, build_new_1,
1669 build_vec_delete_1, build_vec_init, build_dtor_call): Likewise.
1670 * lex.c (retrofit_lang_decl, cp_type_qual_from_rid): Likewise.
1671 * mangle.c (add_substitution, write_unscoped_name,
1672 write_template_prefix, write_identifier,
1673 write_special_name_destructor, write_type, write_builtin_type,
1674 write_expression, write_template_param,
1675 write_java_integer_type_codes): Likewise.
1676 * method.c (implicitly_declare_fn): Likewise.
1677
1678 2004-08-30 Nathan Sidwell <nathan@codesourcery.com>
1679
1680 * cp-tree.h (BINFO_PRIMARY_P): Use a binfo flag.
1681 (BINFO_INDIRECT_PRIMARY_P): Remove.
1682 * class.c (determine_primary_base): Rename to ...
1683 (determine_primary_bases): ... here. Set all primary bases.
1684 (set_primary_base): Remove.
1685 (mark_primary_bases): Remove.
1686 (build_simple_base_path, walk_subobject_offsets,
1687 propagate_binfo_offsets, end_of_class): Adjust.
1688 (layout_class_type): Rename determine_primary_base call.
1689 (dump_class_hierarchy_r, dump_vtable): Adjust. Don't pass a binfo
1690 to type_as_string.
1691 (dfs_build_secondary_vptr_vtt_inits, dfs_accumulate_vtbl_inits,
1692 build_rtti_vtbl_entries): Adjust.
1693 * init.c (build_vtbl_address): Adjust.
1694
1695 * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert.
1696
1697 2004-08-28 Ziemowit Laski <zlaski@apple.com>
1698
1699 * Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and
1700 CXX_AND_OBJCXX_OBJS.
1701 (CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing
1702 separately on the link line.
1703
1704 2004-08-28 Jason Merrill <jason@redhat.com>
1705
1706 * decl.c (expand_static_init): Avoid bogus warnings.
1707
1708 2004-08-27 Jason Merrill <jason@redhat.com>
1709
1710 PR c++/16851
1711 * tree.c (stabilize_init): See through a COMPOUND_EXPR.
1712
1713 PR c++/13684
1714 * decl.c (expand_static_init): Use thread-safety API.
1715 (register_dtor_fn): Return the call, don't expand it.
1716 * tree.c (add_stmt_to_compound): New fn.
1717 (stabilize_call): Use it.
1718
1719 2004-08-27 Richard Henderson <rth@redhat.com>
1720
1721 * cp-tree.def (OFFSETOF_EXPR): New.
1722 * parser.c (cp_parser_builtin_offsetof): Either built an
1723 OFFSETOF_EXPR, or call fold_offsetof immediately.
1724 * pt.c (tsubst_expr): Handle OFFSETOF_EXPR.
1725
1726 2004-08-27 Nathan Sidwell <nathan@codesourcery.com>
1727
1728 * call.c (validate_conversion_obstack): Replace
1729 my_friendly_assert with gcc_assert or gcc_unreachable.
1730 (direct_reference_binding, merge_conversion_sequences,
1731 build_user_type_conversion_1, perform_overload_resolution,
1732 build_op_delete_call, enforce_access, call_builtin_trap,
1733 build_over_call, build_special_member_call, build_new_method_call,
1734 initialize_reference): Likewise.
1735 * class.c (build_base_path, build_primary_vtable, alter_access,
1736 check_bases, update_vtable_entry_for_fn, layout_empty_base,
1737 clone_function_decl, adjust_clone_args,
1738 type_requires_array_cookie, include_empty_classes,
1739 finish_struct_1, resolve_address_of_overloaded_function,
1740 instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
1741 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
1742 accumulate_vtbl_inits, build_vtbl_initializer,
1743 build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
1744 * cvt.c (build_up_reference, convert_to_reference): Likewise.
1745 * decl.c (poplevel, duplicate_decls, make_typename_type,
1746 cxx_init_decl_processing, reshape_init, check_initializer,
1747 make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
1748 expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
1749 grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
1750 xref_basetypes, start_preparsed_function, save_function_data,
1751 finish_function, finish_method, maybe_register_incomplete_var,
1752 complete_vars): Likewise.
1753 * decl2.c (grok_array_decl, check_member_template,
1754 check_classfn, finish_static_data_member_decl, coerce_new_type,
1755 coerce_delete_type, import_export_class, decl_needed_p,
1756 determine_visibility, import_export_decl, build_cleanup,
1757 start_static_initialization_or_destructi, do_static_destruction,
1758 prune_vars_needing_no_initialization,
1759 build_offset_ref_call_from_tree): Likewise.
1760 * error.c (dump_decl, dump_expr): Likewise.
1761 * init.c (finish_init_stmts, build_zero_init,
1762 expand_virtual_init, expand_default_init, expand_aggr_init_1,
1763 build_offset_ref, build_new_1, build_delete, build_vbase_delete):
1764 Likewise.
1765 * mangle.c (write_method_parms, write_template_args,
1766 write_expression, write_template_arg): Likewise.
1767 * method.c (make_thunk, finish_thunk, use_thunk): Likewise.
1768 * name-lookup.c (pop_binding, begin_scope, leave_scope,
1769 resume_scope, push_using_decl, validate_nonmember_using_decl,
1770 is_ancestor, poplevel_class, set_inherited_value_binding_p,
1771 push_class_level_binding, do_class_using_decl, push_namespace,
1772 pop_namespace, add_using_namespace, ambiguous_decl,
1773 lookup_namespace_name, lookup_type_current_level,
1774 maybe_process_template_type_declaration): Likewise.
1775 * parser.c (cp_lexer_peek_nth_token,
1776 cp_parser_parse_and_diagnose_invalid_typ,
1777 cp_parser_translation_unit, cp_parser_template_id,
1778 cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
1779 * pt.c (push_access_scope, finish_member_template_decl,
1780 push_inline_template_parms_recursive, add_outermost_template_args,
1781 get_innermost_template_args, begin_explicit_instantiation,
1782 end_explicit_instantiation, retrieve_specialization,
1783 is_specialization_of, is_specialization_of_friend,
1784 register_specialization, check_explicit_specialization,
1785 comp_template_parms, process_template_parm,
1786 process_partial_specialization, convert_nontype_argument,
1787 coerce_template_template_parms, coerce_template_parms,
1788 mangle_class_name_for_template, lookup_template_function,
1789 lookup_template_class, instantiate_class_template, tsubst_decl,
1790 tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
1791 instantiate_template, fn_type_unification, type_unification_real,
1792 get_template_base, regenerate_decl_from_template,
1793 template_for_substitution, instantiate_decl,
1794 get_mostly_instantiated_function_type, dependent_scope_ref_p,
1795 value_dependent_expression_p, resolve_typename_type): Likewise.
1796 * repo.c (repo_emit_p): Likewise.
1797 * rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
1798 create_tinfo_types, emit_tinfo_decl): Likewise.
1799 * search.c (lookup_base_r, lookup_base, lookup_field_1,
1800 dfs_access_in_type, build_baselink, lookup_member,
1801 adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
1802 * semantics.c (perform_or_defer_access_check,
1803 finish_non_static_data_member, finish_stmt_expr_expr,
1804 finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
1805 finish_template_template_parm, finish_member_declaration,
1806 emit_associated_thunks): Likewise.
1807 * tree.c (build_target_expr_with_type, force_target_expr,
1808 copy_binfo, get_first_fn, cp_tree_equal): Likewise.
1809 * typeck.c (type_after_usual_arithmetic_conversions, comptypes,
1810 cxx_sizeof_or_alignof_type, perform_integral_promotions,
1811 build_class_member_access_expr, finish_class_member_access_expr,
1812 build_ptrmemfunc_access_expr, build_unary_op,
1813 unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
1814 build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
1815 * typeck2.c (complete_type_check_abstract,
1816 abstract_virtuals_error, process_init_constructor,
1817 add_exception_specifier): Likewise.
1818
1819 2004-08-27 Nathan Sidwell <nathan@codesourcery.com>
1820
1821 * class.c (build_vtbl_initializer): Use ssize_int.
1822 * decl.c (complete_array_type): Likewise.
1823 * method.c (finish_thunk): Likewise.
1824 * search.c (get_dynamic_base_type): Likewise.
1825
1826 2004-08-26 Richard Henderson <rth@redhat.com>
1827
1828 * cp-tree.h (DECL_FIELD_IS_BASE): New.
1829 * class.c (build_base_field): Set it.
1830 (build_simple_base_path): Use it.
1831 (fixed_type_or_null): Don't consider base fields definitive.
1832
1833 2004-08-25 Roger Sayle <roger@eyesopen.com>
1834
1835 PR middle-end/16693
1836 PR tree-optimization/16372
1837 * decl.c (finish_enum): Make the precision of the enumerated type
1838 the same width as the underlying integer type.
1839
1840 2004-08-25 Mark Mitchell <mark@codesourcery.com>
1841
1842 PR c++/17155
1843 * lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++
1844 functions.
1845
1846 * mangle.c (get_identifier_nocopy): Add cast.
1847
1848 * cp-tree.h (mangle_type): Remove.
1849 * mangle.c (globals): GTY it.
1850 (mangle_obstack): New variable.
1851 (name_obstack): Likewise.
1852 (name_base): Likewise.
1853 (write_char): Adjust accordingly.
1854 (write_chars): Likewise.
1855 (write_string): Likewise.
1856 (start_mangling): Initialize G.substitutions only one. Add
1857 ident_p parameter.
1858 (finish_mangling): Use VARRAY_CLEAR to reclaim
1859 storage in G.substitutions. Use obstack_finish.
1860 (init_mangle): Adjust for changes to variable names above.
1861 Initialize G.substitutions.
1862 (mangle_decl_string): Adjust call to start_mangling.
1863 (get_identifier_nocopy): New function.
1864 (mangle_decl): Use it.
1865 (mangle_type_string): Adjust call to start_mangling.
1866 (mangle_special_for_type): Likewise.
1867 (mangle_vtt_for_type): Likewise.
1868 (mangle_ctor_vtbl_for_type): Likewise.
1869 (mangle_thunk): Likewise.
1870 (mangle_guard_variable): Likewise.
1871 (mangle_ref_init_variable): Likewise.
1872
1873 2004-08-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1874
1875 PR c++/14428
1876 * pt.c (redeclare_class_template): Check the type of non-type and
1877 template template parameter.
1878
1879 2004-08-25 Nathan Sidwell <nathan@codesourcery.com>
1880
1881 * call.c (convert_class_to_reference): Adjust build_int_cst calls.
1882 (build_user_type_conversion_1, convert_like_real,
1883 build_java_interface_fn_ref, build_special_member_call): Likewise.
1884 * class.c (finish_struct_1, build_vtbl_initializer): Likewise.
1885 * cp-gimplify.c (cp_gimplify_expr): Likewise.
1886 * cvt.c (cp_convert_to_pointer): Likewise.
1887 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
1888 * decl2.c (start_static_initialization_or_destruction,
1889 generate_ctor_or_dtor_function): Likewise.
1890 * except.c (build_throw): Likewise.
1891 * mangle.c (write_integer_cst): Likewise.
1892 * method.c (finish_thunk): Likewise.
1893 * rtti.c (build_headof, get_tinfo_decl_dynamic,
1894 build_dynamic_cast_1, ptr_initializer, ptm_initializer,
1895 get_pseudo_ti_init): Likewise.
1896 * search.c (get_dynamic_cast_base_type): Likewise.
1897
1898 2004-08-25 Zack Weinberg <zack@codesourcery.com>
1899
1900 * class.c, search.c: Remove references to DWARF_DEBUG.
1901
1902 2004-08-25 Adam Nemet <anemet@lnxw.com>
1903
1904 * repo.c (extract_string): Reset backquote after one character.
1905 (get_base_filename): Fix indentation.
1906
1907 2004-08-24 Nathan Sidwell <nathan@codesourcery.com>
1908
1909 * decl.c (cxx_init_decl_processing): Adjust
1910 build_common_tree_nodes call.
1911
1912 2004-08-24 Nathan Sidwell <nathan@codesourcery.com>
1913
1914 PR c++/16889
1915 * (is_subobject_of_p): Resurrect & optimize.
1916 (lookup_field_r): Use it.
1917
1918 2004-08-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1919
1920 PR c++/16706
1921 * search.c (friend_accessible_p): Increment processing_template_decl
1922 when deal with TEMPLATE_DECL of SCOPE.
1923
1924 2004-08-24 Nathan Sidwell <nathan@codesourcery.com>
1925
1926 PR c++/17149
1927 * semantics.c (check_accessibility_of_qualified_id): Defer check
1928 if qualifying_type is a template parameter.
1929
1930 2004-08-23 Mark Mitchell <mark@codesourcery.com>
1931
1932 PR c++/17163
1933 * pt.c (instantiate_decl): Do not try to apply
1934 DECL_DECLARED_INLINED_P to a VAR_DECL.
1935
1936 * search.c (build_baselink): Fix typo in comment.
1937
1938 2004-08-22 Andrew Pinski <apinski@apple.com>
1939
1940 Revert:
1941 2004-08-22 Andrew Pinski <apinski@apple.com>
1942 PR c++/14029
1943 * typeck.c (build_unary_op): Use &a.b if the folded lowered
1944 expression is not constant.
1945
1946 2004-08-23 Nathan Sidwell <nathan@codesourcery.com>
1947
1948 * name-lookup.c (pushdecl): Rename build_type_copy call.
1949 * tree.c (cp_build_qualified_type_real,
1950 build_exception_variant, handle_java_interface_attribute): Likewise.
1951
1952 2004-08-22 Andrew Pinski <apinski@apple.com>
1953
1954 PR c++/14029
1955 * typeck.c (build_unary_op): Use &a.b if the folded lowered
1956 expression is not constant.
1957
1958 2004-08-20 Mark Mitchell <mark@codesourcery.com>
1959
1960 PR c++/17121
1961 * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P.
1962
1963 2004-08-21 Joseph S. Myers <jsm@polyomino.org.uk>
1964
1965 PR c++/17120
1966 * pt.c (tsubst_copy_and_build): Avoid clearing TREE_NO_WARNING for
1967 MODOP_EXPR.
1968
1969 2004-08-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1970
1971 * pt.c (register_specialization): Check DECL_TEMPLATE_SPECIALIZATION
1972 before calling comp_template_args.
1973
1974 2004-08-20 Nathan Sidwell <nathan@codesourcery.com>
1975
1976 * class.c (build_vtbl_initializer): Use build_int_cst for
1977 negative size types.
1978 * decl.c (complete_array_type): Likewise.
1979 * method.c (finish_thunk): Likewise.
1980
1981 2004-08-20 Andreas Tobler <a.tobler@schweiz.ch>
1982
1983 * tree.c: Remove unused mark_local_for_remap_r.
1984
1985 2004-08-19 Eric Christopher <echristo@redhat.com>
1986
1987 * cp-tree.h (cxx_unsave_expr_now): Delete prototype.
1988 * tree.c (cxx_unsave_expr_now): Delete.
1989 (cp_unsave_r): Ditto.
1990
1991 2004-08-19 Mark Mitchell <mark@codesourcery.com>
1992
1993 PR c++/15890
1994 * pt.c (push_template_decl_real): Disallow template allocation
1995 functions with fewer than two parameters.
1996
1997 2004-08-19 Nathan Sidwell <nathan@codesourcery.com>
1998
1999 * cp-tree.h (build_shared_int_cst): Remove.
2000 * tree.c (shared_int_cache): Remove.
2001 (build_shared_int_cst): Remove.
2002 * class.c (finish_struct_1): Use build_int_cst.
2003
2004 2004-08-19 Nathan Sidwell <nathan@codesourcery.com>
2005
2006 * decl.c (finish_enum): Do not copy value node early, copy
2007 later.
2008 * lex.c (cxx_init): Force null_node to be unique.
2009
2010 2004-08-19 Joseph S. Myers <jsm@polyomino.org.uk>
2011
2012 PR c++/17041
2013 * pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING
2014 from input for MODOP_EXPR.
2015
2016 2004-08-18 Mark Mitchell <mark@codesourcery.com>
2017
2018 * pt.c (dependent_template_p): Fix typo in commment.
2019
2020 PR c++/17068
2021 * pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as
2022 dependent.
2023
2024 2004-08-17 Mark Mitchell <mark@codesourcery.com>
2025
2026 PR c++/16246
2027 * pt.c (unify): Tidy ARRAY_TYPE handling. Make sure that non-type
2028 arguments have the same type as the corresponding parameter.
2029
2030 PR c++/16215
2031 * parser.c (cp_parser_name_lookup_error): If parser->object_scope
2032 is set use it for diagnostic purposes.
2033 (cp_parser_pseudo_destructor_name): Remove special-case error
2034 message.
2035
2036 PR c++/15871
2037 * semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions.
2038
2039 PR c++/16965
2040 * cp-tree.h (qualified_name_lookup_error): Add parameter.
2041 * name-lookup.c (do_class_using_decl): Restrict set of entities
2042 passed to cp_emit_debug_info_for_using more carefully.
2043 (lookup_qualified_name): Allow lookup_member to return sets of
2044 ambiguous entries.
2045 * parser.c (cp_parser_lookup_name): Add ambiguous_p parameter.
2046 (cp_parser_primary_expression): Handle ambiguous lookups.
2047 (cp_parser_template_name): Adjust use of cp_parser_lookup_name.
2048 (cp_parser_template_argument): Likewise.
2049 (cp_parser_elaborate_type_specifier): Likewise.
2050 (cp_parser_namespace_name): Likewise.
2051 (cp_parser_class_name): Likewise.
2052 (cp_parser_lookup_name_simple): Likewise.
2053 * pt.c (tsubst_qualified_id): Handle ambiguous results.
2054 (tsubst_expr): Likewise.
2055 * semantics.c (qualified_name_lookup_error): Add decl paramter.
2056 For ambiguous lookups, print candidates.
2057
2058 2004-08-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2059
2060 PR c++/6749
2061 * pt.c (instantiate_pending_templates): Add int parameter. Don't
2062 return anything.
2063 * cp-tree.h (instantiate_pending_templates): Adjust prototype.
2064 * decl2.c (finish_file): Adjust call to
2065 instantiate_pending_templates.
2066
2067 2004-08-15 Roger Sayle <roger@eyesopen.com>
2068
2069 * call.c (build_vfield_ref, build_call, build_conditional_expr,
2070 convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
2071 build_java_interface_fn_ref, build_special_member_call,
2072 build_new_method_call, initialize_reference): Replace calls to
2073 build with calls to buildN.
2074 * class.c (build_base_path, convert_to_base_statically,
2075 build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
2076 build_vtbl_initializer): Likewise.
2077 * cp-gimplify.c (genericize_try_block, genericize_catch_block,
2078 gimplify_if_stmt, cp_genericize_r): Likewise.
2079 * cvt.c (convert_to_void): Likewise.
2080 * decl.c (check_initializer, finish_constructor_body,
2081 finish_destructor_body): Likewise.
2082 * error.c (dump_expr): Likewise.
2083 * except.c (build_exc_ptr, expand_start_catch_block, build_throw):
2084 Likewise.
2085 * init.c (perform_member_init, expand_virtual_init,
2086 expand_cleanup_for_base, build_init, expand_default_init,
2087 build_offset_ref, decl_constant_value, build_new, build_new_1,
2088 build_vec_delete_1, build_vec_init, build_delete,
2089 push_base_cleanups, build_vec_delete): Likewise.
2090 * mangle.c (write_integer_cst): Likewise.
2091 * method.c (thunk_adjust, do_build_copy_constructor,
2092 do_build_assign_ref): Likewise.
2093 * pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
2094 unify, build_non_dependent_expr): Likewise.
2095 * rtti.c (build_headof, build_typeid, ifnonnull,
2096 build_dyanmic_cast_1, tinfo_base_init): Likewise.
2097 * semantics.c (begin_compound_stmt, finish_call_expr,
2098 finish_pseudo_destructor_expr, finish_id_expression,
2099 simplify_aggr_init_expr, finalize_nrv_r): Likewise.
2100 * tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
2101 array_type_nelts_total, stabilize_call): Likewise.
2102 * typeck.c (decay_conversion, build_class_member_access_expr,
2103 lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
2104 get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
2105 build_x_unary_op, build_unary_op, unary_complex_lvalue,
2106 build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
2107 check_return_expr): Likewise.
2108 * typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
2109 split_nonconstant_init, store_init_value, build_m_component_ref):
2110 Likewise.
2111
2112 2004-08-15 Nathan Sidwell <nathan@codesourcery.com>
2113
2114 * call.c (convert_class_to_reference,
2115 build_user_type_conversion_1, convert_like_real,
2116 build_java_interface_fn_ref, build_special_member_call): Use
2117 build_int_cst.
2118 * class.c (build_vtbl_initializer): Likewise.
2119 * cp-gimplify.c (cp_gimplify_expr): Likewise.
2120 * cvt.c (cp_convert_to_pointer): Likewise.
2121 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
2122 * decl2.c (start_static_initialization_or_destruction,
2123 generate_ctor_or_dtor_function): Likewise.
2124 * except.c (build_throw): Likewise.
2125 * lex.c (cxx_init): Likewise.
2126 * mangle.c (write_integer_cst): Likewise.
2127 * rtti.c (build_headof, get_tinfo_decl_dynamic,
2128 build_dynamic_cast_1, ptr_initializer, ptm_initializer,
2129 get_pseudo_ti_init): Likewise.
2130 * search.c (get_dynamic_cast_base_type): Likewise.
2131 * tree.c (build_shared_int_cst): Likewise.
2132
2133 2004-08-12 Mark Mitchell <mark@codesourcery.com>
2134
2135 PR c++/16273
2136 * class.c (count_depth_data): New type.
2137 (dfs_depth_post): New function.
2138 (dfs_depth_q): Likewise.
2139 (find_final_overrider_data_s): Change type of vpath.
2140 Add vpath_list.
2141 (dfs_find_final_overrider_1): New function.
2142 (dfs_find_final_overrider): Use it.
2143 (dfs_find_final_overrider_q): Adjust use of vpath.
2144 (dfs_find_final_overrider_post): Likewise.
2145 (find_final_overrider): Use dfs_depth. Allocate and deallocate
2146 vpath_list.
2147
2148 2004-08-12 Jan Beulich <jbeulich@novell.com>
2149
2150 * parser.c (cp_parser_asm_definition): Properly consume scope operator
2151 tokens preceding the clobbers. Don't check for scope operator
2152 following inputs. Simplify inputs handling to match that now used for
2153 clobbers.
2154
2155 2004-08-11 Mark Mitchell <mark@codesourcery.com>
2156
2157 PR c++/16698
2158 * except.c (build_throw): Allocate cleanup_type and the function
2159 for __cxa_throw separately.
2160
2161 PR c++/16853
2162 * call.c (standard_conversion): Do not accept conversions between
2163 pointers to members if the class types are unrelated.
2164
2165 PR c++/16618
2166 * parser.c (cp_parser_builtin_offsetof): Cast to "const volatile
2167 char &" instead of just "char &".
2168
2169 PR c++/16870
2170 * pt.c (tsubst): Just return the unknown_type_node.
2171
2172 2004-08-11 Mark Mitchell <mark@codesourcery.com>
2173
2174 PR c++/16964
2175 * parser.c (cp_parser_class_specifier): Robustify.
2176
2177 PR c++/16904
2178 * pt.c (tsubst_copy_and_build): Complain about invalid
2179 qualification.
2180
2181 PR c++/16929
2182 * pt.c (tsubst_default_argument): Clear out current_class_ptr and
2183 current_class_ref while tsubsting.
2184
2185 2004-08-10 Mark Mitchell <mark@codesourcery.com>
2186
2187 PR c++/16971
2188 * parser.c (cp_parser_init_declarator): Robustify.
2189
2190 2004-08-06 Richard Sandiford <rsandifo@redhat.com>
2191
2192 * typeck2.c (process_init_constructor): Guard the missing field warning
2193 with warn_missing_field_initializers rather than extra_warnings.
2194
2195 2004-08-06 Paolo Bonzini <bonzini@gnu.org>
2196
2197 * class.c (instantiate_type) <ENTRY_VALUE_EXPR>: Do not handle.
2198
2199 2004-08-05 Mark Mitchell <mark@codesourcery.com>
2200
2201 * decl.c (start_preparsed_function): Move determine_visibility
2202 call.
2203 * decl2.c (determine_visibility): Incorporate dllexport testing.
2204
2205 2004-08-05 Geoffrey Keating <geoffk@apple.com>
2206
2207 * g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option
2208 means that libstdc++ is needed.
2209
2210 2004-08-05 Nathan Sidwell <nathan@codesourcery.com>
2211
2212 * cvt.c (cp_convert_to_pointer): Adjust force_fit_type call.
2213
2214 2004-08-04 Geoffrey Keating <geoffk@apple.com>
2215
2216 * decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
2217 than passing it as a parameter to rest_of_decl_compilation.
2218 * decl2.c (grokfield): Use set_user_assembler_name.
2219
2220 2004-08-04 Nathan Sidwell <nathan@codesourcery.com>
2221
2222 * decl.c (complete_array_type): Don't gratuitously copy
2223 maxindex. Its type is always set.
2224
2225 2004-08-04 Paul Brook <paul@codesourcery.com>
2226
2227 * Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H.
2228 * cp-tree.h (struct language_function): Rename x_dtor_label to
2229 x_cdtor_label.
2230 (dtor_label): Rename ...
2231 (cdtor_label): ... to this.
2232 * decl.c (begin_constructor_body): Remove.
2233 (check_special_function_return_type): Maybe change the return type.
2234 (grokdeclarator): Pass the class type.
2235 (start_preparsed_function): Constructors may need a return label.
2236 (finish_constructor_body, finish_destructor_body): Set the return
2237 value.
2238 (begin_function_body): Don't call begin_constructor_body.
2239 (finish_function): Don't warn for constructors or destructors.
2240 (implicitly_declare_fn): Maybe change the return type.
2241 * optimize.c: Include target.h.
2242 (maybe_clone_body): Remap the function result.
2243 * semantics.c: Include target.h.
2244 (finish_return_stmt): Maybe jump to return label for constructors.
2245
2246 2004-08-03 Mark Mitchell <mark@codesourcery.com>
2247
2248 * class.c (build_vtable): Do not set DECL_VISIBILITY here.
2249 (check_field_decls): Or here.
2250 (check_methods): Or here.
2251 (initialize_array): Don't mess with DECL_CONTEXT.
2252 * cp-tree.h (start_decl): Adjust prototype.
2253 (determine_visibility): New function.
2254 * decl.c (duplicate_decls): Remove checks for hidden "operator
2255 new".
2256 (build_library_fn_1): Give all library functions default
2257 visibility.
2258 (start_decl): Add pop_scope_p parameter. Tidy.
2259 (cp_finish_decl): Do not pop scopes here. Call
2260 determine_visibility for variable definitions.
2261 (start_preparsed_function): Call determine_visibility.
2262 * decl2.c (determine_visibility): New function.
2263 * method.c (use_thunk): Fix formatting.
2264 * parser.c (cp_parser_condition): Adjust calls to start_decl.
2265 (cp_parser_init_declarator): Likewise.
2266 * pt.c (instantiate_decl): Always call pop_nested_class.
2267 * rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY.
2268 (tinfo_base_init): Likewise.
2269
2270 2004-08-02 Mark Mitchell <mark@codesourcery.com>
2271
2272 PR c++/16707
2273 * name-lookup.c (validate_nonmember_using_decl): Robustify.
2274
2275 2004-08-01 Mark Mitchell <mark@codesourcery.com>
2276
2277 PR c++/16224
2278 * name-lookup.c (decl_namespace): Remove.
2279 (current_decl_namespace): Use decl_namespace_context instead of
2280 decl_namespace.
2281 (push_decl_namespace): Likewise.
2282 (arg_assoc_class): Likewise.
2283 (arg_assoc_type): Likewise.
2284 * pt.c (check_specialization_namespace): New function.
2285 (maybe_process_partial_specialization): Use it.
2286 (register_specialization): Likewise.
2287
2288 PR c++/16489
2289 * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
2290 * call.c (null_ptr_cst_p): Handle variables with constant
2291 initializers.
2292 * pt.c (convert_nontype_argument): Use
2293 DECL_INTEGRAL_CONSTANT_VAR_P.
2294 * semantics.c (finish_id_expression): Likewise.
2295
2296 PR c++/16529
2297 * decl.c (duplicate_decls): Reject duplicate namespace
2298 declarations.
2299
2300 PR c++/16810
2301 * typeck.c (build_ptrmemfunc): Loosen assertion.
2302
2303 2004-08-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
2304
2305 * call.c (z_candidate::template_decl): Rename from template.
2306 (add_template_candidate_real): Adjust member reference.
2307 (joust): Likewise.
2308
2309 2004-07-29 Mark Mitchell <mark@codesourcery.com>
2310
2311 * cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
2312 (lang_decl_flags): Narrow the width of "languages". Add
2313 repo_available_p.
2314 (DECL_NEEDED_P): Remove.
2315 (FOR_EACH_CLONE): New macro.
2316 (DECL_REPO_AVAILABLE_P): Likewise.
2317 (DECL_TINFO_P): Likewise.
2318 (set_linkage_according_to_type): Declare.
2319 (import_export_vtable): Remove.
2320 (import_export_tinfo): Likewise.
2321 (mark_needed): New function.
2322 (decl_needed_p): Likewise.
2323 (note_vauge_linkage_fn): Likewise.
2324 (init_repo): Change prototype.
2325 (repo_template_used): Remove.
2326 (repo_template_instantiated): Likewise.
2327 (repo_emit_p): New function.
2328 (repo_export_class_p): Likewise.
2329 (no_linkage_check): Change prototype.
2330 * class.c (set_linkage_according_to_type): New function.
2331 (build_vtable): Use it. Do not call import_export_vtable. Set
2332 DECL_IGNORED_P if appropriate.
2333 * decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
2334 (make_rtL_for_nonlocal_decls): Check for template instantiations
2335 explicitly.
2336 (grokfndecl): Adjust call to no_linkage_check.
2337 (set_linkage_for_static_data_member): New function.
2338 (grokvardecl): Use it. Adjust call to no_linkage_check.
2339 (grokdeclarator): Use set_linkage_for_static_data_member.
2340 * decl2.c (note_vague_linkage_fn): New function.
2341 (note_vague_linkage_var): Likewise.
2342 (finish_static_data_member_decl): Use it.
2343 (import_export_vtable): Remove.
2344 (import_export_class): Use repo_export_class_p.
2345 (var_finalized_p): Simplify.
2346 (maybe_emit_vtables): Simplify.
2347 (mark_needed): New function.
2348 (decl_needed_p): Likewise.
2349 (import_export_decl): Add documentation and consistency checks.
2350 Use repo_emit_p. Handle virtual tables and RTTI information
2351 here.
2352 (import_export_tinfo): Remove.
2353 (write_out_vars): Call import_export_decl.
2354 (cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
2355 whenever one is.
2356 (finish_file): Use decl_needed_p. Do not call import_export_decl
2357 for undefined static data members. Do not warn about undefined
2358 inlines when using a repository.
2359 (mark_used): Use note_vague_linkage_fn. Always defer template
2360 instantiations.
2361 * lex.c (cxx_init): Adjust call to init_repo. Always set
2362 flag_unit_at_a-time.
2363 * method.c (synthesize_method): Remove unncessary
2364 import_export_decl call.
2365 (implicitly_declare_fn): Use set_linkage_according_to_type.
2366 * optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
2367 * pt.c (instantiate_class_template): Don't redundantly add classes
2368 to keyed_classes. Don't call repo_template_used.
2369 (tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
2370 templates with internal linkage.
2371 (check_instantiated_args): Adjust call to no_linkage_check.
2372 (instantiate_template): Use FOR_EACH_CLONE.
2373 (mark_definable): New function.
2374 (mark_decl_instantiated): Use it.
2375 (do_decl_instantiation): Adjust tests for explicit instantiation
2376 after "extern template".
2377 (instantiate_class_member): Do not use repo_template_instantiated.
2378 (do_type_instantiation): Simplify.
2379 (instantiate_decl): Use mark_definable. Check repo_emit_p.
2380 Simplify.
2381 * repo.c (repo_get_id): Remove.
2382 (original_repo): Remove.
2383 (IDENTIFIER_REPO_USED): Remove.
2384 (IDENTIFIER_REPO_CHOSEN): Remove.
2385 Remove all #if 0'd code.
2386 (repo_template_used): Remove.
2387 (repo_template_instantiated): Remove.
2388 (temporary_obstack_initialized_p): New variable.
2389 (init_repo): Register with lang_post_pch_load. Avoid creating
2390 identifiers unnecessarily. Don't use original_repo. Close the
2391 file here.
2392 (reopen_repo_file_for_write): Not here.
2393 (finish_repo): Always write out a new repository file.
2394 (repo_emit_p): New function.
2395 (repo_export_class_p): Likewise.
2396 * rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
2397 (involves_incomplete_p): New function.
2398 (tinfo_base_init): Use it.
2399 (ptr_initializer): Remove non_public_ptr parameter.
2400 (ptm_initializer): Likewise.
2401 (get_pseudo_ti_init): Likewise.
2402 (unemitted_tinfo_decl_p): Remove.
2403 (emit_tinfo_decl): Use import_export_decl.
2404 * semantics.c (expand_body): Move updates of static_ctors and
2405 static_dtors to ...
2406 (expand_or_defer_fn): ... here.
2407 * tree.c (no_linkage_check): Add relaxed_p parameter.
2408
2409 2004-07-28 Eric Christopher <echristo@redhat.com>
2410
2411 * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
2412
2413 2004-07-28 Nathan Sidwell <nathan@codesourcery.com>
2414
2415 * cp-tree.h (struct tree_pair_s): New.
2416 (typedef tree_pair_p): New.
2417 (DEF_VEC_O(tree_pair_s)): New.
2418 (struct lang_type_class): Make vcall_indices a VEC(tree_pair_s).
2419 (CLASSTYPE_VCALL_INDICES): Update documentation.
2420 * class.c (get_vcall_index): Adjust.
2421 (add_vcall_offset): Adjust.
2422
2423 2004-07-27 Kelley Cook <kcook@gcc.gnu.org>
2424
2425 * pt.c, typeck.c: Remove spurious carriage returns.
2426
2427 2004-07-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2428
2429 PR c++/14429
2430 * pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check
2431 when the type of ARG is not dependent.
2432
2433 2004-07-26 Geoffrey Keating <geoffk@apple.com>
2434
2435 * g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX.
2436 (lang_specific_driver): If the C++ or math library options don't
2437 start with '-l', don't count them as added libraries.
2438
2439 2004-07-26 Nathan Sidwell <nathan@codesourcery.com>
2440
2441 * decl.c (xref_basetypes): Adjust base access vector creation.
2442 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
2443 access accesses.
2444 * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.
2445
2446 2004-07-26 Niall Douglas <s_fsfeurope2@nedprod.com>
2447 Brian Ryner <bryner@brianryner.com>
2448
2449 PR c++/15000
2450 PR c++/9283
2451 * class.c (check_field_decls): Apply hidden visibility if
2452 -fvisibility-inlines-hidden and inlined unless otherwise specified
2453 (build_vtable): Set vtable visibility to class visibility.
2454 (check_field_decls): Default static member visibility to class
2455 visibility.
2456 (check_methods): Default method visibility to class visibility.
2457 * cp-tree.h: Added CLASSTYPE_VISIBILITY and
2458 CLASSTYPE_VISIBILITY_SPECIFIED macro.
2459 * decl.c (duplicate_decls): New logic for merging definition decls
2460 with declaration decls. Added ignore & warning when non default
2461 applied to global operator new or delete.
2462 * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
2463 wherever VISIBILITY was changed
2464 * rtti.c (get_tinfo_decl): Set typeinfo visibility to class
2465 visibility.
2466 (tinfo_base_init): Set typeinfo name visibility to class visibility.
2467
2468 2004-07-25 Bernardo Innocenti <bernie@develer.com>
2469
2470 * decl.c: Rename all identifiers named `class' to `cl'.
2471 * cp-tree.h: Likewise.
2472
2473 2004-07-25 Gabriel Dos Reis <gdr@integrable-solutions.net>
2474
2475 * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW.
2476 * typeck2.c (abstract_virtuals_error): Use GGC_NEW.
2477 * name-lookup.c (binding_entry_make): Use GGC_NEW.
2478 (binding_table_construct): Use GGC_CNEWVEC.
2479 (binding_table_new): Use GGC_NEW.
2480 (cxx_binding_make): Likewise.
2481 (begin_scope): Likewise.
2482 (push_to_top_level): Use GCC_CNEW.
2483 * parser.c (cp_token_cache_new): Likewise.
2484 (cp_token_cache_push_token): Likewise.
2485 (cp_lexer_new_main): Likewise.
2486 (cp_lexer_new_from_tokens): Likewise.
2487 (cp_parser_context_new): Likewise.
2488 (cp_parser_new): Likewise.
2489 (cp_lexer_new_from_tokens): Use GGC_NEWVEC.
2490 * lex.c (cxx_make_type): Use GGC_CNEW.
2491 (retrofit_lang_decl): Use GGC_NEWVAR.
2492 (cxx_dup_lang_specific_decl): Likewise.
2493 (copy_lang_type): Likewise.
2494 * decl.c (use_label): Use GGC_NEW instead of ggc_alloc.
2495 (save_function_data): Likewise.
2496 (lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared.
2497 (cxx_push_function_context): Likewise.
2498
2499 2004-07-25 Richard Henderson <rth@redhat.com>
2500
2501 * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
2502 DECL_IGNORED_P on RESULT_DECL.
2503 * semantics.c (finalize_nrv): Copy them too.
2504
2505 2004-07-23 Nathan Sidwell <nathan@codesourcery.com>
2506
2507 * search.c (lookup_conversion_operator): Avoid two loops.
2508 (add_conversions): Remove.
2509 (check_hidden_convs, split_conversions,
2510 lookup_conversions_r): New.
2511 (lookup_conversions): Use lookup_conversions_r.
2512
2513 2004-07-22 Nathan Sidwell <nathan@codesourcery.com>
2514
2515 * pt.c (get_template_base): Check type is completable.
2516
2517 2004-07-21 Eric Christopher <echristo@redhat.com>
2518
2519 * decl.c (poplevel): Inline unused variable checking.
2520 Change formatting.
2521
2522 2004-07-21 Paolo Bonzini <bonzini@gnu.org>
2523
2524 * typeck.c (build_binary_op): Do not use RDIV_EXPR for
2525 integer vectors.
2526
2527 2004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2528
2529 PR c++/14497
2530 * pt.c (check_explicit_specialization): Remove extension to accept
2531 specializations without template headers. Fall-through to normal
2532 processing.
2533
2534 2004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2535
2536 PR c++/509
2537 * pt.c (determine_specialization): New parameter template_count.
2538 Disambiguate between member templates and member functions counting
2539 the template headers.
2540 (check_explicit_specialization): Update caller.
2541 (tsubst_friend_function): Likewise.
2542
2543 2004-07-20 Steven Bosscher <stevenb@suse.de>
2544
2545 * cp-tree.def (TINST_LEVEL): Make it an 'x' node.
2546 * cp-tree.h (tinst_level_t): New tree type.
2547 (union lang_tree_node): Handle it.
2548 (TINST_LOCATION): New accessor macro.
2549 (make_tinst_level): New prototype.
2550 * cp-lang.c (cp_tree_size): Handle TINST_LEVEL.
2551 * decl.c (cp_tree_node_structure): Likewise.
2552 * error.c (print_instantiation_full_context): Use TINST_LOCATION.
2553 (print_instantiation_partial_context): Likewise.
2554 * pt.c (pop_tinst_level): Likewise.
2555 (push_tinst_level): Use make_tinst_level.
2556 * tree.c (make_tinst_level): New function.
2557 (cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node.
2558
2559 2004-07-20 Mark Mitchell <mark@codesourcery.com>
2560
2561 * parser.c (cp_parser_simple_type_specifier): Fix typo.
2562
2563 PR c++/16637
2564 * parser.c (cp_parser_simple_type_specifier): Do not record usage
2565 of globally-qualified names.
2566
2567 2004-07-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2568
2569 PR c++/16175
2570 * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
2571 cv qualifier.
2572
2573 2004-07-19 Mark Mitchell <mark@codesourcery.com>
2574
2575 PR c++/16623
2576 * cp-tree.h (lang_type_class): Add lazy_assignment_op.
2577 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
2578 * class.c (add_implicitly_declared_members): Use
2579 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2580 * method.c (lazily_declare_fn): Clear
2581 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2582 * search.c (lookup_fnfields_1): Check it.
2583
2584 2004-07-20 Nathan Sidwell <nathan@codesourcery.com>
2585
2586 * cp-tree.h (vec_binfo_member): Remove.
2587 * tree.c (vec_binfo_member): Remove.
2588
2589 * cp-tree.h (struct lang_type_class): Remove vfields field.
2590 (CLASSTYPE_VFIELDS): Remove.
2591 (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
2592 * class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS
2593 handling.
2594 (dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P.
2595 (finish_struct_1): Remove CLASSTYPE_VFIELDS handling.
2596 * init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P.
2597
2598 2004-07-20 Nathan Sidwell <nathan@codesourcery.com>
2599
2600 * cp-tree.h (DEF_VEC_P(tree)): Remove here.
2601 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
2602 Moved to common.
2603 (BINFO_LANG_SLOTS): Remove.
2604 * tree.c (copy_binfo): Adjust BINFO creation and accessors.
2605 * decl.c (xref_basetypes): Adjust BINFO creation and accessors.
2606 * class.c (check_bases): Adjust BINFO accessors.
2607 (determine_primary_base, finish_struct_bits,
2608 maybe_warn_about_overly_private_class, warn_hidden,
2609 walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
2610 warn_about_ambiguous_bases, get_vfield_name,
2611 dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
2612 add_vcall_offset_vtbl_entries_r): Likewise.
2613 * dump.c (cp_dump_tree): Likewise.
2614 * init.c (sort_mem_initializers, expand_member_init, build_delete,
2615 push_base_cleanups): Likewise.
2616 * method.c (do_build_copy_constructor, do_build_assign_ref,
2617 synthesize_exception_spec): Likewise.
2618 name-lookup.c (arg_assoc_class): Likewise.
2619 * pt.c (instantiate_class_template,
2620 get_template_base_recursive): Likewise.
2621 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
2622 * typeck2.c (process_init_constructor): Likewise.
2623 * search.c (lookup_base_r, dynamic_cast_base_recurse,
2624 dfs_access_in_type, dfs_walk_real, look_for_overrides,
2625 types_overlap_p, copied_binfo, original_binfo): Likewise.
2626 (binfo_for_vtable): Remove
2627
2628 2004-07-20 Steven Bosscher <stevenb@suse.de>
2629
2630 * cp-tree.h (struct lang_decl_flags): Unify the template_info and
2631 thunk_alias, and the access and virtual_offset fields.
2632 (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
2633 * decl.c (finish_case_label): Update c_add_case_node call.
2634
2635 2004-07-19 Mark Mitchell <mark@codesourcery.com>
2636
2637 Revert patch for PR c++/16623.
2638
2639 2004-07-19 Kelley Cook <kcook@gcc.gnu.org>
2640
2641 * except.c: Remove two spurious carriage returns.
2642
2643 2004-07-19 Mark Mitchell <mark@codesourcery.com>
2644
2645 PR c++/16623
2646 * cp-tree.h (lang_type_class): Add lazy_assignment_op.
2647 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
2648 * class.c (add_implicitly_declared_members): Use
2649 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2650 * method.c (lazily_declare_fn): Clear
2651 CLASSTYPE_LAZY_ASSIGNMENT_OP.
2652 * search.c (lookup_fnfields_1): Check it.
2653
2654 2004-07-19 Nathan Sidwell <nathan@codesourcery.com>
2655
2656 * class.c (add_method): Delay adding the slot until the end.
2657 (determine_primary_base): Adjust VEC_iterate invokation.
2658 (resort_type_method_vec, finish_struct_methods, warn_hidden,
2659 walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases,
2660 build_vtbl_initializer): Likewise.
2661 * init.c (sort_mem_initializers, build_delete, push_base_cleanups,
2662 build_vbase_delete): Likewise.
2663 * method.c (do_build_copy_constructor): Likewise.
2664 * name-lookup.c (new_class_binding, print_binding_level,
2665 poplevel_class, store_class_bindings, push_to_top_level,
2666 pop_from_top_level): Likewise.
2667 * pt.c (check_explicit_specialization): Likewise.
2668 * search.c (lookup_conversion_operator, lookup_fnfields_1,
2669 get_pure_virtuals, add_conversions, dfs_check_overlap,
2670 binfo_for_vbase): Likewise.
2671
2672 2004-07-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2673
2674 PR c++/12170
2675 * pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only
2676 innermost set of template arguments during deduction. Simplify.
2677
2678 2004-07-19 Joseph S. Myers <jsm@polyomino.org.uk>
2679
2680 * typeck.c (build_modify_expr, build_x_modify_expr): Set
2681 TREE_NO_WARNING on assignments with an operator other than '='.
2682
2683 2004-07-10 Steven Bosscher <stevenb@suse.de>
2684 Joseph S. Myers <jsm@polyomino.org.uk>
2685
2686 * cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove.
2687 * decl2.c (grokfield): Don't check current_class_depth via
2688 unused TREE_COMPLEXITY.
2689 * semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING
2690 to avoid the missing parentheses warning.
2691 Don't set C_SET_EXP_ORIGINAL_CODE.
2692
2693 2004-07-18 Mark Mitchell <mark@codesourcery.com>
2694
2695 * tree.c (no_linkage_helper): Remove.
2696 (no_linkage_check): Don't use walk_tree_without_duplicates.
2697
2698 * mangle.c (write_expression): Issue a sorry for zero-operand
2699 functional casts.
2700
2701 2004-07-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2702
2703 PR c++/13092
2704 * init.c (build_offset_ref): Build SCOPE_REF with non-null
2705 TREE_TYPE for non-dependent names.
2706 * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
2707 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
2708 unknown_type_node as its TREE_TYPE.
2709 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
2710 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
2711 (dump_expr) <SCOPE_REF case>: Likewise.
2712
2713 2004-07-17 Jason Merrill <jason@redhat.com>
2714
2715 PR c++/16115
2716 * call.c (type_passed_as): Make the invisible reference type
2717 __restrict.
2718 * cp-gimplify.c (gimplify_cleanup_stmt): Rename to
2719 cp_genericize_r. Handle invisible reference lowering.
2720 (is_invisiref_parm): New fn.
2721 (cp_genericize): Adjust the types of invisible reference parms.
2722 Don't repeat the walk for clones.
2723 * decl.c (store_parm_decls): Don't generate any code for clones.
2724
2725 2004-07-17 Joseph S. Myers <jsm@polyomino.org.uk>
2726
2727 * cp-tree.h (builtin_function): Declare.
2728
2729 2004-07-16 Mark Mitchell <mark@codesourcery.com>
2730
2731 * class.c (finish_struct_methods): Remove unncessary code.
2732 (add_implicitly_declared_members): Create declarations for default
2733 constructors and copy constructors lazily.
2734 * cp-tree.h (lang_type_class): Remove lazy_default_ctor and
2735 lazy_copy_ctor.
2736 (CLASSTYPE_LAZY_DEFAULT_CTOR): New macro.
2737 (CLASSTYPE_LAZY_COPY_CTOR): Likewise.
2738 * decl2.c (check_classfn): Robustify.
2739 (locate_dtor): Handle empty CLASSTYPE_METHOD_VEC.
2740 (locate_ctor): Handle lazy default constructors.
2741 (locate_copy): Handle lazy copy constructors.
2742 (implicitly_declare_fn): Make sure we're looking at the
2743 TYPE_MAIN_VARIANT for a class before creating functions. Don't
2744 set TYPE_HAS_CONSTRUCTOR.
2745 (lazily_declare_fn): New function.
2746 * name-lookup.c (constructor_name_full): Simplify.
2747 * search.c (lookup_fnfields_1): Lazily create methods, as
2748 necessary.
2749 (lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC.
2750
2751 2004-07-16 Steven Bosscher <stevenb@suse.de>
2752
2753 * cp-tree.h (struct lang_type): Don't have three GTY options on a
2754 single bit GTY desc.
2755
2756 2004-07-16 Richard Henderson <rth@redhat.com>
2757
2758 * cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die.
2759 * cp-tree.h (cp_copy_res_decl_for_inlining): Remove.
2760 * tree.c (cp_copy_res_decl_for_inlining): Remove.
2761
2762 2004-07-16 Nathan Sidwell <nathan@codesourcery.com>
2763
2764 * class.c (finish_struct_bits): Use for loop.
2765 (propagate_binfo_offsets): Do primary binfo outside of loop.
2766
2767 PR c++/16583
2768 * dump.c (cp_dump_tree): Don't dump the bases if there's no
2769 binfo.
2770
2771 * pt.c (tsubst) <TREE_BINFO case>: We should never get here.
2772
2773 2004-07-15 Mark Mitchell <mark@codesourcery.com>
2774
2775 * cp-tree.h (lang_type_class): Remove has_real_assign_ref and
2776 has_abstract_assign_ref. Make methods a VEC(tree) *.
2777 (TYPE_HAS_CONST_ASSIGN_REF): Add documentation.
2778 (CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC.
2779 (CLASSTYPE_DESTRUCTORS): Likewise.
2780 (TYPE_HAS_REAL_ASSIGN_REF): Remove.
2781 (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
2782 (add_method): Change prototoype.
2783 * class.c (add_method): Remove error_p parameter. Adjust for
2784 changes to CLASSTYPE_METHOD_VEC.
2785 (handle_using_decl): Adjust call to add_method.
2786 (maybe_warn_about_overly_private_class): Adjust for
2787 changes to CLASSTYPE_METHOD_VEC.
2788 (resort_type_method_vec): Likewise.
2789 (finish_struct_methods): Likewise.
2790 (check_for_override): Likewise.
2791 (warn_hidden): Likewise.
2792 (add_implicitly_declared_members): Defer creation of assignment
2793 operators. Adjust call to add_method.
2794 (clone_function_decl): Adjust call to add_method.
2795 (check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF.
2796 (finish_struct_1): Use CLASSTYPE_DESTRUCTORS.
2797 * decl.c (grok_special_member_properties): Don't set
2798 TYPE_HAS_ABSTRACT_ASSIGN_REF.
2799 * decl2.c (check_classfn): Adjust for
2800 changes to CLASSTYPE_METHOD_VEC.
2801 * method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS.
2802 (locate_ctor): Use CLASSTYPE_CONSTRUCTORS.
2803 (locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC.
2804 (implicitly_declare_fn): Set DECL_SOURCE_LOCATION. Do not call
2805 cp_finish_decl.
2806 * pt.c (check_explicit_specialization): Adjust for
2807 changes to CLASSTYPE_METHOD_VEC.
2808 (instantiate_class_template): Do not set
2809 TYPE_HAS_ABSTRACT_ASSIGN_REF.
2810 * ptree.c (cxx_print_type): Don't try to print
2811 CLASSTYPE_METHOD_VEC.
2812 * rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS.
2813 * search.c (lookup_field_r): Adjust for
2814 changes to CLASSTYPE_METHOD_VEC.
2815 (lookup_fnfields): Likewise.
2816 (lookup_conversion_operator): Likewise.
2817 (lookup_fnfields_1): Likewise. Create assignment operators
2818 lazily.
2819 (look_for_overrides_here): Adjust for
2820 changes to CLASSTYPE_METHOD_VEC.
2821 (add_conversions): Likewise.
2822 * semantics.c (finish_member_declaration): Adjust call to add_method.
2823
2824 2004-07-15 Jason Merrill <jason@redhat.com>
2825
2826 * cp-lang.c (cxx_types_compatible_p): To the middle-end,
2827 references and pointers are compatible.
2828
2829 2004-07-15 Nathan Sidwell <nathan@codesourcery.com>
2830
2831 * decl.c (xref_basetypes): Refactor.
2832 * tree.c (copy_base_binfos): Replace with ...
2833 (copy_binfo): ... this. Deep copy the given binfo, (not the just
2834 bases of the given base).
2835 * cp-tree.h (copy_base_binfo): Remove.
2836 (copy_binfo): Declare.
2837
2838 2004-07-15 Mark Mitchell <mark@codesourcery.com>
2839
2840 * name-lookup.c (set_inherited_value_binding_p): Add class_type
2841 parameter.
2842 (get_class_binding): Adjust.
2843 (push_class_level_binding): Don't use set_inherited_value_binding_p.
2844
2845 2004-07-15 Nathan Sidwell <nathan@codesourcery.com>
2846
2847 * class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here.
2848 * decl.c (xref_basetypes): Set it here.
2849
2850 * class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here.
2851 Don't check for incomplete base.
2852 (get_vfield_name): Simplify while loop.
2853 * decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here.
2854
2855 2004-07-14 Mark Mitchell <mark@codesourcery.com>
2856
2857 * lex.c (cxx_make_type): Remove call to get_pointer_type.
2858
2859 * cp-tree.h (IDENTIFIER_VALUE): Remove.
2860 (BINFO_PUSHDECLS_MARKED): Likewise.
2861 (maybe_inject_for_scope_var): Likewise.
2862 (push_class_decls): Likewise.
2863 * name-lookup.h (push_class_binding): Remove.
2864 (innermost_non_namespace_value): New function.
2865 (outer_binding): Likewise.
2866 * class.c (add_method): Push bindings before adding to
2867 TYPE_METHODS.
2868 (restore_class_cache): Do not restore class_shadowed.
2869 (pushclass): Do not add USING_DECLs. Do not call
2870 push_class_decls.
2871 * config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c.
2872 * decl.c (pushdecl): Use outer_binding.
2873 (poplevel): Set the scope for an out-of-scope for-loop declaration
2874 appropriately.
2875 (cp_finish_decl): Don't call maybe_inject_for_scope_var.
2876 * name-lookup.c (new_class_binding): New function.
2877 (push_binding): Use it.
2878 (pushdecl): Use innermost_non_namespace_value.
2879 (maybe_inject_for_scope_var): Remove.
2880 (push_class_binding): Remove.
2881 (set_inherited_value_binding_p): New function.
2882 (get_class_binding): New function.
2883 (push_class_level_binding): Assert that the current_class_type is
2884 being defined.
2885 (outer_binding): New function.
2886 (innermost_non_namespace_value): Likewise.
2887 (lookup_name_real): Use outer_binding.
2888 (lookup_name_current_level): Ignore out-of-scope variables.
2889 * pt.c (check_template_shadow): Use innermost_non_namespace_value.
2890 (lookup_template_class): Likewise.
2891 * search.c (dfs_push_type_decls): Remove.
2892 (dfs_push_decls): Likewise.
2893 (setup_class_bindings): Likewise.
2894 (lookup_field_1): Handle USING_DECLs from dependent scopes.
2895 (marked_pushdecls_p): Remove.
2896 (unmarked_pushdecls_p): Remove.
2897 (marked_identifiers): Remove.
2898 (setup_class_bindings): Remove.
2899 (dfs_push_type_decls): Remove.
2900 (dfs_push_decls): Remove.
2901 (push_class_decls): Remove.
2902
2903 2004-07-13 Mark Mitchell <mark@codesourcery.com>
2904
2905 PR c++/16518
2906 PR c++/16337
2907 * decl.c (grokvardecl): Make declspecs parameter const.
2908 (grokdeclarator): Likewise. Adjust accordingly.
2909 * decl.h (grokdeclarator): Adjust declaration.
2910 * parser.c (cp_parser_init_declarator): Do not clear
2911 decl_specifiers->attributes.
2912
2913 * cp-tree.h (lang_identifier): Remove class_value.
2914 (IDENTIFIER_CLASS_VALUE): Remove.
2915 (pop_class_decls): Likewise.
2916 (init_search_processing): Likewise.
2917 * class.c (handle_using_decl): Use lookup_member, not
2918 IDENTIFIER_CLASS_VALUE.
2919 (restore_class_cache): New function, split out from ...
2920 (pushclass): ... here. Do not call clear_identifier_class_values.
2921 (invalidate_class_lookup_cache): Do not clear
2922 IDENTIFIER_CLASS_VALUE.
2923 (popclass): Do not call pop_class_decls.
2924 (maybe_note_name_used_in_class): Do not save names looked up after
2925 the class is complete. Use lookup_member, not
2926 IDENTIFIER_CLASS_VALUE.
2927 * config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
2928 * decl.c (cxx_init_decl_processing): Do not call
2929 init_search_processing.
2930 * method.c (do_build_copy_constructor): Remove unnecessary code.
2931 (do_build_assign_ref): Likewise.
2932 * name-lookup.c (pushdecl): Use lookup_member, not
2933 IDENTIFIER_CLASS_VALUE.
2934 (set_identifier_type_value_with_scope): Set TREE_TYPE on the
2935 type_shadowed list.
2936 (poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
2937 (push_class_binding): Do not set it.
2938 (clear_identifier_class_values): Remove.
2939 (push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
2940 (store_binding): Do not save it.
2941 (pop_from_top_level): Do not restore it.
2942 * name-lookup.h (cxx_saved_binding): Remove class_value.
2943 (clear_identifier_class_values): Remove.
2944 * ptree.c (cxx_print_identifier): Do not print
2945 IDENTIFIER_CLASS_VALUE.
2946 * search.c (search_obstack): Remove.
2947 (push_stack_level): Remove.
2948 (pop_stack_level): Remove.
2949 (search_level): Remove.
2950 (search_stack): Remove.
2951 (lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
2952 (setup_class_bindings): Use IDENTIFIER_MARKED, not
2953 IDENTIFIER_CLASS_VALUE.
2954 (marked_identifiers): New variable.
2955 (push_class_decls): Clear IDENTIFIER_MARKED.
2956 (pop_class_decls): Don't call pop_search_level.
2957 (init_search_processing): Remove.
2958
2959 2004-07-12 Mark Mitchell <mark@codesourcery.com>
2960
2961 * cp-tree.h (get_aggr_typedef): Remove.
2962 * init.c (get_aggr_typedef): Likewise.
2963
2964 * name-lookup.c (push_class_level_binding): Simplify.
2965
2966 2004-07-12 Andrew Pinski <apinski@apple.com>
2967
2968 PR c++/16475
2969 Revert:
2970 2004-07-07 H.J. Lu <hongjiu.lu@intel.com>
2971 PR c++/16276
2972 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
2973 is not public.
2974
2975 2004-07-12 Eric Christopher <echristo@redhat.com>
2976
2977 * parser.c (cp_parser_class_head): Remove unused variable.
2978
2979 2004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2980
2981 * decl.c (grok_op_properties): Reject [de-]allocation functions
2982 declared in a namespace, or declared as static.
2983
2984 2004-07-12 Nathan Sidwell <nathan@codesourcery.com>
2985
2986 * cp-tree.h (make_binfo): Remove.
2987 * decl.c (xref_basetypes): Use make_tree_binfo directly.
2988 * tree.h (copy_base_binfos): Likewise.
2989 (make_binfo): Remove.
2990
2991 * call.c (build_user_type_conversion_1, build_new_op,
2992 check_constructor_callable, build_temp,
2993 perform_direct_initialization_of_possible): Pass type directly to
2994 lookup_fnfields & build_special_member_call.
2995 (build_special_member_call): Accept a type, and complete it.
2996 * class.c (finish_stuct_bits): Copy the BINFOs here.
2997 * cvt.c (ocp_convert): Pass type directly to
2998 build_special_member_call.
2999 * decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
3000 (xref_basetypes): Allocate the binfo here. Adjust.
3001 * init.c (build_init, build_new_1): Pass type directly to
3002 build_special_member_call.
3003 * lex.c (cxx_make_type): Do not allocate binfo here.
3004 * name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
3005 * parser.c (cp_parser_class_head): Always call xref_basetypes.
3006 * pt.c (instantiate_class_template): Likewise. Inhibit access
3007 checking for template friends.
3008 * ptree.c (cxx_print_type): Adjust record printing.
3009 * search.c (lookup_base): When taking a type, complete it before
3010 looking for a binfo.
3011 (lookup_member): Delay completing a type.
3012 (push_class_decls): Don't walk an incomplete type.
3013 (lookup_conversions): Likewise.
3014 * semantics.c (finish_stmt_expr_expr): Pass type directly to
3015 build_special_member_call.
3016 * tree.c (copy_base_binfos): Adjust.
3017 (make_binfo): Likewise.
3018 * typeck.c (build_modify_expr): Pass type directly to
3019 build_special_member_call.
3020 * typeck2.c (process_init_constructor): Check a binfo exists.
3021 (build_m_component_ref): Allow accessing an incomplete type.
3022 (build_functional_cast): Pass type directly to
3023 build_special_member_call.
3024
3025 2004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3026
3027 PR c++/2204
3028 * config-lang.in (gtfiles): Add typeck2.c.
3029 * Make-lang.in: Tweak typeck2.c dependencies, and add rule for
3030 gt-cp-typeck2.h.
3031 * cp-tree.h: Declare complete_type_check_abstract.
3032 * typeck2.c (pat_calc_hash, pat_compare,
3033 complete_type_check_abstract): New functions.
3034 (abstract_virtuals_error): If the type is abstract, register the
3035 declaration within abstract_pending_vars for further checks.
3036 Inspect also dependent types. Handle IDENTIFIER_NODEs as decl.
3037 * decl.c (cp_finish_decl): Do not strip array types.
3038 (create_array_type_for_decl): Check for abstractness of the element
3039 type.
3040 (complete_vars): Call complete_type_check_abstract.
3041 * class.c (finish_struct): Prepare a list of virtual functions for
3042 template types, and call complete_vars on it to check for abstractness.
3043
3044 2004-07-12 Paolo Bonzini <bonzini@gnu.org>
3045
3046 PR tree-optimization/14107
3047 * decl.c (finish_function): Remove temporary band-aid.
3048
3049 2004-07-11 Mark Mitchell <mark@codesourcery.com>
3050
3051 * call.c (build_operator_new_call): Avoid using push_to_top_level.
3052 (build_new_op): Adjust call to lookup_function_nonclass.
3053 * name-lookup.c (identifier_type_value): Adjust call to
3054 lookup_name_real.
3055 (lookup_name_real): Add block_p parameter.
3056 (lookup_name_nonclass): Adjust call to lookup_name_real.
3057 (lookup_function_nonclass): Likewise.
3058 (lookup_name): Likewise.
3059 * name-lookup.h (lookup_name_real): Change prototype.
3060 (lookup_name_nonclass): Likewise.
3061 * parser.c (cp_parser_lookup_name): Likewise.
3062
3063 * cp-tree.h (saved_scope): Make old_bindings a vector.
3064 (unuse_fields): Remove.
3065 * name-lookup.h (cxx_saved_binding): Define it.
3066 * class.c (pushclass): Don't use unuse_fields.
3067 * name-lookup.c (cxx_saved_binding_make): Remove.
3068 (store_binding): Add new bindings to a vector, using an
3069 accumulator style, rather than adding them to a list.
3070 (store_bindings): Adjust accordingly.
3071 (store_class_bindings): Likewise.
3072 (push_to_top_level): Likewise.
3073 (pop_from_top_level): Likewise.
3074 * optimize.c (maybe_clone_body): Must push_to_top_level and
3075 pop_from_top_level calls outside of loop.
3076 * parser.c (cp_parser_class_specifier): Move push_scope/pop_scope
3077 calls here from cp_parser_late_parsing_default_args.
3078 (cp_parser_save_default_args): Record the class type in which the
3079 function is declared.
3080 (cp_parser_late_parsing_default_args): Do not call
3081 push_nested_class/pop_nested_class.
3082 * search.c (dfs_unuse_fields): Remove.
3083 (unuse_fields): Remove.
3084
3085 2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
3086
3087 * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP, LANG_HOOKS_PUSHLEVEL,
3088 LANG_HOOKS_POPLEVEL, LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Remove.
3089 * cp-tree.h (poplevel): Declare.
3090 (set_block): Remove.
3091 * decl.c (set_block): Remove.
3092
3093 2004-07-10 Mike Stump <mrs@apple.com>
3094
3095 * decl2.c (import_export_class): Never export/import vtables
3096 with inline key functions.
3097
3098 2004-07-09 Steven Bosscher <stevenb@suse.de>
3099
3100 * typeck.c (c_expand_asm_operands): Remove.
3101
3102 2004-07-09 Mike Stump <mrs@apple.com>
3103
3104 * typeck.c (build_class_member_access_expr): Skip null deref
3105 warning when we don't dereference it.
3106
3107 2004-07-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3108
3109 PR c++/8211
3110 PR c++/16165
3111 * class.c (check_field_decls): Improve -Weffc++ warning: do not
3112 warn for pointers to functions/members, or for classes without
3113 destructors.
3114
3115 2004-07-08 Mark Mitchell <mark@codesourcery.com>
3116
3117 * name-lookup.h (struct cp_binding_level): Update documentation
3118 for class_shadowed.
3119
3120 2004-07-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3121
3122 PR c++/16169
3123 * typeck.c (check_return_expr): Improve -Weffc++ warning: handle
3124 returning CALL_EXPR, and non-reference return type.
3125
3126 2004-07-08 Nathan Sidwell <nathan@codesourcery.com>
3127
3128 * name-lookup.c (push_binding): Use VEC_reserve.
3129
3130 2004-07-08 Richard Henderson <rth@redhat.com>
3131
3132 * cp-tree.h (expand_eh_spec_block): Remove.
3133
3134 2004-07-07 Mark Mitchell <mark@codesourcery.com>
3135
3136 * cp-tree.h (saved_scope): Remove x_previous_class_type and
3137 x_previous_class_values; add x_previous_class_level.
3138 (previous_class_type): Remove.
3139 (previous_class_values): Remove.
3140 (previous_class_level): New macro.
3141 * class.c (pushclass): Restore the identifier cache more
3142 expeditiously.
3143 (invalidate_class_lookup_cache): Use vector for class_shadowed and
3144 previous_class_values.
3145 * decl.c (poplevel): Likewise.
3146 * name-lookup.c (cxx_binding_init): New function.
3147 (cxx_binding_make): Use it.
3148 (push_binding): For a binding in a class level, use a vector of
3149 cp_class_binding nodes.
3150 (push_binding_level): New function.
3151 (begin_scope): Use it.
3152 (leave_scope): Do not put class binding levels on the free list.
3153 (print_binding_level): Adjust for the fact that class_shadowed is
3154 a vector.
3155 (poplevel_class): Likewise.
3156 (clear_identifier_class_values): Likewise.
3157 (push_class_level_binding): Likewise.
3158 (set_class_shadows): Remove.
3159 (store_binding): New function.
3160 (store_class_bindings): New function.
3161 (push_to_top_level): Use store_class_bindings as appropriate.
3162 (pop_from_top_level): Use previous_class_level, not
3163 previous_class_type.
3164 * name-lookup.h (cp_class_binding): New type.
3165 (cp_binding_level): Use a vector object for class_shadowed.
3166 (push_binding_level): Declare.
3167 (set_class_shadows): Remove.
3168
3169 2004-07-07 Andrew Pinski <apinski@apple.com>
3170
3171 * class.c (instantiate_type): BUFFER_REF is dead.
3172 * lex.c (init_operators): IN_EXPR is dead.
3173
3174 2004-07-07 Jason Merrill <jason@redhat.com>
3175
3176 PR c++/16334
3177 * call.c (build_new_op): Give overload warnings for built-in
3178 candidates.
3179
3180 2004-07-07 H.J. Lu <hongjiu.lu@intel.com>
3181
3182 PR c++/16276
3183 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
3184 is not public.
3185
3186 2004-07-07 Nathan Sidwell <nathan@codesourcery.com>
3187
3188 * cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove.
3189 * class.c (build_primary_vtable, check_bases,
3190 determine_primary_base, finish_struct_bits,
3191 maybe_warn_about_overly_private_class, dfs_find_final_overrider_q,
3192 get_basefndecls, warn_hidden, walk_subobject_offsets,
3193 build_base_fields, create_vtable_ptr, propagate_binfo_offsets,
3194 layout_virtual_bases, end_of_class, warn_about_ambiguous_bases,
3195 finish_struct_1, get_vfield_name, contains_empty_class_p,
3196 dump_class_hierarchy_r, finish_vtbls, build_vtt_inits,
3197 dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits,
3198 add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust
3199 BINFO macros.
3200 * decl.c (xref_basetypes): Likewise.
3201 * dump.c (cp_dump_tree): Likewise.
3202 * error.c (dump_expr): Likewise.
3203 * init.c (sort_mem_initializers, expand_member_init,
3204 push_base_cleanups): Likewise.
3205 * method.c (do_build_copy_constructor, do_build_assign_reg,
3206 synthesize_exception_spec): Likewise.
3207 * name-lookup.c (arg_assoc_class): Likewise.
3208 * pt.c (instantiate_class_template, tsubst,
3209 get_template_base_recursive): Likewise.
3210 * ptree.c (cxx_print_type): Likewise.
3211 * rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
3212 * search.c (lookup_base_r, dynamic_cast_base_recurse,
3213 dfs_access_in_type, access_in_type, lookup_field_queue_p,
3214 bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp,
3215 marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp,
3216 dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet,
3217 binfo_for_vtable, copied_binfo, original_binfo): Likewise
3218 * tree.c (copy_base_binfos, make_binfo): Likewise.
3219 * typeck.c (commmon_base_type): Likewise
3220 * typeck2.c (process_init_constructor): Likewise
3221
3222 2004-07-06 Joseph S. Myers <jsm@polyomino.org.uk>
3223
3224 * decl.c (check_tag_decl): Name redeclared type in diagnostic.
3225
3226 2004-07-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3227
3228 PR c++/3671
3229 * pt.c (convert_nontype_argument): Disallow conversions between
3230 different enumeration types.
3231
3232 2004-07-06 Nathan Sidwell <nathan@codesourcery.com>
3233
3234 * cp-tree.h (BINFO_MARKED): Remove.
3235 (BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED,
3236 BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P,
3237 BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n.
3238 (SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P.
3239 * class.c (build_base_path): Use BINFO_VIRTUAL_P.
3240 (mark_primary_bases, determine_primary_base, base_derived_from,
3241 dfs_find_final_overrider, dfs_find_final_overrider_q,
3242 dfs_find_inal_overrider_post, update_vtable_entry_for_fn,
3243 dfs_modify_vtables, walk_subobject_offsets,
3244 layout_nonempty_base_or_field, build_base_field,
3245 build_base_fields, propagate_binfo_offsets, layout_virtual_bases,
3246 end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable,
3247 finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits,
3248 build_ctor_vtbl_group, accumulate_vtble_inits,
3249 dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries,
3250 build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r,
3251 add_vcall_offset_vtbl_entries_1): Likewise.
3252 * decl.c (xref_basetypes): Incomming virtual base indicated by
3253 TREE_TYPE. Adjust.
3254 * dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P.
3255 * init.c (finish_init_stmts, sort_mem_initializers,
3256 emit_mem_initializers, build_vtble_address, expand_member_init,
3257 push_base_cleanups): Likewise.
3258 * method.c (do_build_copy_constructor): Likewise.
3259 * pt.c (instantiate_class_template,
3260 get_template_base_recursive): Likewise.
3261 * rtti.c (dfs_class_hint_mark, get_pseudo_ti_init,
3262 get_pseudo_ti_desc): Likewise.
3263 * search.c (lookup_base_r, dynamic_cast_base_recurse,
3264 binfo_from_vbase, binfo_via_virtual, copied_binfo,
3265 original_binfo): Likewise.
3266 * semantics.c (finish_base_specifier): Virtualness is indicated
3267 by TREE_TYPE.
3268 * tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P.
3269
3270 2004-07-06 Mark Mitchell <mark@codesourcery.com>
3271
3272 Revert:
3273 2004-06-24 Jason Merrill <jason@redhat.com>
3274 PR c++/16115
3275 * decl.c (grokparms): Give the PARM_DECL reference type if the
3276 parameter is passed by invisible reference.
3277
3278 2004-07-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3279
3280 * cp-lang.c (cp_var_mod_type_p): Add extra arg.
3281 * decl.c (grokdeclarator): Extra arg to variably_modified_type_p.
3282 * pt.c (check_instantiated_args, unify): Likewise.
3283
3284 2004-07-05 Phil Edwards <phil@codesourcery.com>
3285
3286 * Make-lang.in (check-c++, lang_checks): Add some comments.
3287
3288 2004-07-05 Zack Weinberg <zack@codesourcery.com>
3289
3290 * cp-mudflap.c: Delete file.
3291 * Makefile.in: Remove all references to cp-mudflap.o.
3292
3293 2004-07-05 Zack Weinberg <zack@codesourcery.com>
3294
3295 * decl.c (cxx_init_decl_processing): Call
3296 build_common_tree_nodes before creating the global NAMESPACE_DECL.
3297
3298 2004-07-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3299
3300 PR c++/2518
3301 * call.c (build_operator_new_call): Look only at global scope.
3302
3303 2004-07-05 Nathan Sidwell <nathan@codesourcery.com>
3304
3305 * call.c (enforce_access): Expect TREE_BINFO.
3306 * class.c (binfo_ctor_vtable): Check TREE_BINFO.
3307 * cp-tree.h (RECORD_OR_UNION_TYPE_CHECK): Remove.
3308 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
3309 Adjust.
3310 (BINFO_LANG_ELTS): Remove.
3311 (BINFO_LANG_SLOTS): New.
3312 (TYPE_RAISES_EXCEPTIONS, ENUM_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
3313 (CLASSTYPE_TEMPLATE_INFO): Adjust.
3314 * pt.c (tsubst): Split TREE_BINFO case from TREE_VEC case.
3315 * search.c (lookup_member): Check TREE_BINFO.
3316 * semantics.c (perform_or_defer_access_check): Likewise.
3317 (check_accessibility_of_qualified_id): Check
3318 deferred_access_no_check.
3319 * tree.c (make_binfo): Use make_tree_binfo.
3320
3321 2004-07-04 Mark Mitchell <mark@codesourcery.com>
3322
3323 * method.c (implicitly_declare_fn): Set linkage of generated
3324 functions.
3325
3326 2004-07-04 Richard Henderson <rth@redhat.com>
3327
3328 * typeck.c (cxx_mark_addressable): Don't put_var_into_stack.
3329
3330 2004-07-03 Scott Brumbaugh <scottb.lists@verizon.net>
3331
3332 PR c++/3761
3333 * name-lookup.c (push_class_level_binding): Don't pass a
3334 TREE_LIST of ambiguous names to check_template_shadow as it
3335 only handles declarations. Instead, pull the declaration
3336 out and pass that.
3337
3338 2004-07-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
3339
3340 PR c++/14971
3341 * pt.c (check_explicit_specialization): Clarify error message.
3342
3343 2004-07-02 Richard Henderson <rth@redhat.com>
3344
3345 * tree.c (cp_unsave_r): Update remap_save_expr call.
3346
3347 2004-07-02 Mark Mitchell <mark@codesourcery.com>
3348
3349 PR c++/16240
3350 * mangle.c (write_template_arg): Correct mangling.
3351
3352 PR c++/16297
3353 * decl.c (grokdeclarator): Robustify.
3354
3355 2004-07-01 Richard Henderson <rth@redhat.com>
3356
3357 * class.c (fixed_type_or_null): Don't handle RTL_EXPR.
3358 * method.c (synthesize_method): Don't clear_last_expr.
3359 * name-lookup.c (maybe_push_cleanup_level): Likewise.
3360
3361 2004-07-01 Nick Clifton <nickc@redhat.com>
3362
3363 * decl2.c (import_export_class): Invoke the
3364 import_export_class field in the gcc_target structure if it is not
3365 empty.
3366
3367 2004-06-30 Richard Henderson (rth@redhat.com>
3368
3369 * decl.c (start_preparsed_function): Don't set immediate_size_expand.
3370 * method.c (use_thunk): Likewise.
3371
3372 2004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
3373
3374 * call.c (build_over_call), typeck.c (build_function_call): Call
3375 check_function_arguments instead of check_function_format.
3376
3377 2004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
3378
3379 * call.c (build_over_call), typeck.c (build_function_call): Update
3380 calls to check_function_format.
3381
3382 2004-06-30 Richard Henderson <rth@redhat.com>
3383
3384 * call.c (build_over_call): Use __builtin_memcpy for copying
3385 CLASS_AS_BASE rather than funny casting.
3386
3387 2004-06-30 Richard Henderson <rth@redhat.com>
3388
3389 * init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and
3390 TYPE_SIZE_UNIT of full_type.
3391
3392 2004-06-30 Per Bothner <per@bothner.com>
3393
3394 Conditionally compile support for --enable-mapped_location.
3395 * decl.c (pop_label): Handle (imperfectly) USE_MAPPED_LOCATION case.
3396 * decl2.c: If USE_MAPPED_LOCATION, don't do some line number
3397 adjustments - which I don't understand.
3398 * error.c (dump_decl): Rename "<interrnal>" to "<built-in>".
3399 * error.c: Use LOCATION_FILE and EXPR_LOCATION macros.
3400 (print_instantiation_partial_context): Use expand_location.
3401 * decl.c (duplicate_decl): Use new DECL_IS_BUILTIN macro.
3402 * name-lookup.c: Likewise.
3403 * lex.c (cxx_init): Likewise. Also use BUILTINS_LOCATION.
3404 * name-lookup.c: Use input_line macro.
3405 * parser.c (cp_lexer_get_preprocessor_token): Use UNKNOWN_LOCATION.
3406 (cp_parser_statement): Rename locaal variable statement_locus to
3407 statement_location and use SET_EXPR_LOCATION macro.
3408 * pt.c: Handle USE_MAPPED_LOCATION case. Use new macros.
3409 * tree.c (cp_walk_subtrees): Likewise.
3410
3411 2004-06-29 Per Bothner <per@bothner.com>
3412
3413 * tree.c (build_min_nt, build_min, build_min_non_dep):
3414 Don't set TREE_COMPLEXITY from input_line.
3415
3416 2004-06-29 Paul Brook <paul@codesourcery.com>
3417
3418 * init.c: Include target.h.
3419 (get_cookie_size): Remove and replace with target hook.
3420 Update callers.
3421 (build_new_1): Store the element size in the cookie.
3422
3423 2004-06-29 Nathan Sidwell <nathan@codesourcery.com>
3424
3425 PR c++/16260
3426 * parser.c (cp_parser_template_declaration_after_export): Disable
3427 access checks here ...
3428 (cp_parser_class_specifier): ... not here.
3429
3430 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3431
3432 * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
3433 VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
3434 BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
3435 TREE_CHECK macro.
3436
3437 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3438
3439 * cp-tree.h (struct deferred_access): Move to ...
3440 * semantics.c (struct deferred_access): ... here. Adjust.
3441 (deferred_access_stack): Make a VEC(deferred_access),
3442 (deferred_access_free_list): Remove.
3443 (deferred_access_no_check): New.
3444 (push_deferring_access_checks, resume_deferring_access_checks,
3445 stop_deferring_access_checks, pop_deferring_access_checks,
3446 get_deferred_access_checks, pop_to_parent_deferring_access_checks,
3447 perform_deferred_access_checks, perform_or_defer_access_check): Adjust.
3448
3449 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3450
3451 PR c++/16174
3452 * call.c (build_temp): Declare.
3453 (check_constructor_callable): New.
3454 (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
3455 CONSTRUCTOR_CALLABLE.
3456 (convert_like_real, initialize_reference): Use
3457 check_constructor_callable.
3458 * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
3459 (LOOKUP_*): Renumber.
3460
3461 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3462
3463 * friend.c (add_friend): Only perform access checks when context
3464 is a class.
3465 * lex.c (cxx_make_type): Only create a binfo for aggregate types.
3466 * parser.c (cp_parser_class_specifier): Disable access checks here
3467 when parsing the body of a templated class.
3468 * semantics.c (perform_or_defer_access_checks): Reorder to allow
3469 NULL binfos when not checking access.
3470
3471 2004-06-28 Nathan Sidwell <nathan@codesourcery.com>
3472
3473 Use vector API for vbase list.
3474 * cp-tree.h: Include vec.h
3475 (DEF_VEC_P (tree)): New type.
3476 (struct lang_type_class): Change vbase's member type.
3477 (binfo_for_vbase): Declare.
3478 * class.c (determine_primary_base, base_derived_from,
3479 update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class,
3480 warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits,
3481 build_vtbl_initializer): Adjust.
3482 * decl.c (xref_basetypes): Adjust, accumulate upper bound of
3483 vbases.
3484 * init.c (sort_mem_initializers, expand_member_init,
3485 push_base_cleanups): Adjust.
3486 * method.c (do_build_copy_constructor): Adjust.
3487 * search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust.
3488 (binfo_for_vbase): New.
3489 * tree.c (copy_base_binfos): Adjust.
3490
3491 2004-06-28 Mark Mitchell <mark@codesourcery.com>
3492
3493 * parser.c (cp_parser_set_decl_spec_type): Fix thinko.
3494
3495 2004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
3496
3497 PR c++/14123
3498 * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
3499 paranthesis in case of pointers to array members.
3500 * error.c (dump_type_prefix): Likewise.
3501 (dump_type_suffix): Maybe issue a whitespace when printing
3502 ARRAY_TYPE.
3503
3504 2004-06-27 Mark Mitchell <mark@codesourcery.com>
3505
3506 PR c++/16193
3507 * parser.c (cp_parser_set_decl_spec_type): Refine test for
3508 redefinition of built-in types.
3509
3510 2004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
3511
3512 * error.c (pp_template_argument_list_start): Remove.
3513 (pp_template_argument_list_end): Likewise.
3514 (pp_separate_with_comma): Use pp_cxx_separate_with.
3515 (reinit_global_formatting_buffer): Remove.
3516 (pp_non_consecutive_character): Likewise.
3517 (dump_scope): Use pp_cxx_colon_colon.
3518 (dump_template_parameter): Use pp_cxx_identifier,
3519 pp_cxx_tree_identifier and pp_cxx_whitespace.
3520 (dump_templat_bindings): Replace use of pp_string with sequence
3521 of pp_cxx_whitespace and pp_equal.
3522 (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
3523 pp_cxx_colon_colon, pp_cxx_whitespace throughout. Don't set
3524 padding here.
3525 (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
3526 (dump_type_prefix): Don't set padding. Use pp_cxx_whitespace,
3527 pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
3528 (dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket,
3529 pp_cxx_right_bracket, pp_cxx_identifier throughout,
3530 (dump_decl): Likewise.
3531 (dump_template_decl): Likewise.
3532 (dump_function_decl): Likewise. Set padding as appropriate.
3533 (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
3534 pp_cxx_right_paren.
3535 (dump_exception_spec): Likewise.
3536 (dump_function_name): Use pp_cxx_tree_identifier and
3537 pp_cxx_identifier.
3538 (dump_template_parms): Use pp_cxx_begin_template_argument_list and
3539 pp_cxx_end_template_argument_list.
3540 (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
3541 pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
3542 pp_cxx_whitespace throughout.
3543 (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
3544 pp_cxx_right_paren.
3545 (dump_unary_op): Likewise.
3546 (reinit_cxx_pp): New function.
3547 (type_as_string); Use it.
3548 (expr_as_string): Likewise.
3549 (decl_as_string); Likewise.
3550 (context_as_string): Likewise.
3551 (lang_decl_name): Likewise.
3552 (decl_to_string): Likewise.
3553 (expr_to_string): Likewise.
3554 (parm_to_string): Likewise.
3555 (type_to_string): Likewise.
3556 (args_to_string): Likewise.
3557 (cv_to_string): Likewise.
3558
3559 2004-06-26 Mark Mitchell <mark@codesourcery.com>
3560
3561 * cp-tree.h (cp_cv_quals): New type.
3562 (cp_declarator): Use it instead of "tree" as appropriate.
3563 (grok_method_quals): Adjust prototype.
3564 (grokclassfn): Likewise.
3565 (do_friend): Likewise.
3566 * decl.c (grokfndecl): Use cp_cv_quals, not tree.
3567 (grokdeclarator): Likewise.
3568 * decl2.c (grok_method_quals): Likewise.
3569 (grokclassfn): Likewise.
3570 * friend.c (do_friend): Likewise.
3571 * method.c (implicitly_declare_fn): Adjust call to grokclassfn.
3572 * parser.c (make_call_declarator): Use cp_cv_quals, not tree.
3573 (make_pointer_declarator): Likewise.
3574 (make_reference_declarator): Likewise.
3575 (make_ptrmem_declarator): Likewise.
3576 (cp_parser_ptr_operator): Likewise.
3577 (cp_parser_cv_qualifier_seq_opt): Likewise.
3578 (cp_parser_cv_qualifier_opt): Remove.
3579 (cp_parser_new_declarator_opt): Adjust call to
3580 cp_parser_ptr_operator.
3581 (cp_parser_conversion_declaration_opt): Likewise.
3582 (cp_parser_declarator): Use cp_cv_quals, not tree.
3583 (cp_parser_direct_declarator): Likewise.
3584
3585 2004-06-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3586
3587 * call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c:
3588 Rename DECL_STMT to DECL_EXPR.
3589 * init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise.
3590 * cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
3591 * tree.c (cp_walk_subtrees): Don't call c_walk_subtrees.
3592
3593 2004-06-26 Jan Hubicka <jh@suse.cz>
3594
3595 PR C++/14865
3596 * decl2.c (maybe_emit_vtables): Always import_export_vtable for the
3597 reachability analysis.
3598
3599 2004-06-25 Mark Mitchell <mark@codesourcery.com>
3600
3601 * cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from
3602 2004-06-23 change.
3603
3604 2004-06-25 Paul Brook <paul@codesourcery.com>
3605
3606 * decl2.c (get_guard): Call targetm.cxx.guard_type.
3607 (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.
3608
3609 2004-06-24 Mark Mitchell <mark@codesourcery.com>
3610
3611 * decl.c (grokdeclarator): Restore error messages about __thread.
3612 * parser.c (cp_parser_decl_specifier_seq): Likewise.
3613
3614 2004-06-24 Jason Merrill <jason@redhat.com>
3615
3616 PR c++/16115
3617 * decl.c (grokparms): Give the PARM_DECL reference type if the
3618 parameter is passed by invisible reference.
3619
3620 2004-06-24 Andreas Schwab <schwab@suse.de>
3621
3622 * cp-tree.h (enum cp_storage_class): Remove trailing comma.
3623
3624 2004-06-23 Mark Mitchell <mark@codesourcery.com>
3625
3626 * Make-lang.in (cp/lex.o): Do not depend on cp/lex.h.
3627 (cp/decl.o): Likewise.
3628 (cp/decl2.o): Likewise.
3629 (cp/pt.o): Likewise.
3630 (cp/semantics.o): Likewise.
3631 * config-lang.in (gtfiles): Do not reference cp/lex.h.
3632 * class.c: Do not include lex.h.
3633 (add_implicitly_declared_members): Do not use
3634 adding_implicit_members.
3635 (check_bases_and_members): Do not talk about grok_x_components.
3636 * cp/cp-tree.h (adding_implicit_members): Remove.
3637 (cp_storage_class): New type.
3638 (cp_decl_spec): Likewise.
3639 (cp_decl_specifier_seq): Likewise.
3640 (cp_parameter_declarator): Use it for the decl_specifiers field.
3641 (check_tag_decl): Adjust prototype.
3642 (shadow_tag): Likewise.
3643 (groktypename): Likewise.
3644 (start_decl): Likewise.
3645 (start_function): Likewise.
3646 (start_method): Likewise.
3647 (grok_x_components): Remove.
3648 (grokfield): Adjust prototype.
3649 (grokbitfield): Likewise.
3650 (finish_member_class_template): Remove.
3651 * decl.c: Do not include lex.h.
3652 (adding_implicit_members): Do not define.
3653 (check_tag_decl): Do not use trees to represent decl-specifiers.
3654 (shadow_tag): Likewise.
3655 (groktypename): Likewise.
3656 (start_decl): Likewise.
3657 (grokvardecl): Likewise.
3658 (grokdeclarator): Likewise.
3659 (grokparms): Likewise.
3660 (start_function): Likewise.
3661 (start_method): Likewise.
3662 * decl.h (grokdeclarator): Adjust prototype.
3663 * decl2.c: Do not include lex.h.
3664 (grok_x_components): Remove.
3665 (grokfield): Do not use trees to represent decl-specifiers.
3666 (grokbitfield): Likewise.
3667 * lex.c: Do not include lex.h.
3668 * lex.h: Remove.
3669 * parser.c: Include target.h.
3670 (clear_decl_specs): New function.
3671 (cp_parser_translation_unit): Do not use trees to represent
3672 decl-specifiers.
3673 (cp_parser_postfix_expression): Likewise.
3674 (cp_parser_new_type_id): Likewise.
3675 (cp_parser_condition): Likewise.
3676 (cp_parser_simple_declaration): Likewise.
3677 (cp_parser_decl_specifier_seq): Likewise.
3678 (cp_parser_function_specifier_opt): Likewise.
3679 (cp_parser_conversion_type_id): Likewise.
3680 (cp_parser_template_parameter): Likewise.
3681 (cp_parser_explicit_instantiation): Likewise.
3682 (cp_parser_type_specifier): Likewise.
3683 (cp_parser_simple_type_specifier): Likewise.
3684 (cp_parser_init_declarator): Likewise.
3685 (cp_parser_type_id): Likewise.
3686 (cp_parser_type_specifier_seq): Likewise.
3687 (cp_parser_parameter_declaration): Likewise.
3688 (cp_parser_member_declaration): Likewise.
3689 (cp_parser_exception_declaration): Likewise.
3690 (cp_parser_function_definition_from_specifiers_and_declarator):
3691 Likewise.
3692 (cp_parser_single_declaration): Likewise.
3693 (cp_parser_save_member_function_body): Likewise.
3694 (cp_parser_friend_p): Likewise.
3695 (cp_parser_set_storage_class): New function.
3696 (cp_parser_set_decl_spec_type): Likewise.
3697 * pt.c: Do not include lex.h.
3698 * semantics.c: Likewise.
3699 (finish_member_class_template): Remove.
3700
3701 2004-06-23 Roger Sayle <roger@eyesopen.com>
3702
3703 * call.c (build_cxx_call): Don't call expand_tree_builtin. No
3704 longer take both "args" and "convert_args" as arguments.
3705 (build_op_delete_call): Update call to build_cxx_call.
3706 (build_over_call): Likewise, update call to build_cxx_call.
3707 * cp-tree.h (build_cxx_call): Update funtion prototype.
3708 * typeck.c (build_function_call): Don't call expand_tree_builtin.
3709 * rtti.c (throw_bad_cast): Update call to build_cxx_call.
3710 (throw_bad_typeid): Likewise.
3711 (build_dynamic_cast_1): Likewise.
3712
3713 2004-06-22 Richard Henderson <rth@redhat.com>
3714
3715 * class.c (build_vfn_ref): Take a pointer not object. Build
3716 an OBJ_TYPE_REF.
3717 (cp_fold_obj_type_ref): New.
3718 * call.c (build_over_call): Update build_vfn_ref call.
3719 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
3720 * cp-tree.h (cp_fold_obj_type_ref): Declare.
3721
3722 2004-06-21 Jason Merrill <jason@redhat.com>
3723
3724 PR c++/16112
3725 * cp-gimplify.c (cp_gimplify_init_expr): Look through
3726 CLEANUP_POINT_EXPR.
3727
3728 2004-06-21 Mark Mitchell <mark@codesourcery.com>
3729
3730 * cp-tree.def (NEW_EXPR): Add a fourth slot.
3731 * cp-tree.h (PARMLIST_ELLIPSIS_P): Remove.
3732 (TREE_PARMLIST): Likewise.
3733 (CALL_DECLARATOR_PARMS): Likewise.
3734 (CALL_DECLARATOR_QUALS): Likewise.
3735 (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
3736 (cp_declarator_kind): New type.
3737 (cp_parameter_declarator): Likewise.
3738 (cp_declarator): Likewise.
3739 (cp_error_declarator): Likewise.
3740 (no_parameters): Likewise.
3741 (groktypename): Change prototype.
3742 (start_decl): Likewise.
3743 (start_handler_parms): Likewise.
3744 (get_scope_of_declarator): Likewise.
3745 (start_function): Likewise.
3746 (start_preparsed_function): New function.
3747 (start_function): Change prototype.
3748 (start_method): Likewise.
3749 (grokfield): Likewise.
3750 (grokbitfield): Likewise.
3751 (build_new): Likewise.
3752 (make_pointer_declarator): Remove.
3753 (make_reference_declarator): Likewise.
3754 (make_call_declarator): Likewise.
3755 (set_quals_and_spec): Likewise.
3756 (process_template_parm): Change prototype.
3757 (begin_function_definition): Remove.
3758 (finish_parmlist): Remove.
3759 * decl.c (groktypename): Do not use trees to represent
3760 declarators.
3761 (start_decl): Likewise.
3762 (start_handler_parms): Remove.
3763 (get_scope_of_declarator): Reimplement.
3764 (grokdeclarator): Do not use trees to represent declarators.
3765 (grokparms): Likewise.
3766 (start_function): Likewise.
3767 (start_method): Likewise.
3768 (build_void_list_mode): Do not use TREE_PARMLIST.
3769 * decl.h (grokdeclarator): Change prototype.
3770 * decl2.c (grok_method_quals): Robustify.
3771 (grok_x_components): Do not use trees to represent declarators.
3772 (grokfield): Likewise.
3773 (grokbitfield): Likewise.
3774 (start_objects): Build FUNCTION_DECLs, not declarators.
3775 (start_static_storage_duration_function): Likewise.
3776 * init.c (build_new): Simplify.
3777 * lex.c (make_pointer_declarator): Remove.
3778 (make_reference_declarator): Likewise.
3779 (make_call_declarator): Likewise.
3780 (set_quals_and_spec): Likewise.
3781 * method.c (use_thunk): Use start_preparsed_function.
3782 (synthesize_method): Likewise.
3783 (implicitly_declare_fn): Build FUNCTION_DECLs, not declarators.
3784 * optimize.c (maybe_clone_body): Use start_preparsed_function.
3785 * parser.c (cp_error_declarator): New variable.
3786 (declarator_obstack): Likewise.
3787 (alloc_declarator): New function.
3788 (make_declarator): Likewise.
3789 (make_id_declarator): Likewise.
3790 (make_pointer_declarator): Likewise.
3791 (make_reference_declarator): Likewise.
3792 (make_ptrmem_declarator): Likewise.
3793 (make_call_declarator): Likewise.
3794 (make_array_declarator): Likewise.
3795 (no_parameters): New variable.
3796 (make_parameter_declarator): Likewise.
3797 (cp_parser_check_for_definition_in_return_type): Do not use trees
3798 to represent declarators.
3799 (cp_parser_translation_unit): Likewise.
3800 (cp_parser_new_expression): Likewise.
3801 (cp_parser_new_type_id): Likewise.
3802 (cp_parser_new_declarator_opt): Likewise.
3803 (cp_parser_direct_new_declarator): Likewise.
3804 (cp_parser_condition): Likewise.
3805 (cp_parser_declaration_statement): Likewise.
3806 (cp_parser_declaration): Likewise.
3807 (cp_parser_conversion_type_id): Likewise.
3808 (cp_parser_conversion_declarator_opt): Likewise.
3809 (cp_parser_template_parameter_list): Likewise.
3810 (cp_parser_template_parameter): Likewise.
3811 (cp_parser_explicit_instantiation): Likewise.
3812 (cp_parser_init_declarator): Likewise.
3813 (cp_parser_declarator): Likewise.
3814 (cp_parser_direct_declarator): Likewise.
3815 (cp_parser_type_id): Likewise.
3816 (cp_parser_parameter_declaration_clause): Likewise.
3817 (cp_parser_parameter_declaration_list): Likewise.
3818 (cp_parser_parameter_declaration): Likewise.
3819 (cp_parser_member_declaration): Likewise.
3820 (cp_parser_exception_declaration): Likewise.
3821 (cp_parser_check_declarator_template_parameters): Likewise.
3822 (cp_parser_function_definition_from_specifiers_and_declarator):
3823 Likewise.
3824 (cp_parser_save_member_function_body): Likewise.
3825 * pt.c (process_template_parm): Add is_non_type parameter.
3826 (convert_template_argument): Adjust call to groktypename.
3827 (tsubst_call_declarator_parms): Remove use of TREE_PARMLIST.
3828 (tsubst): Do not expect declarators.
3829 (tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional
3830 argument.
3831 (instantiate_decl): Use start_preparsed_function.
3832 * semantics.c (begin_function_definition): Remove.
3833 (finish_parmlist): Remove.
3834 * cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not
3835 declarators.
3836
3837 2004-06-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3838
3839 * call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
3840 (build_new_method_call): Likewise.
3841 * decl.c (local_variable_p_walkfn): Don't walk into types.
3842 * decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
3843 (build_anon_union_vars): Add new operand for COMPONENT_REF.
3844 * init.c (buld_new): Add new operand for ARRAY_REF.
3845 * method.c (do_build_copy_constructor): New op for COMPONENT_REF.
3846 (do_build_assign_ref): Likewise.
3847 * parser.c (cp_parser_direct_new_declarator): Add new operands
3848 for ARRAY_REF.
3849 (cp_parser_direct_declarator): Likewise.
3850 * pt.c (tsubst): Likewise.
3851 (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
3852 for COMPONENT_REF.
3853 * semantics.c (finish_non_static_data_member): Add new operand
3854 for COMPONENT_REF.
3855 * typeck.c (build_class_member_access_expr): Likewise.
3856 (build_class_member_access_expr, finish_class_member_access_expr):
3857 Likewise.
3858 (build_ptrmemfunc_access_expr): Likewise.
3859 (build_array_ref): Add new operands for ARRAY_REF.
3860 * typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
3861 * tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
3862
3863 2004-06-21 Richard Henderson <rth@redhat.com>
3864
3865 * dump.c (cp_dump_tree): Don't use dump_next_stmt.
3866 * parser.c (cp_parser_jump_statement): Update commentary.
3867 * pt.c (tsubst_expr): Use RETURN_EXPR.
3868 * semantics.c (finish_return_stmt): Likewise.
3869 (finalize_nrv_r): Likewise.
3870 * typeck.c, typeck2.c: Update file start commentary.
3871
3872 2004-06-21 Richard Henderson <rth@redhat.com>
3873
3874 * semantics.c (finish_expr_stmt): Call verify_sequence_points.
3875
3876 2004-06-20 Richard Henderson <rth@redhat.com>
3877
3878 * cp-tree.h (add_decl_stmt): Declare.
3879 * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
3880 * semantics.c (maybe_cleanup_point_expr): New.
3881 (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
3882 finish_for_expr, finish_switch_cond): Use it.
3883 (finalize_nrv_r): Don't build an EXPR_STMT. Don't frob TREE_CHAIN.
3884
3885 2004-06-20 Richard Henderson <rth@redhat.com>
3886
3887 * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
3888 * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
3889 (cp_gimplify_expr): Call it.
3890 (gimplify_cleanup_stmt): Move from c-gimplify.c.
3891 (cp_genericize): New.
3892 * decl.c (finish_function): Call it.
3893 * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
3894 (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
3895 (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
3896 (cp_genericize): Declare.
3897 * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
3898 * dump.c (cp_dump_tree): Likewise.
3899 * semantics.c (push_cleanup): Move from c-semantics.c.
3900
3901 2004-06-20 Zack Weinberg <zack@codesourcery.com>
3902
3903 * cp-lang.c (has_c_linkage): Implement.
3904
3905 * cp-tree.h (set_mangled_name_for_decl): Don't prototype.
3906 * decl.c (duplicate_decls): Use COPY_DECL_RTL.
3907 (builtin_function_1): Don't call make_decl_rtl.
3908 (build_cp_library_fn): Don't call set_mangled_name_for_decl.
3909 (grokvardecl): Don't call mangle_decl.
3910 * except.c (nothrow_libfn_p): Look at DECL_NAME, not
3911 DECL_ASSEMBLER_NAME.
3912 * method.c (set_mangled_name_for_decl): Delete.
3913 * name-lookup.c (pushdecl): When a local extern shadows a
3914 file-scope declaration of the same object, give both DECLs the
3915 same DECL_UID.
3916 * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
3917 on DECL_ASSEMBLER_NAME.
3918
3919 2004-06-19 Richard Henderson <rth@redhat.com>
3920
3921 * cp-gimplify.c: Remove unnecessary prototypes.
3922 (cp_gimplify_stmt): Merge into ...
3923 (cp_gimplify_expr): ... here. Move to end of file. Handle
3924 stmts_are_full_exprs_p frobbing.
3925 * cp-tree.h (cp_gimplify_stmt): Remove.
3926 * pt.c (tsubst_expr): Merge prep_stmt and unify.
3927 * tree.c (init_tree): Don't set lang_gimplify_stmt.
3928
3929 2004-06-18 Richard Henderson <rth@redhat.com>
3930
3931 PR c++/16034
3932 * semantics.c (begin_cond): New.
3933 (finish_cond): Rewrite to handle template DECL_STMTs specially.
3934 Assume that non-template decls go land before the conditional.
3935 (simplify_loop_decl_cond): Likewise.
3936 (begin_if_stmt, finish_if_stmt_cond, begin_while_stmt,
3937 finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond,
3938 begin_switch_stmt, finish_switch_cond): Update to match.
3939
3940 2004-06-17 Jason Merrill <jason@redhat.com>
3941
3942 PR c++/16015
3943 * semantics.c (simplify_aggr_init_expr): Don't return the slot.
3944 (finish_stmt_expr_expr): Update type after conversions.
3945 (finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR.
3946 Handle void initializer.
3947 * tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void.
3948
3949 2004-06-17 Geoffrey Keating <geoffk@apple.com>
3950
3951 * class.c (build_clone): Don't call defer_fn, let mark_used do it.
3952 * cp-tree.h (defer_fn): Delete.
3953 * decl2.c (defer_fn): Delete.
3954 (finish_file): Simplify deferred_fns loops; check that
3955 only used inline functions get into deferred_fns.
3956 (mark_used): Inline previous contents of defer_fn.
3957
3958 2004-06-16 Richard Henderson <rth@redhat.com>
3959
3960 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
3961 (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
3962 * cxx-pretty-print.c (pp_cxx_function_definition): Move handling
3963 of CTOR_INITIALIZER ...
3964 (pp_cxx_statement): ... here.
3965 * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
3966 (finish_function): Use alloc_stmt_list to zap entire function.
3967 * parser.c (cp_parser_compound_statement): Update commentary.
3968 * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
3969 * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
3970 (finish_stmt_expr): Don't look through COMPOUND_STMT.
3971
3972 2004-06-16 Geoffrey Keating <geoffk@apple.com>
3973
3974 * pt.c (mark_decl_instantiated): Don't call defer_fn.
3975
3976 2004-06-16 Richard Henderson <rth@redhat.com>
3977
3978 * parser.c (cp_parser_labeled_statement): Update commentary.
3979 * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
3980 * tree.c (mark_local_for_remap_r): Likewise.
3981
3982 2004-06-16 Richard Henderson <rth@redhat.com>
3983
3984 * parser.c (cp_parser_asm_definition): Update commentary.
3985 * pt.c (tsubst_expr): Use ASM_EXPR.
3986 * semantics.c (finish_asm_stmt): Likewise.
3987
3988 2004-06-16 Richard Henderson <rth@redhat.com>
3989
3990 * decl.c (finish_destructor_body): Use LABEL_EXPR.
3991 * parser.c (cp_parser_statement): Update commentary.
3992 * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
3993 * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
3994 * tree.c (mark_local_for_remap_r): Likewise.
3995
3996 2004-06-16 Richard Henderson <rth@redhat.com>
3997
3998 PR c++/16012
3999 * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
4000 statement in FOR_INIT_STMT for templates.
4001
4002 2004-06-15 Richard Henderson <rth@redhat.com>
4003
4004 * call.c (initialize_reference): Don't build CLEANUP_STMT here.
4005 * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
4006 (genericize_try_block): Use gimplify_stmt.
4007 (genericize_catch_block, genericize_eh_spec_block): Likewise.
4008 (cp_gimplify_init_expr): Remove STMT_EXPR special case.
4009 (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
4010 * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
4011 (cp_tree_chain_matters_p): Remove.
4012 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
4013 (COMPOUND_STMT_BODY_BLOCK): New.
4014 (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
4015 (EXPR_STMT_STMT_EXPR_RESULT): New.
4016 (building_stmt_tree): Check cur_stmt_list.
4017 (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
4018 (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
4019 * decl.c (poplevel): Use pop_stmt_list for minding cleanups.
4020 (cp_finish_decl): Use push_cleanup.
4021 (start_function, finish_function): Use statement lists.
4022 (finish_stmt): Do nothing.
4023 * except.c (begin_eh_spec_block): Use statement lists.
4024 (check_handlers_1, check_handlers): Likewise.
4025 * init.c (construct_virtual_base): Don't add extra compound stmts.
4026 (build_vec_init): Likewise.
4027 * name-lookup.c (maybe_push_cleanup_level): Use statement lists.
4028 * name-lookup.h (struct cp_binding_level): Add statement_list.
4029 * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
4030 (cp_parser_labeled_statement, cp_parser_expression_statement,
4031 cp_parser_statement_seq_opt): Likewise.
4032 (cp_parser_compound_statement): Likewise. Take bool for try block.
4033 (cp_parser_selection_statement): Tidy if processing.
4034 (cp_parser_already_scoped_statement): Rewrite to do what it says.
4035 * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
4036 (tsubst_expr): Rewrite STMT_EXPR processing. Handle STATEMENT_LIST.
4037 Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
4038 * semantics.c (do_poplevel, do_pushlevel): Use statement lists.
4039 (finish_cond): New, rewritten from FINISH_COND.
4040 (simplify_loop_decl_cond): New.
4041 (finish_expr_stmt): Avoid nested EXPR_STMTs.
4042 (begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
4043 begin_else_clause, finish_else_clause, finish_if_stmt,
4044 begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
4045 begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
4046 finish_for_cond, finish_for_stmt, begin_switch_stmt,
4047 finish_switch_cond, finish_switch_stmt, begin_try_block,
4048 finish_try_block, finish_cleanup_try_block, finish_function_try_block,
4049 finish_handler_sequence, finish_function_handler_sequence,
4050 begin_handler, finish_handler_parms, finish_handler,
4051 begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
4052 using statement lists.
4053 (begin_compound_stmt): Replace has_no_scope argument with flags.
4054 Update all callers. Use statement lists.
4055 (finish_compound_stmt): Likewise.
4056 (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
4057 (current_scope_stmt_stack): Remove.
4058 (simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
4059 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
4060 Rewrite with statement lists.
4061
4062 2004-06-15 Alexandre Oliva <aoliva@redhat.com>
4063
4064 * parser.c: Change all assignments of c_lex_string_translate
4065 to true and false to 1 and 0.
4066 (cp_lexer_read_token): Convert type of the translated string.
4067 (cp_parser_skip_to_closing_parentheses): Preserve original
4068 value of c_lex_string_translate, and set it to -1 while
4069 running.
4070 (cp_parser_cache_group): Likewise.
4071 (cp_parser_cache_group_1): Renamed.
4072 (cp_parser_asm_operand_list): Remove redundant setting of
4073 c_lex_string_translate.
4074 (cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]:
4075 Handle chained strings.
4076
4077 2004-06-12 Andrew Pinski <apinski@apple.com>
4078
4079 PR c++/14639
4080 Revert:
4081 2004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
4082
4083 * cp-tree.h: Fix typo.
4084
4085 * cp-tree.h: Include cgraph.h
4086 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
4087 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
4088
4089 2004-06-12 Jason Merrill <jason@redhat.com>
4090
4091 PR tree-optimization/14107
4092 * decl.c (finish_function): Warn about no return in all functions.
4093
4094 2004-06-15 Paolo Bonzini <bonzini@gnu.org>
4095
4096 * cp-tree.h (struct language_function): Remove cannot_inline.
4097 * decl.c (save_function_data): cannot_inline is no more.
4098 (cxx_push_function_context): Likewise.
4099 * decl2.c (start_objects, start_static_storage_duration_function):
4100 Reset DECL_INLINE, set DECL_UNINLINABLE.
4101
4102 2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4103
4104 PR c++/15967
4105 * search.c (lookup_field): Propagate the ambiguity list.
4106 (lookup_fnfields): Likewise.
4107
4108 2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4109
4110 PR c++/15947
4111 * parser.c (cp_parser_template_name): Ctors/dtors never need a
4112 template keyword to disambiguate.
4113
4114 2004-06-14 Mark Mitchell <mark@codesourcery.com>
4115
4116 PR c++/15096
4117 * decl.c (grokdeclarator): Ignore pointer-to-members when
4118 computing template depth.
4119
4120 PR c++/14930
4121 * name-lookup.c (pushtag): Do not try to put class declarations in
4122 explicit specialization scopes.
4123
4124 2004-06-11 Andrew Pinski <pinskia@physics.uc.edu>
4125
4126 * decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.
4127
4128 2004-06-11 Mark Mitchell <mark@codesourcery.com>
4129
4130 PR c++/15862
4131 * name-lookup.c (unqualified_namespace_lookup): Do not ignore type
4132 bindings for undeclared built-ins.
4133
4134 2004-06-11 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4135
4136 * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them
4137 appear at the correct location.
4138
4139 2004-06-10 Jason Merrill <jason@redhat.com>
4140
4141 PR c++/15875
4142 Revert:
4143 2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4144 * init.c (build_offset_ref): Build SCOPE_REF with non-null
4145 TREE_TYPE for non-dependent names.
4146 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
4147 unknown_type_node as its TREE_TYPE.
4148 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
4149 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
4150 (dump_expr) <SCOPE_REF case>: Likewise.
4151
4152 2004-06-10 Mark Mitchell <mark@codesourcery.com>
4153
4154 PR c++/15227
4155 * parser.c (cp_parser_direct_declarator): Robustify.
4156
4157 PR c++/15877
4158 * pt.c (tsubst_copy): Use decl_constant_value on enumeration
4159 constants in non-dependent contexts.
4160
4161 PR c++/14211
4162 PR c++/15076
4163 * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
4164 necessary.
4165
4166 2004-06-10 Jakub Jelinek <jakub@redhat.com>
4167
4168 PR c++/14791
4169 * decl.c (duplicate_decls): Handle fileptr_type_node arguments
4170 specially.
4171
4172 2004-06-09 Mark Mitchell <mark@codesourcery.com>
4173
4174 Revert:
4175 PR c++/15815
4176 2004-06-07 Mark Mitchell <mark@codesourcery.com>
4177 * lex.c (handle_pragma_interface): Deprecate.
4178 (handle_pragma_implementation): Likewise.
4179
4180 2004-06-09 Andrew Pinski <pinskia@physics.uc.edu>
4181
4182 * g++spec.c (lang_specific_driver): Remove check for -lm
4183 and -lmath when check it see if it was the math library.
4184
4185 2004-06-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4186
4187 PR c++/7841
4188 * parser.c (cp_parser_direct_declarator): Reject constructor named
4189 as qualified template-id.
4190
4191 2004-06-07 Mark Mitchell <mark@codesourcery.com>
4192
4193 PR c++/15815
4194 * lex.c (handle_pragma_interface): Deprecate.
4195 (handle_pragma_implementation): Likewise.
4196
4197 2004-06-07 Mark Mitchell <mark@codesourcery.com>
4198
4199 PR c++/15766
4200 * parser.c (cp_parser_iteration_statement): Fix typo in error
4201 message.
4202
4203 PR c++/14777
4204 * pt.c (tsubst_default_argument): Do not defer access checks
4205 while substituting into the default argument.
4206
4207 PR c++/15554
4208 * pt.c (tsubst_copy): Do not try to substitute for an enumeration
4209 constant in a non-dependent context.
4210
4211 PR c++/15057
4212 * except.c (build_throw): Ensure that temp_expr has been
4213 initialized.
4214
4215 2004-06-06 Roger Sayle <roger@eyesopen.com>
4216
4217 * cp/cp-tree.h (lvalue_or_else): Add function prototype.
4218
4219 2004-06-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4220
4221 PR c++/15503
4222 * parser.c (cp_parser_mem_initializer_id): Gracefully reject
4223 'typename', and accept 'template'.
4224
4225 2004-06-03 Andrew Pinski <pinskia@physics.uc.edu>
4226 Jan Hubicka <jh@suse.cz>
4227
4228 PR c++/14639
4229 * method.c (use_think): Do not mark thunk as referenced.
4230
4231 2004-06-03 Matt Austern <austern@apple.com>
4232
4233 PR c++/15428
4234 * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
4235 is nonzero, and if we see a noninline definition of a key method,
4236 make the vtables nonweak.
4237
4238 2004-06-02 Matt Austern <austern@apple.com>
4239
4240 * cp-tree.h (instantiate_decl): new boolean parameter,
4241 undefined_ok. Current behavior is equivalent to its being 0.
4242 * decl2.c (mark_used): Add new argument when calling instantiate_decl
4243 * pt.c (mark_decl_instantiated): Unconditionally make
4244 instantiations explicit unconditionally
4245 (do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION,
4246 since mark_decl_instantiated now does it.
4247 (instantiate_class_member): New. Instantiate a member of an
4248 explicitly instantiated class template.
4249 (do_type_instantiation): Explicitly instantiate members of an
4250 explicitly instantiated class template.
4251 (instantiate_decl): if undefined_ok is nonzero, and if we're
4252 trying to explicitly instantiated a template with no definition,
4253 change it to an implicit instantiation.
4254 (instantiate_pending_templates): Add new argument to instantiate_decl.
4255 * tree.c (cp_cannot_inline_tree_fn): Likewise.
4256
4257 2004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
4258
4259 * cp-tree.h: Fix typo.
4260
4261 * cp-tree.h: Include cgraph.h
4262 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
4263 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
4264
4265 2004-06-01 Jason Merrill <jason@redhat.com>
4266
4267 PR c++/15142
4268 * call.c (call_builtin_trap): Remove type parm.
4269 (convert_arg_to_ellipsis): Change a non-POD argument to integer type.
4270 (build_x_va_arg): Dereference a null pointer for a non-POD argument.
4271
4272 2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4273
4274 PR c++/13092
4275 * init.c (build_offset_ref): Build SCOPE_REF with non-null
4276 TREE_TYPE for non-dependent names.
4277 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
4278 unknown_type_node as its TREE_TYPE.
4279 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
4280 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
4281 (dump_expr) <SCOPE_REF case>: Likewise.
4282
4283 2004-06-01 Richard Henderson <rth@redhat.com>
4284 Andrew Pinski <pinskia@physics.uc.edu>
4285
4286 * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
4287 * parser.c (struct cp_parser): Remove in_offsetof.
4288 (cp_parser_new): Don't set it.
4289 (cp_parser_unary_expression): Don't check it.
4290 (cp_parser_postfix_open_square_expression): Split out from ...
4291 (cp_parser_postfix_expression): ... here.
4292 (cp_parser_postfix_dot_deref_expression): Likewise.
4293 (cp_parser_builtin_offsetof): New.
4294 (cp_parser_primary_expression): Use it.
4295
4296 2004-06-01 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4297
4298 PR c++/14932
4299 * parser.c (cp_parser_postfix_expression): Allow subscript
4300 operator in offsetof.
4301
4302 2004-05-31 Mark Mitchell <mark@codesourcery.com>
4303
4304 PR c++/15701
4305 * friend.c (add_friend): Do not try to perform access checks for
4306 functions from dependent classes.
4307
4308 2004-05-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
4309
4310 * cxx-pretty-print.c (pp_cxx_colon_colon): Expor.
4311 (pp_cxx_begin_template_argument_list): Turn into a function.
4312 (pp_cxx_end_template_argument_list): Likewise.
4313 (pp_cxx_separate_with): Define.
4314 (pp_cxx_unqualified_id): Tidy.
4315 (pp_cxx_primary_expression): Likewise.
4316 (pp_cxx_postfix_expression): Likewise.
4317 (pp_cxx_expression): Likewise.
4318 (pp_cxx_simple_type_specifier): Likewise.
4319 (pp_cxx_type_specifier_seq): Likewise.
4320 (pp_cxx_parameter_declaration_clause): Likewise.
4321 (pp_cxx_exception_specification): Likewise.
4322 (pp_cxx_direct_declarator): Likewise.
4323 (pp_cxx_type_id): Likewise.
4324 * cxx-pretty-print.h (pp_cxx_whitespace): Export from
4325 cxx-pretty-print.c.
4326 (pp_cxx_left_paren): Likewise.
4327 (pp_cxx_right_paren): Likewise.
4328 (pp_cxx_left_brace): Likewise.
4329 (pp_cxx_right_brace): Likewise.
4330 (pp_cxx_left_bracket): Likewise.
4331 (pp_cxx_right_bracket): Likewise.
4332 (pp_cxx_dot): Likewise.
4333 (pp_cxx_identifier): Likewise.
4334 (pp_cxx_tree_identifier): Likewise.
4335 (pp_cxx_ampersand): New macro.
4336 (pp_cxx_star): Likewise.
4337 (pp_cxx_arrow): Likewise.
4338 (pp_cxx_semicolon): Likewise.
4339 (pp_cxx_complement): Likewise.
4340 (pp_cxx_begin_template_argument_list): Declaree.
4341 (pp_cxx_end_template_argument_list): Likewise.
4342 (pp_cxx_colon_colon): likewise.
4343
4344 2004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr>
4345
4346 * parser.c (cp_parser_simple_type_specifier): Explicitly test
4347 against NULL_TREE.
4348
4349 2004-05-31 Kazu Hirata <kazu@cs.umass.edu>
4350
4351 * call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c,
4352 typeck.c: Fix comment formatting.
4353
4354 2004-05-30 Andrew Pinski <pinskia@physics.uc.edu>
4355
4356 * cp-lang.c (cp_expand_decl): Remove.
4357 (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.
4358
4359 2004-05-30 Andreas Jaeger <aj@suse.de>
4360
4361 * lang-specs.h: Add missing initializers for .ii.
4362
4363 2004-05-28 Aldy Hernandez <aldyh@redhat.com>
4364
4365 * decl.c (cp_make_fname_decl): Free return value from
4366 fname_as_string.
4367
4368 2004-05-28 Mark Mitchell <mark@codesourcery.com>
4369
4370 PR c++/15083
4371 * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
4372 even in a templat.e
4373 * init.c (build_new): Likewise.
4374
4375 PR c++/15640
4376 * name-lookup.c (arg_assoc): Robustify.
4377
4378 PR c++/15471
4379 * typeck.c (unary_complex_lvalue): Use context_for_name_lookup
4380 when determining the scope to use for a pointer to member.
4381 (lookup_anon_field): Give it external linkage.
4382 * cp-tree.h (lookup_anon_field): Declare it.
4383 * expr.c (cplus_expand_constant): Use it.
4384
4385 2004-05-28 Mark Mitchell <mark@codesourcery.com>
4386
4387 PR c++/14668
4388 * parser.c (cp_parser_simple_type_specifier): Call
4389 maybe_note_name_used_in_class.
4390
4391 2004-05-28 Tom Marshall <tmarshall@real.com>
4392
4393 PR c++/15214
4394 * class.c (finish_struct_1): Warn only if the dtor is non-private or
4395 the class has friends.
4396
4397 2004-05-27 Adam Nemet <anemet@lnxw.com>
4398
4399 PR c++/12883
4400 * decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and
4401 TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type.
4402
4403 2004-05-24 Geoffrey Keating <geoffk@apple.com>
4404
4405 * method.c (implicitly_declare_fn): Don't call defer_fn; abort
4406 if it might be needed.
4407 * pt.c (mark_decl_instantiated): Only call defer_fn if
4408 the function actually needs processing in finish_file.
4409 * decl2.c (finish_file): Add check that elements in
4410 deferred_fns_used are really needed there. Remove unnecessary
4411 test of DECL_SAVED_TREE.
4412
4413 2004-05-23 Paolo Bonzini <bonzini@gnu.org>
4414
4415 * Make-lang.in: No need to specify $(LIBCPP).
4416
4417 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4418
4419 PR c++/15044
4420 * parser.c (cp_parser_class_head): Robustify.
4421
4422 PR c++/15317
4423 * parser.c (cp_parser_decl_specifier_seq): Correct error in
4424 comment.
4425 (cp_parser_constructor_declarator_p): Treat attributes
4426 as decl-specifiers.
4427
4428 PR c++/15329
4429 * typeck.c (build_unary_op): Do not attempt to resolve casts to
4430 base classes in templates.
4431
4432 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4433
4434 PR c++/15165
4435 * pt.c (instantiate_template): Robustify.
4436
4437 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4438
4439 PR c++/15025
4440 * decl.c (xref_tag): Issue errors about redeclaring template
4441 classes as non-template classes.
4442
4443 2004-05-23 Mark Mitchell <mark@codesourcery.com>
4444
4445 PR c++/14821
4446 * name-lookup.c (supplement_binding): Allow redefinitions of
4447 namespace aliases.
4448
4449 PR c++/14883
4450 * parser.c (cp_parser_template_argument): Robustify.
4451
4452 2004-05-23 Gabriel Dos Reis <gdr@integrable-solutions.net>
4453
4454 * class.c (alter_access): Use %E format specifier to print an
4455 identifier node. Avoid looking at the IDENTIFIER_POINTER.
4456 (push_lang_context): Likewise.
4457 * decl.c (lookup_label): Likewise.
4458 (grokdeclarator): Likewise.
4459 * parser.c (cp_parser_check_for_invalid_template_id): Likewise.
4460 * pt.c (do_type_instantiation): Likewise.
4461 * tree.c (handle_java_interface_attribute): Likewise.
4462 (handle_com_interface_attribute): Likewise.
4463 (handle_init_priority_attribute): Likewise.
4464
4465 2004-05-22 Mark Mitchell <mark@codesourcery.com>
4466
4467 PR c++/15285
4468 PR c++/15299
4469 * pt.c (build_non_dependent_expr): Expand the set of tree nodes
4470 recognized as overloaded functions.
4471
4472 2004-05-22 Mark Mitchell <mark@codesourcery.com>
4473
4474 PR c++/15507
4475 * class.c (layout_nonempty_base_or_field): Do not try to avoid
4476 layout conflicts for unions.
4477
4478 PR c++/15542
4479 * typeck.c (build_x_unary_op): Instantiate template class
4480 specializations before looking for "operator &".
4481
4482 PR c++/15427
4483 * typeck.c (complete_type): Layout non-dependent array types, even
4484 in templates.
4485
4486 PR c++/15287
4487 * typeck.c (build_unary_op): Do not optimize "&x[y]" when in a
4488 template.
4489
4490 2004-05-22 Roger Sayle <roger@eyesopen.com>
4491
4492 * name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
4493 returning when TREE_TYPE is error_mark_node.
4494 * typeck.c (require_complete_type): Return error_mark_node if
4495 value's type is an error_mark_node.
4496
4497 2004-05-20 Andrew Pinski <pinskia@physics.uc.edu>
4498
4499 * optimize.c (calls_setjmp_r): Remove.
4500 (calls_setjmp_p): Remove.
4501 * cp-tree.c (calls_setjmp_p): Remove.
4502 * decl.c (finish_function): Do not call calls_setjmp_p.
4503
4504 2004-05-18 Zack Weinberg <zack@codesourcery.com>
4505
4506 * decl.c (cp_finish_decl): Use mark_decl_referenced.
4507 * decl2.c (maybe_make_one_only): Likewise.
4508 * method.c (use_thunk): Likewise.
4509
4510 2004-05-18 Jason Merrill <jason@redhat.com>
4511
4512 * class.c (build_base_path): Tidy a bit.
4513
4514 2004-05-14 Geoffrey Keating <geoffk@apple.com>
4515
4516 * name-lookup.c (struct scope_binding): New.
4517 (EMPTY_SCOPE_BINDING): New.
4518 (lookup_using_namespace): Take a scope_binding instead of a
4519 cxx_binding.
4520 (qualified_lookup_using_namespace): Likewise.
4521 (cxx_binding_clear): Delete.
4522 (do_nonmember_using_decl): Use a scope_binding instead of a
4523 cxx_binding.
4524 (lookup_tag): Don't call select_decl.
4525 (ambiguous_decl): Don't return anything (and change callers to match).
4526 Take a scope_binding as the second parameter.
4527 (lookup_namespace_name): Use a scope_binding instead of a
4528 cxx_binding.
4529 (unqualified_namespace_lookup): Likewise.
4530 (lookup_qualified_name): Likewise.
4531 (select_decl): Take a scope_binding instead of a cxx_binding.
4532 Use macros rather than hand-coding tests for type-ness.
4533
4534 2004-05-13 Diego Novillo <dnovillo@redhat.com>
4535
4536 * cp-gimplify.c: Rename from cp-simplify.c.
4537 * Make-lang.in, optimize.c: Update.
4538
4539 2004-05-13 Diego Novillo <dnovillo@redhat.com>
4540
4541 Merge from tree-ssa-20020619-branch. See
4542 ChangeLog.tree-ssa for details.
4543
4544 * Make-lang.in, call.c, class.c, cp-lang.c, cp-tree.def,
4545 cp-tree.h, cvt.c, decl.c, decl2.c, error.c, except.c,
4546 expr.c, init.c, name-lookup.h, optimize.c, parser.c,
4547 pt.c, rtti.c, semantics.c, tree.c, typeck.c, typeck2.c:
4548 Merged.
4549 * cp-mudflap.c: New file.
4550 * cp-simplify.c:: New file.
4551
4552 2004-05-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4553
4554 PR c++/14389
4555 * decl2.c (check_classfn): For member templates, compare also the
4556 template parameters to match the declaration.
4557 * cp-tree.h: Adjust declaration of check_classfn.
4558 * decl.c (start_decl, grokfndecl): Adjust callers of check_classfn.
4559 * friend.c (do_friend): Likewise.
4560 * pt.c (tsubst_friend_function): Likewise.
4561
4562 2004-05-01 Zack Weinberg <zack@codesourcery.com>
4563
4564 * decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
4565 Instead, dig into the representation type to find the array bound.
4566
4567 2004-04-30 Jason Merrill <jason@redhat.com>
4568
4569 Refer to base members using COMPONENT_REFs where possible.
4570 * class.c (build_simple_base_path): New fn.
4571 (build_base_path): Use it for non-virtual base references.
4572 (layout_class_type): Change base fields to their real type
4573 after layout is done.
4574 * cp-tree.h (IS_FAKE_BASE_TYPE): New macro.
4575 * cp-lang.c (cxx_get_alias_set): Use it.
4576
4577 2004-04-30 Kazu Hirata <kazu@cs.umass.edu>
4578
4579 * class.c, cp-tree.h, decl.c, decl2.c, pt.c, rtti.c: Fix
4580 comment typos.
4581
4582 2004-04-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4583
4584 PR c++/15064
4585 * parser.c (cp_parser_postfix_expression): typeid operator cannot be
4586 used in integral constant expressions.
4587
4588 2004-04-22 Mark Mitchell <mark@codesourcery.com>
4589
4590 * init.c (build_aggr_init): Fix accidental use of C99 construct in
4591 previous change.
4592
4593 * class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
4594 braced initializer.
4595 * cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
4596 * decl.c (reshape_init): Use it.
4597 * init.c (perform_member_init): Remove redundant condition.
4598 (build_aggr_init): Adjust to handle brace-enclosed initializers
4599 correctly.
4600 (expand_default_init): Use BRACE_ENCLOSED_INITIALIZER_P.
4601
4602 * parser.c (cp_parser_initializer_clause): Do not set
4603 TREE_HAS_CONSTRUCTOR on the initializer.
4604 * rtti.c (tinfo_base_init): Likewise.
4605 (generic_initializer): Likewise.
4606 (ptr_initializer): Likewise.
4607 (ptm_initializer): Likewise.
4608 (class_initializer): Likewise.
4609 (get_pseudo_ti_init): Likewise.
4610 * typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.
4611
4612 2004-04-22 Alan Modra <amodra@bigpond.net.au>
4613
4614 * name-lookup.c (anonymous_namespace_name): Make static.
4615
4616 2004-04-19 Roger Sayle <roger@eyesopen.com>
4617
4618 PR middle-end/14531
4619 * class.c (build_base_path): Call fold whilst building the NULL
4620 pointer check expression trees.
4621
4622 2004-04-15 Bryce McKinlay <mckinlay@redhat.com>
4623
4624 * init.c (build_new_1): Don't use type size argument for Java
4625 _Jv_AllocObject call.
4626
4627 2004-04-09 Danny Smith <dannysmith@users.sourceforge.net>
4628
4629 * method.c (make_alias_for_thunk): Remove preprocessor guard on
4630 declaration and definition.
4631
4632 2004-04-08 Danny Smith <dannysmith@users.sourceforge.net>
4633
4634 PR c++/14808
4635 * method.c (use_thunk): Test TARGET_USE_LOCAL_THUNK_ALIAS_P rather
4636 than ASM_OUTPUT_DEF.
4637
4638 2004-04-08 Jakub Jelinek <jakub@redhat.com>
4639
4640 * decl2.c (mark_used): Don't segfault if cfun != NULL but
4641 current_function_decl == NULL.
4642
4643 2004-04-05 Nathan Sidwell <nathan@codesourcery.com>
4644
4645 PR c++/3518
4646 * pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer
4647 level.
4648
4649 2004-04-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4650
4651 * init.c (decl_constant_value): Don't look at DECL_INITIAL
4652 of PARM_DECL.
4653 * tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
4654 or TREE_SIDE_EFFECTS of a type.
4655
4656 2004-04-02 Nathan Sidwell <nathan@codesourcery.com>
4657
4658 PR c++/14007
4659 * pt.c (check_cv_quals_for_unify): Correct logic for disallowed
4660 cv-qualifier unification.
4661 * tree.c (cp_build_qualified_type_real): Renable DR295 logic.
4662
4663 2004-04-02 Jan Hubicka <jh@suse.cz>
4664
4665 * cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define.
4666 * cp-tree.h (cp_update_decl_after_saving): Declare.
4667 * tree.c (cp_update_decl_after_saving): Define.
4668
4669 2004-04-01 Mark Mitchell <mark@codesourcery.com>
4670
4671 PR c++/14803
4672 * typeck.c (get_delta_difference): Call fold before returning the
4673 value.
4674
4675 2004-04-01 Richard Henderson <rth@redhat.com>
4676
4677 PR c++/14804
4678 * decl.c (cp_finish_decl): Preserve TREE_READONLY more often.
4679 * typeck2.c (split_nonconstant_init): Clear TREE_READONLY.
4680
4681 2004-04-01 Mark Mitchell <mark@codesourcery.com>
4682
4683 PR c++/14810
4684 * name-lookup.c (maybe_push_cleanup_level): Robustify.
4685
4686 2004-04-01 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4687
4688 * class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly.
4689
4690 2004-03-31 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4691
4692 * call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
4693 * class.c (check_bitfield_decl): Likewise.
4694 * cvt.c (type_promotes_to): Likewise.
4695 * decl.c (finish_enum): Likewise.
4696 * mangle.c (write_builtin_type): Likewise.
4697 * semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
4698 * typeck.c (type_after_usual_arithmetic_conversions): Likewise.
4699 (build_binary_op): Likewise.
4700
4701 2004-03-31 Jan Hubicka <jh@suse.cz>
4702
4703 * tree.h (optimize_function): Kill prototype.
4704 * optimize.c (dump_function, optimize_function, dump_finction): Kill.
4705 * semantics.c (expand_body): Kill.
4706
4707 2004-03-30 Mark Mitchell <mark@codesourcery.com>
4708
4709 PR c++/14724
4710 * decl.c (start_decl_1): Do not decide whether or not to create a
4711 new cleanup level until after the type has been completed.
4712
4713 PR c++/14763
4714 * pt.c (tsubst_default_argument): Clear current_function_decl.
4715
4716 2004-03-30 Zack Weinberg <zack@codesourcery.com>
4717
4718 * name-lookup.c, parser.c: Use new shorter form of GTY markers.
4719
4720 2004-03-29 Zack Weinberg <zack@codesourcery.com>
4721
4722 * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
4723 is null, just print the literal name and return.
4724
4725 2004-03-25 Kazu Hirata <kazu@cs.umass.edu>
4726
4727 * cxx-pretty-print.c: Fix comment typos.
4728
4729 2004-03-24 Kazu Hirata <kazu@cs.umass.edu>
4730
4731 * cxx-pretty-print.c, cxx-pretty-print.h, decl.h, friend.c:
4732 Update copyright.
4733
4734 2004-03-23 Ziemowit Laski <zlaski@apple.com>
4735
4736 * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H).
4737 * mangle.c (write_type): Add call to 'mangle_fundamental_type'
4738 target hook.
4739
4740 2004-03-23 Zack Weinberg <zack@codesourcery.com>
4741
4742 PR 12267, 12391, 12560, 13129, 14114, 14133
4743 * cp-lang.c (c_reset_state): Delete.
4744 (push_file_scope, pop_file_scope): New stubs.
4745 * parser.c (c_parse_file): Call sorry() here if called more than once.
4746
4747 2004-03-23 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4748
4749 * typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
4750 for INTEGER_CST.
4751
4752 2004-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
4753
4754 * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): Declare.
4755
4756 2004-03-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
4757
4758 * error.c (enum pad): Remove.
4759 (dump_qualifiers): Likewise.
4760 (dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq.
4761 (dump_aggr_type): Likewise.
4762 (dump_type_suffix): Likewise.
4763 (dump_simple_decl): Likewise.
4764 (dump_function_decl): Likewise.
4765 (cv_to_string): Likewise.
4766 (dump_type_prefix): Likewise. Adjust return void.
4767 * cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to
4768 cxx_pretty_print.h.
4769 (pp_cxx_template_keyword_if_needed): Document.
4770 (pp_cxx_qualified_id): Document case FUNCTION_DECL. Tidy.
4771 (pp_cxx_expression): Handle NON_DEPENDENT_EXPR and
4772 MUST_NOT_THROW_EXPR.
4773
4774 2004-03-21 Mark Mitchell <mark@codesourcery.com>
4775
4776 PR c++/14616
4777 * decl.c (cp_finish_decl): Compute the size of arrays declared in
4778 templates, if their type is non-dependent.
4779
4780 2004-03-19 Mark Mitchell <mark@codesourcery.com>
4781
4782 * call.c (build_op_delete_call): Do not forget the placement
4783 arguments when iterating through mutiple delete operators.
4784
4785 * cp-tree.h (svaed_scope): Remove last_parms.
4786 (NEW_DELETE_OPNAME_P): New macro.
4787 (last_function_parms): Remove.
4788 (do_friend): Adjust prototype.
4789 * decl.c (grokparms): Return the PARM_DECLs directly, rather than
4790 using last_function_parms.
4791 (grokfndecl): Take the PARM_DECLs as an argument, rather than
4792 using last_function_parms.
4793 (grokdeclarator): Adjust accordingly. Do not form METHOD_TYPEs
4794 for class-specific operator new and operator delete.
4795 (grok_op_properties): Do not look for allocation functions with
4796 METHOD_TYPEs.
4797 (start_function): Use DECL_ARGUMENTS instead of
4798 last_function_parms.
4799 * decl.h (last_function_parms): Do not declare.
4800 * decl2.c (grokclassfn): Do not use last_function_parms.
4801 * friend.c (do_friend): Remove parmdecls parameter.
4802 * name-lookup.c (push_to_top_level): Do not save last_function_parms.
4803 (pop_from_top_level): Do not restore it.
4804 * pt.c (check_explicit_specialization): Do not adjust
4805 last_function_parms.
4806
4807 * name-lookup.c (do_local_using_decl): Create a local binding for
4808 types brought in via using declarations.
4809
4810 * name-lookup.c (lookup_arg_dependent): Handle block-scope
4811 function declarations correctly.
4812
4813 * semantics.c (finish_id_expression): Correct handling of
4814 conversion operators to dependent types.
4815
4816 * typeck.c (lookup_destructor): Allow the use of destructors from
4817 base classes.
4818
4819 2004-03-19 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4820
4821 * cxx-pretty-print.c (pp_cxx_unqualified_id): Use
4822 TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS.
4823 * search.c (dfs_unuse_fields): Add two more TREE_CODES that mean
4824 the field is named TEMPLATE_TYPE_PARM_INDEX.
4825
4826 2004-03-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4827
4828 PR c++/14545
4829 * parser.c (cp_parser_functional_cast): A cast to anything
4830 but integral or enumaration type is not an integral constant
4831 expression.
4832 * pt.c (value_dependent_expression_p): Handle cast expressions
4833 without operands (such as "int()").
4834
4835 2004-03-18 Mark Mitchell <mark@codesourcery.com>
4836
4837 * semantics.c (finish_pseudo_destructor_expr): Allow differing
4838 cv-qualification between the type named by the
4839 pseudo-destructor-name and the object-type.
4840
4841 * search.c (accessible_base_p): Handle non-proper bases.
4842
4843 * name-lookup.c (do_nonmember_using_decl): If a using declaration
4844 refers to a single overloaded function, set the type of the
4845 function.
4846 * tree.c (lvalue_type): Simplify.
4847 * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
4848 unknown type.
4849 (build_unary_op): Handle OVERLOADs with known types.
4850
4851 * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
4852 function templates.
4853
4854 * parser.c (cp_parser_postfix_expression): Handle the use of
4855 "typename" in non-dependent contexts. Convert appropriately when
4856 when using a qualified name after "->" or ".".
4857
4858 * call.c (conditional_conversion): Honor the requirement that some
4859 conversions refer to the original object.
4860
4861 2004-03-18 Mark Mitchell <mark@codesourcery.com>
4862
4863 * call.c (build_conditional_expr): Do not call force_rvalue for
4864 operands of void_type when the conditional expression itself has
4865 void type.
4866 * name-lookup.c (pushdecl): Don't consider a declaration of a
4867 function named "main" to be an overload of a type named "main".
4868 * parser.c (cp_parser_template_name): Perform name lookup when the
4869 template name is proceeded by "template" if the qualifying scope
4870 is non-dependent.
4871 * typeck.c (composite_pointer_type_r): Correctly handle
4872 pointer-to-member types.
4873 (build_const_cast): Likewise.
4874
4875 2004-03-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4876
4877 * cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments.
4878 * cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check.
4879 (DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise.
4880 (KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise.
4881 (TYPENAME_TYPE_FULLNAME): Add check and use type.values.
4882 (TYPEOF_TYPE_EXPR): New macro.
4883 * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
4884 * error.c (dump_type): Use TYPEOF_TYPE_EXPR.
4885 * pt.c (tsubst): Likewise.
4886 * semantics.c (finish_typeof): Likewise.
4887 * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
4888 and TEMPLATE_TYPE_PARM.
4889 * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
4890 (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
4891
4892 2004-03-16 Mark Mitchell <mark@codesourcery.com>
4893
4894 PR c++/14586
4895 * cp-tree.h (build_new_op): Change prototype.
4896 (build_x_binary_op): Likewise.
4897 * call.c (build_new_op): Add overloaded_p parameter.
4898 * decl2.c (grok_array_decl): Adjust call to build_new_op.
4899 * parser.c (cp_parser_binary_expression): Note that uses of
4900 overloaded operators prevents an expression from being considered
4901 an integral constant.
4902 * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
4903 build_x_binary_op.
4904 * semantics.c (finish_call_expr): Likewise.
4905 * typeck.c (rationalize_conditional_expr): Likewise.
4906 (build_x_indirect_ref): Likewise.
4907 (build_x_binary_op): Likewise.
4908 (build_x_unary_op): Likewise.
4909 (build_x_compound_expr): Likewise.
4910 (build_modify_expr): Likewise.
4911 * typeck2.c (build_x_arrow): Likewise.
4912
4913 2004-03-15 Kazu Hirata <kazu@cs.umass.edu>
4914
4915 * cp-lang.c, ptree.c: Update copyright.
4916
4917 2004-03-13 Mark Mitchell <mark@codesourcery.com>
4918
4919 PR c++/14550
4920 * parser.c (cp_parser_non_integral_constant_expression): Encode
4921 more of the idiom that surrounded calls to this function within
4922 the function itself
4923 (cp_parser_primary_expression): Adjust accordingly.
4924 (cp_parser_postfix_expression): Likewise.
4925 (cp_parser_unary_expression): Likewise.
4926 (cp_parser_cast_expression): Likewise.
4927 (cp_parser_assignment_expression): Likewise.
4928 (cp_parser_expression): Likewise.
4929 (cp_parser_new_expression): Note that new-expressions are not
4930 allowed in integral constant expressions.
4931 (cp_parser_delete_expression): Likewise.
4932
4933 2004-03-12 Matt Austern <austern@apple.com>
4934
4935 * decl2.c (maybe_make_one_only): Look at
4936 TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
4937 to make an explicit instantiation weak.
4938 * method.c (use_thunk): Make sure we call comdat_linkage
4939 when appropriate.
4940 * pt.c (do_type_instantiation): On systems where weak symbols
4941 don't go in a static archive's TOC, explicit instantiation of a
4942 class must imply *explicit* instantiation of its memeber.
4943
4944 2004-03-11 Kazu Hirata <kazu@cs.umass.edu>
4945
4946 * call.c, cp-tree.h, pt.c: Fix comment typos.
4947
4948 2004-03-10 Mark Mitchell <mark@codesourcery.com>
4949
4950 PR c++/14510
4951 * decl.c (xref_tag): Disregard non-type declarations when
4952 looking up a tagged type.
4953
4954 2004-03-09 Nathan Sidwell <nathan@codesourcery.com>
4955
4956 PR c++/14397
4957 * call.c (convert_like_real): Build a const qualified temporary,
4958 when testing ctor access.
4959
4960 2004-03-09 Mark Mitchell <mark@codesourcery.com>
4961
4962 * call.c (initialize_reference): Fix typo.
4963
4964 2004-03-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4965
4966 PR c++/14409
4967 * pt.c (determine_specialization): For member templates, match also
4968 constness.
4969
4970 PR c++/14448
4971 * parser.c (cp_parser_initializer_clause): Fold initializer if it is
4972 non-dependent.
4973 * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.
4974
4975 2004-03-09 Mark Mitchell <mark@codesourcery.com>
4976
4977 PR c++/14230
4978 * call.c (initialize_reference): Handle initializers that are
4979 class-member access expressions applies to rvalues.
4980
4981 2004-03-09 Mark Mitchell <mark@codesourcery.com>
4982
4983 PR c++/14432
4984 * name-lookup.c (supplement_binding): Ignore functions that are
4985 marked DECL_ANTICIPATED.
4986
4987 2004-03-08 Mark Mitchell <mark@codesourcery.com>
4988
4989 PR c++/14401
4990 * class.c (check_field_decls): Complain about non-static data
4991 members of reference type in unions. Propagate
4992 CLASSTYPE_REF_FIELDS_NEED_INIT and
4993 CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
4994 data members.
4995 * init.c (perform_member_init): Complain about mbmers with const
4996 type that are not explicitly initialized.
4997
4998 2004-03-08 Mark Mitchell <mark@codesourcery.com>
4999
5000 * class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS.
5001 * cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro.
5002 (lang_identifier): Remove implicit_decl and error_locus.
5003 (IDENTIFIER_IMPLICIT_DECL): Remove.
5004 (SET_IDENTIFIER_IMPLICTI_DECL): Likewise.
5005 (IDENTIFIER_ERROR_LOCUS): Likewise.
5006 (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
5007 (TYPE_ASSEMBLER_NAME_STRING): Likewise.
5008 (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
5009 (implicitly_declare): Remove.
5010 * decl.c (warn_extern_redeclared_static): Remove check of
5011 IDENTIFIER_IMPLICIT_DECL.
5012 (duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS.
5013 (implicitly_declare): Remove.
5014 (grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS.
5015 (start_function): Don't check IDENTIFIER_IMPLICIT_DECL.
5016 (start_method): Don't check IDENTIFIER_ERROR_LOCUS.
5017 * lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL
5018 in the innermost scope, rather than at namespace scope.
5019 * name-lookup.c (push_local_binding): Give it external linkage.
5020 (pushdecl): Remove dead code.
5021 * name-lookup.h (push_local_binding): Declare it.
5022 * ptree.c (cxx_print_identifier): Don't print
5023 IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS.
5024 * search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P,
5025 not IDENTIFIER_ERROR_LOCUS.
5026 * typeck.c (build_function_call): Remove dead code.
5027
5028 2004-03-08 Jason Merrill <jason@redhat.com>
5029
5030 PR c++/13170
5031 * decl.c (xref_tag): Remove attribute handling.
5032 * cp-tree.h: Adjust prototype.
5033 * decl.c, parser.c, rtti.c: Adjust callers.
5034 * parser.c (cp_parser_class_head): Pass back attributes in the
5035 class head.
5036 (cp_parser_class_specifier): Adjust.
5037
5038 2004-03-08 Matt Austern <austern@apple.com>
5039
5040 PR debug/14079
5041 * name-lookup.c (add_decl_to_level): Add extern variables, as well
5042 as static, to static_decls array.
5043
5044 2004-03-05 Jason Merrill <jason@redhat.com>
5045
5046 * tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/.
5047
5048 2004-03-04 Geoffrey Keating <geoffk@apple.com>
5049
5050 * decl.c (grokfndecl): Update old incorrect comment.
5051 (grokvardecl): Diagnose C++ variables of type with no linkage.
5052
5053 2004-03-01 Mark Mitchell <mark@codesourcery.com>
5054
5055 PR c++/14369
5056 * pt.c (build_non_dependent_expr): Do not create a
5057 NON_DEPENDENT_EXPR for a THROW_EXPR.
5058
5059 2004-03-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
5060
5061 PR c++/14369
5062 * error.c (dump_expr): Handle THROW_EXPR.
5063
5064 2004-03-01 Mark Mitchell <mark@codesourcery.com>
5065
5066 PR c++/14360
5067 * parser.c (cp_parser_postfix_expression): Do not perform Koenig
5068 lookup if ordinary name-lookup finds a non-function.
5069 * pt.c (tsubst_copy_and_build): Likewise.
5070
5071 PR c++/14361
5072 * parser.c (cp_parser_late_parsing_default_args): Check that there
5073 are no extra tokens after the end of the default-argument
5074 expression.
5075
5076 2004-03-01 Mark Mitchell <mark@codesourcery.com>
5077
5078 PR c++/14324
5079 * lex.c (retrofit_lang_decl): Treat entities with no linkage as
5080 having C++ linkage for name-mangling purposes.
5081
5082 PR c++/14260
5083 * parser.c (cp_parser_direct_declarator): Recognize constructor
5084 declarators that use a template-id to name the class being
5085 constructed.
5086
5087 PR c++/14337
5088 * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
5089 (tsubst_expr): Do not call tsubst_copy, even when
5090 processing_template_decl.
5091
5092 2004-03-01 Jeff Law <law@redhat.com>
5093
5094 * init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
5095 the proper type.
5096
5097 2004-02-29 Mark Mitchell <mark@codesourcery.com>
5098
5099 PR c++/14138
5100 * name-lookup.h (push_scope): Change prototype.
5101 * name-lookup.c (push_scope): Do not reenter the current class
5102 scope.
5103 * decl.c (grokfndecl): Check return code from push_scope before
5104 calling pop_scope.
5105 * decl2.c (check_classfn): Likewise.
5106 * parser.c (cp_parser_conversion_function_id): Likewise.
5107 (cp_parser_init_declarator): Likewise.
5108 (cp_parser_direct_declarator): Likewise.
5109 (cp_parser_class_specifier): Likewise.
5110 (cp_parser_class_head): Likewise.
5111 (cp_parser_lookup_name): Likewise.
5112 (cp_parser_constructor_declarator_p): Likewise.
5113 * pt.c (instantiate_class_template): Likewise.
5114 (resolve_typename_type): Likewise.
5115
5116 2004-02-29 Mark Mitchell <mark@codesourcery.com>
5117
5118 PR c++/14267
5119 * typeck.c (build_modify_expr): Remove more of the cast-as-lvalue
5120 extension.
5121
5122 PR debug/12103
5123 * class.c (update_vtable_entry_for_fn): Do not go through
5124 covariance machinery if the type returned by an overrider is the
5125 same as the original.
5126
5127 2004-02-29 Kazu Hirata <kazu@cs.umass.edu>
5128
5129 * call.c: Fix a comment typo.
5130
5131 2004-02-27 Ziemowit Laski <zlaski@apple.com>
5132
5133 * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.
5134
5135 2004-02-26 Mark Mitchell <mark@codesourcery.com>
5136
5137 PR c++/14278
5138 * parser.c (cp_parser_parameter_declaration_list): Commit
5139 to fewer tentative parses.
5140
5141 2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5142
5143 PR c++/14284
5144 * pt.c (dependent_type_p_r): A template template parameter is a
5145 dependent type.
5146
5147 2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5148
5149 PR c++/14246
5150 * mangle.c (write_template_arg_literal): Don't rely on identity for
5151 boolean constants.
5152
5153 2004-02-24 Jason Merrill <jason@redhat.com>
5154
5155 * tree.c (build_exception_variant): Use check_qualified_type.
5156
5157 2004-02-23 Zack Weinberg <zack@codesourcery.com>
5158 Kazu Hirata <kazu@cs.umass.edu>
5159
5160 * decl.c (cxx_init_decl_processing): Don't check
5161 flag_writable_strings.
5162
5163 2004-02-23 Andrew Pinski <pinskia@physics.uc.edu>
5164
5165 PR c++/14156
5166 * typeck.c (maybe_warn_about_returning_address_of_location):
5167 Change check for VAR_DECL to use DECL_P instead.
5168
5169 2004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5170
5171 PR c++/14250
5172 * cvt.c (build_expr_type_conversion): Type must be complete before
5173 looking up for conversions.
5174
5175 2004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5176
5177 PR c++/14143
5178 * name-lookup.c (arg_assoc_class): Don't look into template
5179 arguments if it is not a primary template.
5180
5181 2004-02-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
5182
5183 PR c++/12007
5184 * method.c (use_thunk): Always clone function argument tree.
5185
5186 2004-02-20 Mark Mitchell <mark@codesourcery.com>
5187
5188 PR c++/14199
5189 * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
5190
5191 PR c++/14173
5192 * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
5193 for all type variants.
5194
5195 2004-02-19 Mark Mitchell <mark@codesourcery.com>
5196
5197 PR c++/13927
5198 * decl.c (duplicate_decls): Return error_mark_node for invalid
5199 redeclarations.
5200 * name-lookup.c (push_namespace): Ignore the return value from
5201 pushdecl.
5202 * pt.c (push_template_decl_real): Robustify.
5203
5204 PR c++/14186
5205 * name-lookup.c (push_class_level_binding): Do not complain about
5206 adding a binding for a member whose name is the same as the
5207 enclosing class if the member is located in a base class of the
5208 current class.
5209
5210 2004-02-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5211
5212 PR c++/14181
5213 * parser.c (cp_parser_new_expression): Parse an ill-formed
5214 direct-new-declarator after a parenthesized type-id to emit good
5215 diagnostic.
5216
5217 2004-02-18 Kazu Hirata <kazu@cs.umass.edu>
5218
5219 * cp-tree.def, cvt.c: Update copyright.
5220
5221 2004-02-17 Mark Mitchell <mark@codesourcery.com>
5222
5223 PR c++/11326
5224 * cp-tree.h (abi_version_at_least): Remove.
5225 * mangle.c: Include flags.h.
5226
5227 2004-02-15 Mark Mitchell <mark@codesourcery.com>
5228
5229 PR c++/13971
5230 * call.c (build_conditional_expr): Handle conversions between
5231 class types which result in differently cv-qualified type
5232 variants.
5233
5234 PR c++/14086
5235 * class.c (delete_duplicate_fields_1): Remove.
5236 (delete_duplicate_fields): Likewise.
5237 (finish_struct_anon): Remove check for members with the same name
5238 as their enclosing class.
5239 (check_field_decls): Do not call duplicate_fields.
5240 * decl.c (grokdeclarator): Remove check for static data members
5241 with the same name as their enclosing class.
5242 * name-lookup.c (push_class_level_binding): Check for members with
5243 the same name as their enclosing class.
5244
5245 2004-02-15 Gabriel Dos Reis <gdr@integrable-solutions.net>
5246
5247 PR c++/14085
5248 * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
5249
5250 2004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5251
5252 PR c++/13635
5253 * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
5254 has full set of arguments.
5255
5256 2004-02-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5257
5258 PR c++/13927
5259 * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
5260
5261 2004-02-13 Mark Mitchell <mark@codesourcery.com>
5262
5263 PR c++/14122
5264 * cp-tree.h (delete_sanity): Change prototype.
5265 * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
5266 Remove dead code. Adjust code to warn about deleting an array.
5267 * typekc.c (decay_conversion): Use build_address and build_nop.
5268
5269 PR c++/14108
5270 * search.c (accessible_p): Do not check access in thunks.
5271
5272 PR c++/14083
5273 * call.c (build_conditional_expr): Call force_rvalue on the
5274 non-void operand in the case that one result is a throw-expression
5275 and the other is not.
5276
5277 2004-02-13 Ian Lance Taylor <ian@wasabisystems.com>
5278
5279 PR c++/9851
5280 * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
5281 the type name and look ahead for ::~, and bail out early with a
5282 better error message if the parse is going to fail.
5283
5284 2004-02-12 Mark Mitchell <mark@codesourcery.com>
5285
5286 * call.c (conversion_kind): New type.
5287 (conversion_rank): Likewise.
5288 (conversion): Likewise.
5289 (CONVERSION_RANK): New macro.
5290 (conversion_obstack): New variable.
5291 (obstack_initialized): Likewise.
5292 (z_candidate): Change type of convs and second_conv.
5293 (candidate_warning): New type.
5294 (IDENTITY_RANK): Remove.
5295 (EXACT_RANK): Likewise.
5296 (PROMO_RANK): Likewise.
5297 (STD_RANK): Likewise.
5298 (PBOOL_RANK): Likewise.
5299 (USER_RANK): Likewise.
5300 (ELLIPSIS_RANK): Likewise.
5301 (BAD_RANK): Likewise.
5302 (ICS_RANK): Likewise.
5303 (ICS_STD_RANK): Likewise.
5304 (ICS_USER_FLAG): Likewise.
5305 (ICS_ELLIPSIS_FLAG): Likewise.
5306 (ICS_THIS_FLAG): Likewise.
5307 (ICS_BAD_FLAG): Likewise.
5308 (NEED_TEMPORARY_P): Likewise.
5309 (CHECK_COPY_CONSTRUCTOR_P): Likewise.
5310 (USER_CONV_CAND): Likewise.
5311 (USER_CONV_FN): Likewise.
5312 (conversion_obstack_alloc): New function.
5313 (alloc_conversion): Likewise.
5314 (validate_conversion_obstack): Likewise.
5315 (alloc_conversions): Likewise.
5316 (build_conv): Adjust to deal with new conversion data structures.
5317 (build_identity_conv): New function.
5318 (build_ambiguous_conv): Likewise.
5319 (standard_conversion): Adjust to deal with new conversion data
5320 structures.
5321 (convert_class_to_reference): Likewise.
5322 (direct_reference_binding): Likewise.
5323 (reference_binding): Likewise.
5324 (implicit_conversion): Likewise.
5325 (add_candidate): Likewise.
5326 (add_function_candidate): Likewise.
5327 (add_conv_candidate): Likewise.
5328 (build_builtin_candidate): Likewise.
5329 (print_z_candidate): Likewise.
5330 (merge_conversion_sequences): Likewise.
5331 (build_user_type_conversion_1): Likewise.
5332 (build_user_type_conversion): Likewise.
5333 (build_new_function_call): Likewise.
5334 (build_object_call): Likewise.
5335 (conditional_conversion): Likewise.
5336 (build_conditional_expr): Likewise.
5337 (build_new_op): Likewise.
5338 (build_op_delete_call): Likewise.
5339 (convert_like_real): Likewise.
5340 (build_over_call): Likewise.
5341 (build_new_method_call): Likewise.
5342 (is_subseq): Likewise.
5343 (maybe_handle_implicit_object): Likewise.
5344 (maybe_handle_ref_bind): Likewise.
5345 (compare_ics): Likewise.
5346 (source_type): Likewise.
5347 (add_warning): Likewise.
5348 (joust): Likewise.
5349 (can_convert_arg): Likewise.
5350 (can_convert_arg_bad): Likewise.
5351 (perform_implicit_conversion): Likewise.
5352 (perform_direct_initialization_if_possible): Likewise.
5353 (initialize_reference): Likewise.
5354 * cp-lang.c (cp_tree_size): Do not handle WRAPPER.
5355 * cp-tree.def (WRAPPER): Likewise.
5356 (IDENTITY_CONV): Remove.
5357 (LVALUE_CONV): Likewise.
5358 (QUAL_CONV): Likewise.
5359 (STD_CONV): Likewise.
5360 (PTR_CONV): Likewise.
5361 (PMEM_CONV): Likewise.
5362 (BASE_CONV): Likewise.
5363 (REF_BIND): Likewise.
5364 (USER_CONV): Likewise.
5365 (AMBIG_CONV): Likewise.
5366 (RVALUE_CONV): Likewise.
5367 * cp-tree.h (tree_wrapper): Remove.
5368 (WRAPPER_ZC): Remove.
5369 (lang_tree_node): Remove wrapper.
5370 (LOOKUP_SPECULATIVELY): Remove.
5371 (build_op_delete_call): Adjust prototype.
5372 (validate_conversion_obstack): Declare.
5373 (build_zc_wrapper): Remove.
5374 * cvt.c (convert_to_reference): Remove dead code.
5375 (ocp_convert): Likewise.
5376 * decl.c (redeclaration_error_message): Correct handling of
5377 templates.
5378 (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
5379 (cp_tree_node_structure): Remove WRAPPER case.
5380 * decl2.c (finish_file): Call validate_conversion_obstack.
5381 * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
5382 (build_op_delete_call): Likewise.
5383 (build_x_delete): Likewise.
5384 (build_delete): Adjust call to build_op_delete_call.
5385 * pt.c (tsubst_friend_declaration): Adjust code to determine
5386 whether or not a friend template is a definition.
5387 (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
5388 * tree.c (build_zc_wrapper): Remove.
5389
5390 2004-02-12 Zack Weinberg <zack@codesourcery.com>
5391
5392 * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
5393 * cp-tree.h: Don't declare cxx_builtin_type_decls.
5394 * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
5395 (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
5396
5397 2004-02-10 Mark Mitchell <mark@codesourcery.com>
5398
5399 * typeck.c (lookup_destructor): Fix typo in error message.
5400
5401 2004-02-09 Kazu Hirata <kazu@cs.umass.edu>
5402
5403 * call.c, parser.c, tree.c: Fix comment typos.
5404
5405 2004-02-07 Zack Weinberg <zack@codesourcery.com>
5406
5407 Bug 13856
5408 * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
5409 * decl.c (duplicate_decls, start_function): Likewise.
5410
5411 2004-02-07 Zack Weinberg <zack@codesourcery.com>
5412
5413 * name-lookup.c (pushdecl): Issue shadow warnings directly.
5414 * parser.c (free_parser_stacks): Delete.
5415
5416 2004-02-07 Kazu Hirata <kazu@cs.umass.edu>
5417
5418 * rtti.c: Update copyright.
5419
5420 2004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5421
5422 PR c++/14033
5423 * decl.c (require_complete_types_for_parms): Do not insert
5424 error_mark_node in the parameter list.
5425
5426 2004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5427
5428 PR c++/14028
5429 * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
5430 error when terminator can not be found.
5431
5432 2004-02-05 Kelley Cook <kcook@gcc.gnu.org>
5433
5434 Make-lang.in (po-generated): Delete.
5435
5436 2004-02-05 Kazu Hirata <kazu@cs.umass.edu>
5437
5438 * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
5439 targetm.calls.promote_prototypes.
5440
5441 2004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
5442
5443 PR middle-end/13750
5444 Revert:
5445 2004-01-15 Geoffrey Keating <geoffk@apple.com>
5446 PR pch/13361
5447 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
5448 (handle_pragma_implementation): Likewise.
5449
5450 2004-02-05 Mark Mitchell <mark@codesourcery.com>
5451
5452 PR c++/13714
5453 * typeck.c (lookup_destructor): Tweak error message.
5454
5455 2004-02-05 Jan Hubicka <jh@suse.cz>
5456
5457 * tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat
5458 functions.
5459
5460 2004-02-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5461
5462 PR c++/14008
5463 * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
5464 code, only emits the diagnostic now. Added lookup of the identifier
5465 and support for qualified ids.
5466 (cp_parser_parse_and_diagnose_invalid_type_name): New function.
5467 Parse an (invalid) type name as id-expression within a declarator.
5468 (cp_parser_simple_declaration): Use it.
5469 (cp_parser_member_declaration): Likewise.
5470 (cp_parser_make_typename_type): New function. Handle errors through
5471 cp_parser_diagnose_invalid_typename.
5472 (cp_parser_elaborated_type_specifier): Use it.
5473
5474 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5475
5476 PR c++/13932
5477 * call.c (convert_like_real): Use "converting" rather than
5478 "argument" as the descriptive keyword to
5479 dubious_conversion_warnings.
5480 * typeck.c (convert_for_assignment): Do not call
5481 dubious_conversion_warnings.
5482
5483 2004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5484
5485 PR c++/13086
5486 * init.c (build_delete): Emit a more informative error message in
5487 case of an incomplete type, and on the correct source line.
5488
5489 2004-02-04 Kazu Hirata <kazu@cs.umass.edu>
5490
5491 * error.c, search.c: Update copyright.
5492
5493 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5494
5495 PR c++/9941
5496 * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
5497 linkage for the typeinfo name string.
5498
5499 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5500
5501 PR c++/13969
5502 * cp-tree.h (fold_non_dependent_expr): New function.
5503 * parser.c (cp_parser_fold_non_dependent_expr): Remove.
5504 (cp_parser_template_argument): Use fold_non_dependent_expr.
5505 (cp_parser_direct_declarator): Likewise.
5506 * pt.c (fold_non_dependent_expr): New function.
5507 (convert_nontype_argument): Use it.
5508 (tsubst_qualified_id): Simplify.
5509 (tsubst_copy_and_build): Likewise.
5510
5511 2004-02-04 Mark Mitchell <mark@codesourcery.com>
5512
5513 * decl.c (cxx_push_function_context): Do not set
5514 current_function_is_thunk.
5515 * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
5516 actual function.
5517
5518 2004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5519
5520 PR c++/13997
5521 * pt.c (more_specialized_class): Increase processing_template_decl
5522 while partial ordering.
5523
5524 2004-02-03 Mark Mitchell <mark@codesourcery.com>
5525
5526 PR c++/13925
5527 * decl.c (start_function): Do not call pushdecl for any
5528 instantiation or specialization of a primary template.
5529
5530 2004-02-03 Mark Mitchell <mark@codesourcery.com>
5531
5532 PR c++/13950
5533 * parser.c (cp_parser_class_name): Robustify.
5534
5535 PR c++/13970
5536 * parser.c (cp_parser_cache_group): Do not consume the EOF token.
5537
5538 PR c++/14002
5539 * semantics.c (finish_id_expression): Do not return an
5540 IDENTIFIER_NODE when lookup finds a PARM_DECL.
5541
5542 2004-02-03 Mark Mitchell <mark@codesourcery.com>
5543
5544 PR c++/13978
5545 * pt.c (build_non_dependent_expr): Do not build
5546 NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
5547
5548 PR c++/13968
5549 * semantics.c (finish_id_expression): Do not return an
5550 IDENTIFIER_NODE when lookup finds a VAR_DECL.
5551
5552 PR c++/13975
5553 * parser.c (cp_parser_simple_declaration): When skipping to the
5554 end of the statement swallow the terminating semicolon.
5555
5556 2004-02-02 Mark Mitchell <mark@codesourcery.com>
5557
5558 PR c++/13113
5559 * init.c (build_offset_ref): Improve error recovery for invalid
5560 uses of non-static member functions.
5561
5562 PR c++/13854
5563 * cp-tree.h (cp_build_type_attribute_variant): New function.
5564 * class.c (build_clone): Use cp_build_type_attribute_variant.
5565 * decl.c (duplicate_decls): Likewise.
5566 * pt.c (copy_default_args_to_explicit_spec): Likewise.
5567 (tsubst_function_type): Likewise.
5568 * tree.c (build_exception_variant): Check attributes before
5569 concluding that two types are the same.
5570 (cp_build_type-attribute_variant): New method.
5571 * typeck.c (merge_types): Use cp_build_type_attribute_variant.
5572
5573 PR c++/13907
5574 * call.c (convert_class_to_reference): Keep better track of
5575 pedantically invalid user-defined conversions.
5576
5577 2004-02-01 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5578
5579 PR c++/13957
5580 * pt.c (tsubst_qualified_id): Improved error message when a type
5581 is expected but not found.
5582
5583 2004-01-31 Kazu Hirata <kazu@cs.umass.edu>
5584
5585 * class.c: Fix comment typos.
5586 * decl.c: Likewise.
5587 * error.c: Likewise.
5588 * parser.c: Likewise.
5589 * pt.c: Likewise.
5590 * search.c: Likewise.
5591 * typeck.c: Likewise.
5592
5593 2004-01-30 Richard Henderson <rth@redhat.com>
5594
5595 PR c++/13693
5596 * method.c (use_thunk): Don't force_target_expr for void thunks.
5597 * tree.c (build_target_expr_with_type): Assert non-void type.
5598 (force_target_expr): Likewise.
5599
5600 2004-01-30 Michael Matz <matz@suse.de>
5601
5602 * parser.c (cp_parser_labeled_statement): Accept case ranges.
5603
5604 2004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5605
5606 DR206
5607 PR c++/13813
5608 * decl.c (grokdeclarator): Check immediatly type completeness for
5609 non-dependent types.
5610
5611 2004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5612
5613 PR c++/13683
5614 * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
5615 a sizeof expression.block
5616
5617 2004-01-29 Mark Mitchell <mark@codesourcery.com>
5618
5619 PR c++/13883
5620 * mangle.c (write_encoding): Correct encoding of member template
5621 constructors.
5622
5623 2004-01-28 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5624
5625 * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
5626 template name as it was `<::' (digraph typo).
5627 (cp_parser_nth_token_starts_template_argument_list_p): New function.
5628 (cp_parser_id_expression): Use it.
5629 (cp_parser_nested_name_specifier_opt): Likewise.
5630 (cp_parser_template_name): Likewise.
5631 (cp_parser_class_name): Likewise.
5632 (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
5633
5634 2004-01-28 Mark Mitchell <mark@codesourcery.com>
5635
5636 PR c++/13791
5637 * typeck.c (merge_types): Do not merge attributes into
5638 TYPENAME_TYPEs.
5639
5640 PR c++/13736
5641 * parser.c (cp_parser_direct_declarator): Do not prevent
5642 backtracking inside a parenthesized declarator.
5643 (cp_parser_parameter_declaration): Fix typo in comment.
5644
5645 2004-01-28 Jan Hubicka <jh@suse.cz>
5646
5647 * semantics.c (expand_body) Do emit_associated_thunks before
5648 expansion.
5649
5650 2004-01-27 Devang Patel <dpatel@apple.com>
5651
5652 * name-lookup.c: Include "debug.h"
5653 (do_namespace_alias): Invoke debug_hooks to emit debug info
5654 for namespace alias.
5655 (do_local_using_decl): Invoke debug_hooks to emit debug info
5656 for using decl.
5657 (do_class_using_decl): Same.
5658 (do_toplevel_using_decl): Same.
5659 (do_using_directive): Same.
5660 (cp_emit_debug_info_for_using): New function.
5661 * Make-lang.in (cp/parser.o): Depend on debug.h
5662 (cp/name-lookup.o): Same.
5663
5664 2004-01-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5665
5666 * cp-tree.h (language_function, lang_type_header): Use
5667 BOOL_BITFIELD.
5668 * name-lookup.h (cp_binding_level): Likewise.
5669
5670 2004-01-26 Mark Mitchell <mark@codesourcery.com>
5671
5672 PR c++/13663
5673 * semantics.c (finish_for_expr): Check for unresolved overloaded
5674 functions.
5675
5676 * class.c (add_method): Just check processing_template_decl to
5677 determine whether or not we are within a template.
5678 * decl2.c (maybe_retrofit_in_chrg): Likewise.
5679 * init.c (decl_constant_value): Check the type of the declaration,
5680 not TREE_READONLY.
5681 * name-lookup.c (maybe_push_to_top_level): Rename to ...
5682 (push_to_top_level): ... this.
5683 * name-lookup.h (maybe_push_to_top_level): Do not declare it.
5684 * pt.c (push_template_decl_real): Reorder condition for speed.
5685 (convert_template_argument): Use dependency-checking functions in
5686 place of uses_template_parms.
5687 (lookup_template_class): Avoid calling uses_template_parms more
5688 than once.
5689 (uses_template_parms): Reimplement, using dependency-checking
5690 functions.
5691 (instantiate_class_template): Use push_to_top_level, not
5692 maybe_push_to_top_level.
5693 (type_unification_real): Simplify.
5694 (type_dependent_expression_p): Handle OFFSET_REFs and
5695 TEMPLATE_DECLs.
5696 (any_dependent_template_arguments_p): Handle multiple levels of
5697 template argument.
5698 * semantics.c (expand_or_defer_fn): Do not check
5699 uses_template_parms for template instantiations.
5700 * typeck.c (comptypes): Avoid calling cp_type_quals.
5701
5702 2004-01-25 Mark Mitchell <mark@codesourcery.com>
5703
5704 PR c++/13833
5705 * call.c (build_over_call): Do not convert arguments when
5706 processing a template.
5707 * pt.c (build_non_dependent_expr): Do not build a
5708 NON_DEPENDENT_EXPR for arithmetic constants.
5709
5710 2004-01-25 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5711
5712 PR c++/13810
5713 * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
5714 returns a TYPE_DECL. no further lookup is required.
5715 * semantics.c (check_template_template_default_arg): A TYPE_DECL
5716 is invalid. Rework to give better diagnostics.
5717
5718 2004-01-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5719
5720 PR c++/13797
5721 * pt.c (instantiate_class_template): Add an error_mark_node
5722 check.
5723 (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
5724
5725 2004-01-23 Andrew Pinski <pinskia@physics.uc.edu>
5726
5727 PR c++/13701
5728 * decl.c (finish_function): Move the call to
5729 finish_fname_decls below the call to
5730 finish_eh_spec_block.
5731
5732 2004-01-21 Kazu Hirata <kazu@cs.umass.edu>
5733
5734 * optimize.c, typeck2.c: Update copyright.
5735
5736 2004-01-21 Kazu Hirata <kazu@cs.umass.edu>
5737
5738 * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
5739 init.c, mangle.c, typeck.c: Update copyright.
5740
5741 2004-01-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
5742
5743 * parser.c (cp_parser_class_specifier): Prevent garbage collection.
5744
5745 2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
5746
5747 * Make-lang.in: Replace $(docdir) with doc.
5748 (c++.info, c++.srcinfo): Dummy entry.
5749 (c++.man, c++.srcman): New rules.
5750 (c++.install-man): Revamp rule.
5751
5752 2004-01-20 Kelley Cook <kcook@gcc.gnu.org>
5753
5754 * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
5755 CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
5756 immediate $(shell) instead of deferred backquote.
5757
5758 2004-01-19 Mark Mitchell <mark@codesourcery.com>
5759
5760 PR c++/13651
5761 * parser.c (cp_parser_postfix_expression): When encountering
5762 incomplete type on left-hand side of "->" or ".", treat the entire
5763 expression as erroneous.
5764
5765 PR c++/13592
5766 * call.c (build_field_call): Remove.
5767 (n_build_method_call): Likewise.
5768 (build_method_call): Likewise.
5769 (build_new_method_call): Do not call build_field_call.
5770 * class.c (n_build_method_call): Remove.
5771 (print_class_statistics): Do not print it.
5772 * cp-tree.h (build_method_call): Remove declaration.
5773 (finish_object_call_expr): Likewise.
5774 (build_new_1): Do not use build_method_call.
5775 * parser.c (cp_parser_postfix_expression): Use finish_call_expr
5776 when the function appearing on the right-hand-side of "." or "->"
5777 is not actually a function.
5778 * pt.c (tsubst_copy_and_build): Likewise.
5779 * semantics.c (finish_object_call_expr): Remove.
5780
5781 2004-01-18 Mark Mitchell <mark@codesourcery.com>
5782
5783 PR c++/13710
5784 * pt.c (tsubst): Use finish_typeof.
5785
5786 2004-01-18 Jason Merrill <jason@redhat.com>
5787
5788 PR c++/11725
5789 * except.c (build_throw): In a template, set
5790 current_function_returns_abnormally.
5791
5792 2004-01-17 Fred Fish <fnf@intrinsity.com>
5793
5794 PR c++/11895
5795 * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
5796 except don't call array_type_nelts() with a VECTOR_TYPE.
5797
5798 2004-01-16 Jan Hubicka <jh@suse.cz>
5799
5800 * mangle.c (write_mangled_name): Remove inline modifier.
5801
5802 2004-01-16 Mark Mitchell <mark@codesourcery.com>
5803
5804 PR c++/13574
5805 * decl.c (compute_array_index_type): Fix grammar in comment.
5806 * init.c (build_zero_init): Handle zero-sized arrays correctly.
5807
5808 PR c++/13178
5809 * call.c (name_as_c_string): Print conversion operator names
5810 correctly.
5811
5812 PR c++/13478
5813 * call.c (initialize_reference): Pass -1 for inner parameter to
5814 convert_like_real.
5815
5816 2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5817
5818 PR c++/13407
5819 * parser.c (cp_parser_base_specifier): Check for an invalid
5820 keyword `typename' and emit an user-friendly error message.
5821
5822 2004-01-15 Geoffrey Keating <geoffk@apple.com>
5823
5824 PR pch/13361
5825 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
5826 (handle_pragma_implementation): Likewise.
5827
5828 2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5829
5830 PR c++/9259
5831 * typeck.c (build_class_member_access_expr): Allow to access members
5832 of the currently open class.
5833 (finish_class_member_access_expr): Likewise.
5834
5835 2004-01-15 Alexandre Oliva <aoliva@redhat.com>
5836
5837 PR c++/13659
5838 * name-lookup.c (validate_nonmember_using_decl): Take scope and
5839 name by value, instead of computing them.
5840 (do_local_using_decl, do_toplevel_using_decl): Add scope and name
5841 arguments. Pass them to validate_nonmember_using_decl.
5842 * name-lookup.h (do_local_using_decl): Adjust.
5843 (do_toplevel_using_decl): Likewise.
5844 * parser.c (cp_parser_using_declaration): Likewise.
5845 * pt.c (tsubst_expr): Likewise.
5846
5847 2004-01-15 Alexandre Oliva <aoliva@redhat.com>
5848
5849 PR c++/13594
5850 PR c++/13658
5851 * name-lookup.c (qualified_lookup_using_namespace): Search
5852 strongly-associated namespaces first, and only then try other
5853 namespaces.
5854
5855 2004-01-15 Kelley Cook <kcook@gcc.gnu.org>
5856
5857 * Make-lang.in (c++.srcextra): Dummy entry.
5858
5859 2004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5860
5861 PR c++/8856
5862 * parser.c (cp_parser_template_name): Don't try to parse a
5863 conversion-function-id, as it cannot be a template-name.
5864 (cp_parser_simple_type_specifier): Check for invalid template-ids
5865 even after a built-in type.
5866
5867 2004-01-14 Jan Hubicka <jh@suse.cz>
5868
5869 PR c++/12850
5870 * pt.c (instantiate_decl): Do not increase function_depth.
5871
5872 2004-01-14 Danny Smith <dannysmith@users,sourceforge.net>
5873
5874 PR c++/9021
5875 PR c++/11005
5876 * parser.c (cp_parser_elaborated_type_specifier): Warn about
5877 attributes and discard.
5878 * decl.c (xref_tag): Don't overwite existing attributes with
5879 NULL_TREE.
5880
5881 2004-01-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5882
5883 PR c++/12335
5884 * parser.c (cp_parser_lookup_name): Return error_mark_node if there
5885 is no destructor while looking up a BIT_NOT_EXPR.
5886
5887 2004-01-13 Ian Lance Taylor <ian@wasabisystems.com>
5888
5889 * cxxfilt.c: Remove unused file.
5890
5891 2004-01-14 Jan Hubicka <jh@suse.cz>
5892
5893 Partial fix to PR c++/12850
5894 * decl2.c (mark_used): Do not proactively instantiate templates
5895 when compiling in unit-at-a-time or not optimizing.
5896 * optimize.c (maybe_clone_body): Do not increase function depth.
5897
5898 2004-01-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5899
5900 PR c++/13474
5901 * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
5902
5903 2004-01-12 Steven Bosscher <stevenb@suse.de>
5904
5905 PR c++/13558
5906 * parser.c (cp_parser_member_declaration): Any non-type is also
5907 not a class or a function.
5908
5909 2004-01-12 Jason Merrill <jason@redhat.com>
5910
5911 PR c++/12815
5912 * class.c (build_base_path): Do not mark vtable references as
5913 TREE_CONSTANT.
5914 (build_vtbl_ref_1): Likewise.
5915
5916 2004-01-12 Richard Henderson <rth@redhat.com>
5917
5918 PR opt/10776
5919 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
5920 (store_init_value): Use it.
5921 * decl.c (check_initializer): Expect full initialization code
5922 from store_init_value.
5923 * init.c (expand_aggr_init_1): Likewise.
5924 * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
5925
5926 2004-01-12 Mark Mitchell <mark@codesourcery.com>
5927
5928 * class.c (layout_class_type): For non-POD class types, also copy
5929 the DECL_SIZE and DECL_MODE of fields to the base class type.
5930
5931 2004-01-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5932
5933 PR c++/13289
5934 * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
5935 calling regenerate_decl_from_template.
5936
5937 2004-01-12 Scott Brumbaugh <scottb.lists@verizon.net>
5938
5939 PR c++/4100
5940 * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
5941 decl-specifier occurring along with a class definition.
5942
5943 2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
5944
5945 * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
5946 clauses to comments describing declares_class_or_enum.
5947 (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
5948 false.
5949
5950 2004-01-12 Jan Hubicka <jh@suse.cz>
5951
5952 * pt.c (for_each_template_parm): Do not check for duplicates.
5953 (for_each_template_parm): Use walk_tree duplicate checking code.
5954
5955 2004-01-11 Ian Lance Taylor <ian@wasabisystems.com>
5956
5957 PR c++/3478
5958 * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
5959 is error_mark_node, don't add any more decl_specs.
5960 (cp_parser_init_declarator): After committing to a declaration, if
5961 the decl_specifiers start with error_mark_node, issue an error and
5962 change the type to "int".
5963
5964 2004-01-09 Nathanael Nerode <neroden@gcc.gnu.org>
5965
5966 PR bootstrap/7817
5967 * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
5968
5969 2004-01-10 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5970
5971 DR 337
5972 PR c++/9256
5973 * pt.c (tsubst): Substitution must fail if we are attempting to
5974 create an array with element type that is an abstract class type.
5975 * decl.c (cp_finish_decl): Strip pointers and array types recursively
5976 before calling abstract_virtuals_error.
5977
5978 2004-01-09 Alexandre Oliva <aoliva@redhat.com>
5979
5980 * name-lookup.c (qualified_lookup_using_namespace): Consider
5981 strong using directives even if we've already found a binding.
5982
5983 2004-01-09 Mark Mitchell <mark@codesourcery.com>
5984
5985 * cp-tree.h (cxx_expand_expr): Change prototype.
5986 * expr.c (cxx_expand_expr): Add alt_rtl parameter.
5987
5988 2004-01-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5989
5990 PR c++/12573
5991 * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
5992 looking into them recursively. They can be there because of the
5993 new __offsetof__ extension.
5994
5995 2004-01-07 Zack Weinberg <zack@codesourcery.com>
5996
5997 * parser.c (cp_parser_save_member_function_body): Mark the
5998 definition static.
5999
6000 2004-01-05 Mark Mitchell <mark@codesourcery.com>
6001
6002 PR c++/13057
6003 * class.c (build_clone): Copy type attributes from the original
6004 function to the clone.
6005
6006 PR c++/12815
6007 * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
6008 references as constant.
6009
6010 PR c++/12132
6011 * parser.c (cp_parser_explicit_instantiation): Improve error
6012 recovery.
6013 (cp_parser_require): Improve indication of the error location.
6014
6015 PR c++/13451
6016 * parser.c (cp_parser_class_head): Reorder logic to check for
6017 invalid qualification.
6018
6019 2004-01-04 Mark Mitchell <mark@codesourcery.com>
6020
6021 PR c++/13157
6022 * name-lookup.c (lookup_using_namespace): Remove spacesp
6023 parameter.
6024 (unqualified_namespace_lookup): Likewise.
6025 (lookup_qualified_name): Adjust accordingly.
6026 (lookup_name_real): Likewise.
6027 (lookup_arg_dependent): Do not eliminate the namespace of the
6028 functions found by unqualified name lookup unless that is the
6029 current namespace.
6030
6031 2004-01-04 Andrew Pinski <pinskia@physics.uc.edu>
6032
6033 * semantics.c (push_deferring_access_checks): Fix format.
6034 (resume_deferring_access_checks): Likewise.
6035 (stop_deferring_access_checks): Likewise.
6036 (pop_deferring_access_checks): Likewise.
6037 (get_deferred_access_checks): Likewise.
6038 (pop_to_parent_deferring_access_checks): Likewise.
6039 (perform_deferred_access_checks): Likewise.
6040 (perform_or_defer_access_check): Likewise.
6041
6042 2004-01-04 Richard Henderson <rth@redhat.com>
6043
6044 * call.c (build_over_call): Don't create a save_expr of an
6045 aggregate, but rather its address.
6046
6047 2004-01-04 Mark Mitchell <mark@codesourcery.com>
6048
6049 PR c++/13529
6050 * parser.c (cp_parser_postfix_expression): Allow "." to appear in
6051 an offsetof expression.
6052
6053 * parser.c (cp_parser_parameter_declaration): Fix comment.
6054
6055 PR c++/12226
6056 * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
6057 (reference_binding): Set it when appropriate.
6058 (build_temp): New function, split out from ...
6059 (convert_like_real): ... here. Honor CHECK_COPY_CONSTRUCTOR_P.
6060 (initialize_reference): Likewise.
6061
6062 PR c++/13536
6063 * parser.c (cp_parser): Add in_type_id_in_expr_p.
6064 (cp_parser_new): Initialize it.
6065 (cp_parser_postfix_expression): Set it.
6066 (cp_parser_sizeof_operand): Likewise.
6067 (cp_parser_parameteR_declaration): Do not commit early to tenative
6068 parsers when in_type_id_in_expr_p is set.
6069
6070 2004-01-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6071
6072 PR c++/13094
6073 * parser.c (cp_parser_template_argument): Don't call
6074 make_unbound_class_template directly.
6075 (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
6076 UNBOUND_CLASS_TEMPLATE tree node.
6077
6078 2004-01-02 Richard Sandiford <rsandifo@redhat.com>
6079
6080 PR target/12729
6081 * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
6082
6083 2004-01-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6084
6085 PR c++/13520
6086 * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
6087 (DECL_FUNCTION_TEMPLATE_P): Use it.
6088 (DECL_CLASS_TEMPLATE_P): Likewise.
6089 * parser.c (cp_parser_lookup_name): Add is_template parameter.
6090 (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
6091 (cp_parser_template_name): Likewise.
6092 (cp_parser_elaborated_type_specifier): Likewise.
6093 (cp_parser_namespace_name): Likewise.
6094 (cp_parser_class_name): Likewise.
6095 (cp_parser_lookup_name_simple): Likewise.
6096
6097 See ChangeLog.3 for earlier changes.
This page took 0.3179 seconds and 5 git commands to generate.