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