]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/ChangeLog
Friend class name lookup 5/n PR c++/1016
[thirdparty/gcc.git] / gcc / cp / ChangeLog
CommitLineData
bd3d082e
KL
12005-03-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2
3 Friend class name lookup 5/n
4 PR c++/1016
5 * cp-tree.h (pushtag): Adjust declaration.
6 * decl.c (lookup_and_check_tag): Call lookup_type_scope if
7 lookup_name fails.
8 (xref_tag): Adjust call to pushtag. Make hidden class visible.
9 (start_enum): Adjust call to pushtag.
10 * name-lookup.c (ambiguous_decl): Ignore hidden names.
11 (qualify_lookup): Change return type to bool.
12 (hidden_name_p): New function.
13 (lookup_namespace_name, unqualified_namespace_lookup,
14 lookup_name_real): Use it.
15 (lookup_type_scope): Update comments.
16 (maybe_process_template_type_declaration): Change parameter name
17 from globalize to is_friend.
18 (pushtag): Change globalize parameter of type int to tag_scope.
19 Hide name if introduced by friend declaration.
20 * name-lookup.h (hidden_name_p): Add declaration.
21 * parser.c (cp_parser_lookup_name): Don't deal with hidden name
22 here.
23 * pt.c (push_template_decl_real): Make hidden class template
24 visible.
25 (lookup_template_class, instantiate_class_template): Adjust call
26 to pushtag.
27 * semantics.c (begin_class_definition): Likewise.
28 * rtti.c (init_rtti_processing, build_dynamic_cast_1,
29 tinfo_base_init, emit_support_tinfos): Use ts_current instead of
30 ts_global.
31
98f99d7f
MM
322005-03-13 Mark Mitchell <mark@codesourcery.com>
33
34 PR c++/20157
35 * pt.c (determine_specialization): Reject non-specializations.
36
b68b6828
PB
372005-03-11 Per Bothner <per@bothner.com>
38
39 * cp-tree.h (struct cp_declarator): New id_loc field.
40 * cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
41 location using c_lex_with_flags, instead of input_location.
42 (cp_parser_direct_declarator): Set declarator's id_loc from
43 cp_token's id_loc.
44
004c400a
JJ
452005-03-10 Jakub Jelinek <jakub@redhat.com>
46
47 PR c++/18384, c++/18327
48 * decl.c (reshape_init_array): Use UHWI type for max_index_cst
49 and index. Convert max_index to size_type_node if it isn't
50 host_integerp (, 1).
51
02bab9db
MM
522005-03-09 Mark Mitchell <mark@codesourcery.com>
53
54 PR c++/20208
55 * pt.c (tsubst_decl): Apply array-to-pointer and
56 function-to-pointer conversions to function arguments.
57 (regenerate_decl_from_template): Likewise.
58
07900878
PC
592005-03-09 Paolo Carlini <pcarlini@suse.de>
60
61 PR c++/16859
62 * decl.c (complete_array_type): In pedantic mode, return
63 3 for an empty initializer list as the initializer for an
64 array of unknown bound (8.5.1/4).
65 (maybe_deduce_size_from_array_init): Fix final test to use
66 the above.
67
974b30f0
NS
682005-03-08 Nathan Sidwell <nathan@codesourcery.com>
69
70 PR c++/20186
71 * pt.c (contains_dependent_cast_p): New.
72 (fold_non_dependent_expr): Call it.
73
b5af3133
MM
742005-03-08 Mark Mitchell <mark@codesourcery.com>
75
76 PR c++/20142
77 * cp-tree.h (target_type): Remove.
78 * decl.c (layout_var_decl): Remove #if 0'd code.
79 (cp_finish_decl): Remove dead code.
80 * init.c (build_vec_init): When determining whether or not the
81 element type has an asignment operator, look through all array
82 dimensions.
83 * typeck.c (target_type): Remove.
84
f03e8526
MM
852005-03-07 Mark Mitchell <mark@codesourcery.com>
86
87 * class.c (finish_struct_1): Do not warn about non-virtual
88 destructors in Java classes.
89
6439fffd
KL
902005-03-05 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
91
92 PR c++/19311
93 * init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
94 * pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
95 for OFFSET_TYPE.
96 * typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
97 Also set PTRMEM_OK_P for NON_DEPENDENT_EXPR.
98 (build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside
99 template.
100
713101a6
AO
1012005-03-02 Alexandre Oliva <aoliva@redhat.com>
102
103 * name-lookup.c (push_overloaded_decl): Don't error if the new
104 decl matches the old one.
105 * decl.c (redeclaration_error_message): Likewise.
106
176a0aad
PB
1072005-03-01 Per Bothner <per@bothner.com>
108
109 * decl.c (finish_function): Use SET_EXPR_LOCATION instead of
110 unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.
111
742f25b3
NS
1122005-03-01 Nathan Sidwell <nathan@codesourcery.com>
113
114 PR c++/20232
115 * class.c (update_vtable_entry_for_fn): Don't crash on invalid
116 covariancy.
117
118 * cp-tree.g (THUNK_TARGET): Expand comment.
119 * method.c (use_thunk): Make sure we also use the target, if that
120 is a thunk.
121
5591e5f9
JJ
1222005-02-27 Jakub Jelinek <jakub@redhat.com>
123
124 PR c++/20206
125 * decl.c (cxx_comdat_group): Put thunks for
126 TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
127 comdat group as the thunk target.
128
78dcd41a
VR
1292005-02-24 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
130
131 * call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
132 parser.c: Fix comment typo(s).
133
6ecfe13b
JJ
1342005-02-24 Jakub Jelinek <jakub@redhat.com>
135
136 PR c++/20175
137 * decl.c (reshape_init): Don't warn about missing braces if STRING_CST
138 initializes a char/wchar_t array.
139
1ceb02be
MM
1402005-02-23 Mark Mitchell <mark@codesourcery.com>
141
142 PR c++/19878
143 * decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
144 with internal linkage.
145
6b211746
AO
1462005-02-23 Alexandre Oliva <aoliva@redhat.com>
147
148 * decl.c (grokvardecl): Don't exempt anonymous types from having
149 linkage for variables that have linkage other than "C".
150
f439764f
KH
1512005-02-23 Kazu Hirata <kazu@cs.umass.edu>
152
153 * cp-objcp-common.h, error.c: Update copyright.
154
b671e5a4
MM
1552005-02-22 Mark Mitchell <mark@codesourcery.com>
156
af477510
MM
157 PR c++/20073
158 * decl.c (start_decl_1): Don't clear TREE_READONLY.
159 (cp_finish_decl): Likewise.
160 (complete_vars): Call cp_apply_type_quals_to_decl.
161 * typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
162 cases where that's not valid.
163
744b12b6
MM
164 PR c++/19991
165 * init.c (integral_constant_value): Iterate if the value of a decl
166 is itself a constant.
167
168 PR c++/20152
169 * parser.c (cp_parser_class_head): Check for redefintions here.
170 * semantics.c (begin_class_definition): Not here.
171
172 PR c++/20153
173 * decl2.c (build_anon_union_vars): Add type parameter.
174 (finish_anon_union): Pass it.
175
176 PR c++/20148
177 * error.c (dump_expr): Do not print the body of a BIND_EXPR.
178 Handle STATEMENT_LIST.
179
b671e5a4
MM
180 PR c++/19883
181 * parser.c (cp_parser_direct_declarator): Always complain about
182 non-constant array bounds when in a function scope.
183 * semantics.c (finish_id_expression): Do not mark dependent names
184 as non-constant.
185
9804209d
DG
1862005-02-21 Douglas Gregor <dgregor@cs.indiana.edu>
187
188 PR c++/19076
189 PR c++/6628
190 * cp-tree.h (cp_apply_type_quals_to_decl): Declared.
191 * decl.c (grokdeclarator): Pedwarn about qualifying a function
192 type.
193 Add qualifiers when declaring a typedef of a function type.
194 Member function pointers pick up the qualifiers of the typedef
195 used to declare them.
196 Don't complain about creating cv-qualified function types.
197 Complain about qualified function typedefs that are used to
198 declare non-static member functions or free functions.
199 Use cp_apply_type_quals_to_decl.
200 (start_preparsed_function): Use cp_apply_type_quals_to_decl.
201 (grokclassfn): Use cp_apply_type_quals_to_decl.
202 * error.c (dump_type_suffix): Print qualifiers for function
203 types.
204 * pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
205 (tsubst): When substituting a function type into a member
206 pointer type, pass along the qualifiers.
207 (unify): Unify member pointers to member function pointers.
208 * tree.c (cp_build_qualified_type_real): Function types may be
209 qualified. This includes restrict qualifiers.
210 * typeck.c (cp_apply_type_quals_to_decl): New function to replace
211 use of c_apply_type_quals_to_decl. Drops qualifiers that are being
212 added to function types.
213
c5ff069d
ZW
2142005-02-20 Zack Weinberg <zack@codesourcery.com>
215
216 PR 18785
217 * cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
218 c_common_to_target_charset. Delete bogus comment.
219
39609077
RH
2202005-02-18 Richard Henderson <rth@redhat.com>
221
222 PR libstdc++/10606
223 * except.c (do_get_exception_ptr): New.
224 (expand_start_catch_block): Use it.
225
f36b89e0 2262005-02-19 Jakub Jelinek <jakub@redhat.com>
3045eb55
JJ
227
228 * decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
229 if type is not error_mark_node.
230
aecc0cf0
GB
2312005-01-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
232
233 PR c++/19508
234 * decl2.c (grokfield): Do not apply attributes to template parameters
235 as they are ignored by tsubst anyway.
236
3a96c3b9
JJ
2372005-02-18 Jakub Jelinek <jakub@redhat.com>
238
239 PR c++/19813
240 * decl.c (start_decl_1): Clear TREE_READONLY flag if
241 its type has TYPE_NEEDS_CONSTRUCTING.
242 (complete_vars): Likewise.
243
856a4ce6
AO
2442005-02-17 Alexandre Oliva <aoliva@redhat.com>
245
ae54ec16
AO
246 PR c++/20028
247 * class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
248 template along with TYPE_SIZE.
249
856a4ce6
AO
250 PR c++/20022
251 * semantics.c (perform_deferred_access_checks): Use
252 get_deferred_access_checks to get the top of the stack.
253
e5e459bf
AO
2542005-02-15 Alexandre Oliva <aoliva@redhat.com>
255
256 PR c++/17788
257 * class.c (add_implicitly_declared_members, check_field_decl)
258 (check_field_decls, check_bases): Remove arguments, tests and
259 assignments of cant_have_default_ctor-related variables.
260
39a87435
AO
2612005-02-15 Alexandre Oliva <aoliva@redhat.com>
262
263 * decl2.c (mark_used): Set the source location of the used decl to
264 the current input location here...
265 * method.c (synthesize_method): ... not here. Set input_location
266 from the decl instead.
267
4230cec2
NS
2682005-02-14 Nathan Sidwell <nathan@codesourcery.com>
269
f769035f
NS
270 PR c++/19608
271 * parser.c (cp_parser_late_parsing_for_member): Use
272 current_function_decl as scope to push to and from.
273
4230cec2
NS
274 PR c++/19884
275 * pt.c (check_explicit_specialization): Make sure namespace
276 binding lookup found an overloaded function.
277 (lookup_template_function): Just assert FNS is an overloaded
278 function.
279
280 PR c++/19895
281 * decl.c (grokdeclarator): Check for error mark node in ptrmem
282 construction.
283
d1fc3bbd
AO
2842005-02-14 Alexandre Oliva <aoliva@redhat.com>
285
286 PR c++/17816
287 * decl.c (redeclaration_error_message): Report redefinition of
288 pure virtual function.
289
4230cec2 2902005-02-14 Nathan Sidwell <nathan@codesourcery.com>
12a669d1
NS
291
292 PR c++/19891
293 * class.c (build_simple_base_path): Build the component_ref
294 directly.
295 (update_vtable_entry_for_fn): Walk the covariant's binfo chain
296 rather than using lookup_base.
297 * search.c (dfs_walk_once): Add non-recursive assert check.
298 * typeck.c (build_class_member_access_expr): It is possible for
299 the member type to be both const and volatile.
300
d3270770
KL
3012005-02-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
302
303 PR c++/14479
304 PR c++/19487
305 * pt.c (maybe_check_template_type): Remove.
306 * cp-tree.h (maybe_check_template_type): Remove prototype.
307 * name-lookup.c (maybe_process_template_type_declaration): Don't
308 use maybe_check_template_type.
309
fae6e246
RH
3102005-02-11 Richard Henderson <rth@redhat.com>
311
312 PR c++/19632
c5ff069d
ZW
313 * pt.c (get_mostly_instantiated_function_type): Save and restore
314 flag_access_control instead of push/pop_access_scope.
fae6e246 315
712b39c5
MM
3162005-02-10 Mark Mitchell <mark@codesourcery.com>
317
318 PR c++/19755
319 * decl.c (reshape_init): Issue warnings about missing braces.
320
fb4d77b3
KH
3212005-02-11 Kazu Hirata <kazu@cs.umass.edu>
322
323 * cp-tree.def, except.c, ptree.c: Update copyright.
324
88e95ee3
MM
3252005-02-09 Mark Mitchell <mark@codesourcery.com>
326
6e5bdc64
MM
327 PR c++/19811
328 * call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
329 attempting name lookup.
330
e3754f9c
MM
331 * parser.c (cp_parser_unqualified_id): Initialize type_decl.
332
88e95ee3
MM
333 PR c++/19787
334 * call.c (initialize_reference): Robustify.
335
336 PR ++/19732
337 * decl.c (grokdeclarator): Check for invalid use of destructor
338 names.
339
340 PR c++/19762
341 * parser.c (cp_parser_unqualified_id): Avoid creating destructor
342 names with invalid types.
343
344 PR c++/19826
345 * parser.c (cp_parser_direct_declarator): Allow type-dependent
346 expressions as array bounds.
347
348 PR c++/19739
349 * parser.c (cp_parser_attributes_list): Allow empty lists.
350
9f4faeae
MM
3512005-02-08 Mark Mitchell <mark@codesourcery.com>
352
353 PR c++/19733
354 * class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
355 (check_bases): Give warnings about a base class with a
356 non-virtual destructor, even if it is implicit.
357 (finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
358 (maybe_warn_about_overly_private_class): Don't use
359 TYPE_HAS_DESTRUCTOR.
360 (finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
361 (check_for_override): Give it external linkage.
362 (add_implicitly_declared_members): Generate destructors lazily.
363 (check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
364 TYPE_HAS_DESTRUCTOR.
365 (check_bases_and_members): Call check_methods before
366 check_field_decls.
367 (check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
368 TYPE_HAS_DESTRUCTOR.
369 (finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
370 * cp-tree.def (PSEUDO_DTOR_EXPR): Document.
371 * cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
372 (lang_type_class): Add lazy_destructor.
373 (CLASSTYPE_LAZY_DESTRUCTOR): New macro.
374 (CLASSTYPE_DESTRUCTORS): Robustify.
375 (TYPE_HAS_DESTRUCTOR): Remove.
376 (check_for_override): Declare.
377 (build_vbase_delete): Remove.
378 * cvt.c (convert_to_void): Issue errors about pseudo-destructor
379 expressions.
380 * decl.c (cxx_maybe_build_cleanup): Remove dead code.
381 * except.c (dtor_nothrow): Lazily create destructors if necessary.
382 (build_throw): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
383 * init.c (build_delete): Lazily create destructors, if necessary.
384 (build_vbase_delete): Remove.
385 * method.c (locate_dtor): Simplify.
386 (implicitly_declare_fn): Add support for destructors.
387 * parser.c (cp_parser_lookup_name): Lazily create destructors, if
388 necessary.
389 * pt.c (check_explicit_specialization): Don't use
390 TYPE_HAS_DESTRUCTOR.
391 (instantiate_class_template): Likewise.
392 * ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
393 * rtti.c (emit_support_tinfos): Robustify.
394 * search.c (lookup_fnfields_1): Lazily create destructors.
395 * typeck.c (build_class_member_access_expr): Remove
396 PSEUDO_DTOR_EXPR handling.
397 (lookup_destructor): Likewise.
398
2f990c80
KH
3992005-02-08 Kazu Hirata <kazu@cs.umass.edu>
400
401 * cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update
402 copyright.
403
81122c44
MM
4042005-02-07 Mark Mitchell <mark@codesourcery.com>
405
406 * parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
407 on boolean variables.
408 (cp_lexer_stop_debugging): Likewise.
409
515e6a84
GB
4102005-02-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
411
412 PR c++/17401
413 * parser.c (cp_parser_pure_specifier): Emit a specific error
414 message with an invalid pure specifier.
415 * decl2.c (grok_function_init): Remove.
416 (grokfield): An initializer for a method is a always a pure
417 specifier.
418
100d337a
MA
4192005-02-02 Matt Austern <austern@apple.com>
420
421 PR c++/19628
422 * cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
423 * parser.c (cp_parser_postfix_expression): Accept function call in
424 constant expression if builtin_valid_in_constant_expr_p is true
c5ff069d 425 for that function.
100d337a
MA
426 * pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
427 * semantics.c (finish_id_expression): Accept function call in constant
428 expression if builtin_valid_in_constant_expr_p is true for that
c5ff069d 429 function.
100d337a 430 * tree.c (builtin_valid_in_constant_expr_p): New.
c5ff069d 431
6c02751b
VR
4322005-02-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
433
434 PR c++/17413
435 * pt.c (check_instantiated_args): Improve error message.
436 Fix logic when to print its second part.
437
be20e673
VR
4382005-02-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
439
440 * cp-tree.h (complete_type_or_else): Remove macro.
441 (complete_type_or_diagnostic): Rename to complete_type_or_else
442 and remove last argument.
443 * typeck.c (complete_type_or_diagnostic): Rename to
444 complete_type_or_else and remove last argument.
445
10b2bcdd
VR
4462005-02-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
447
448 * cp-tree.h (commonparms): Remove prototype.
449 (convert_arguments): Likewise.
450 (PFN_FROM_PTRMEMFUNC): Remove.
451 * typeck.c (commonparms): Make static.
452 (convert_arguments): Add prototype. Make static.
453 (PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.
454
8c94c75a
MM
4552005-01-31 Mark Mitchell <mark@codesourcery.com>
456
457 * parser.c (cp_parser_primary_expression): Don't complain about
458 floating-point literals in integral constant expressions when
459 !pedantic.
460
c8a7ed43
AO
4612005-02-01 Alexandre Oliva <aoliva@redhat.com>
462
e894ab29 463 * parser.c (cp_parser_template_id): Revert comment patch too.
c5ff069d 464
c8a7ed43
AO
465 PR c++/18757
466 PR c++/19366
467 PR c++/19499
468 * parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
469 Issue an error when creating the template id.
470 * pt.c (fn_type_unification): Return early if the explicit
471 template arg list is an error_mark_node.
472
93678513
MM
4732005-01-31 Mark Mitchell <mark@codesourcery.com>
474
475 * decl.c (build_enumerator): Do not issue duplicate error messages
476 about invalid enumeration constants.
477 * parser.c (cp_parser_non_integral_constant_expression): Always
478 set parser->non_integral_constant_expression_p.
479 (cp_parser_primary_expression): Add cast_p parameter. Issue
480 errors about invalid uses of floating-point literals in
481 cast-expressions.
482 (cp_parser_postfix_expression): Add cast_p parameter.
483 (cp_parser_open_square_expression): Pass it.
484 (cp_parser_parenthesized_expression_list): Add cast_p parameter.
485 (cp_parser_unary_expression): Likewise.
486 (cp_parser_new_placement): Pass it.
487 (cp_parser_direct_new_declarator): Likewise.
488 (cp_parser_new_initializer): Likewise.
489 (cp_parser_cast_expression): Add cast_p parameter.
490 (cp_parser_binary_expression): Likewise.
491 (cp_parser_question_colon_clause): Likewise.
492 (cp_parser_assignment_expression): Likewise.
493 (cp_parser_expression): Likewise.
494 (cp_parser_constant_expression): If an integral constant
495 expression is invalid, return error_mark_node.
496 (cp_parser_expression_statement): Pass cast_p.
497 (cp_parser_condition): Likewise.
498 (cp_parser_iteration_statement): Likewise.
499 (cp_parser_jump_statement): Likewise.
500 (cp_parser_mem_initializer): Likewise.
501 (cp_parser_template_argument): Likewise.
502 (cp_parser_parameter_declaration): Likewise.
503 (cp_parser_initializer): Likewise.
504 (cp_parser_throw_expression): Likewise.
505 (cp_parser_attribute_list): Likewise.
506 (cp_parser_simple_cast_expression): Likewise.
507 (cp_parser_functional_cast): Likewise.
508 (cp_parser_late_parsing_default_args): Likewise.
509 (cp_parser_sizeof_operand): Save/restore
510 non_integral_constant_expression_p.
511
3d8a8aad
MS
5122005-01-31 Mike Stump <mrs@apple.com>
513
514 * parser.c (cp_lexer_new_main): Get the first token, first, before
515 doing anything.
516
4e8f0a2e
MM
5172005-01-31 Mark Mitchell <mark@codesourcery.com>
518
519 * decl.c (start_decl): Add missing parentheses.
520
6fc98adf
MM
5212005-01-30 Mark Mitchell <mark@codesourcery.com>
522
2b1e8a76
MM
523 PR c++/19555
524 * cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
525 * decl.c (duplicate_decls): Do not discard
526 DECL_IMPLICIT_INSTANTIATION when merging declarations.
527 (start_decl): Do not SET_DECL_TEMPLATE_SPECIALIZATION for
528 variables that do not have DECL_USE_TEMPLATE.
529
e3016344
MM
530 PR c++/19395
531 * decl.c (grokdeclarator): Refactor code so that qualified names
532 are never allowed as the declarator in a typedef.
533
534 PR c++/19367
535 * name-lookup.c (do_nonmember_using_decl): Avoid overloading
536 builtin declarations.
537
6fc98adf
MM
538 PR c++/19457
539 * call.c (convert_like_real): Inline call to
540 dubious_conversion_warnings here.
541 * cp-tree.h (dubious_conversion_warnings): Remove.
542 * semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
543 setting TREE_NEGATED_INT.
544 * typeck.c (dubious_conversion_warnings): Remove.
545
546 PR c++/19349
547 * name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd
c5ff069d 548 memory.
6fc98adf 549
ee921ddf
MM
5502005-01-28 Mark Mitchell <mark@codesourcery.com>
551
6ca2d67f
MM
552 PR c++/19253
553 * parser.c (cp_parser_diagnose_invalid_type_name): Commit to
554 tentative parses.
555
ee921ddf
MM
556 PR c++/19667
557 * pt.c (redeclare_class_template): Robustify.
558
ebaae582
SB
5592005-01-27 Steven Bosscher <stevenb@suse.de>
560
561 * decl.c (finish_case_label): Use SWITCH_STMT accessor macros
562 instead of SWITCH_EXPR ones.
563 * pt.c (tsubst_expr): Likewise.
564 * semantics.c (begin_switch_stmt, finish_switch_cond,
565 finish_switch_stmt): Likewise.
566
b2802a4b
R
5672005-01-26 J"orn Rennecke <joern.rennecke@st.com>
568
960f41cf 569 PR c++/18370
d951ae1e 570 * parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.
b2802a4b 571
1b746b0f
AP
5722005-01-25 Andrew Pinski <pinskia@physics.uc.edu>
573
574 * class.c (abort_fndecl_addr): New variable.
575 (build_vtbl_initializer): If we have a pure virtual function
576 share the abort function's address.
577 Include gt-cp-class.h at the end.
578 * config-lang.in (gtfiles): Add cp/class.c.
579
b01150a2
VR
5802005-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
581
582 * cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
583 (pp_cxx_function_definition): Make static.
584 * cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
585 (pp_cxx_function_definition): Likewise.
586
b8c1703b
VR
5872005-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
588
589 * name-lookup.c (print_binding_level): Make static.
590 (constructor_name_full): Make static inline.
591 (current_decl_namespace): Make static.
592 * name-lookup.h (constructor_name_full): Remove prototype.
593 (print_binding_level): Likewise.
b8c1703b
VR
594 (current_decl_namespace): Likewise.
595
2d7c7fbe
VR
5962005-01-25 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
597
598 * decl.h (debug_bindings_indentation): Remove.
599
6ccf2f7d
KH
6002005-01-23 Kazu Hirata <kazu@cs.umass.edu>
601
602 * typeck.c: Fix a comment typo.
603
4ef69b83
GB
6042005-01-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
605
606 PR c++/19208
607 * pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
608 at least once.
609 (tsubst): Use fold_decl_constant_value in place of a bare call to
610 integral_constant_value.
611
0177ca87
KH
6122005-01-20 Kazu Hirata <kazu@cs.umass.edu>
613
614 * typeck.c (more_qualified_p): Remove.
615 * cp-tree.h: Remove the corresponding prototype.
616
b3b35f14
MA
6172005-01-19 Matt Austern <austern@apple.com>
618
619 * typeck.c (comptypes): Handle return code from objc_comptypes
620 correctly.
c5ff069d 621
dcb3736a
KH
6222005-01-19 Kazu Hirata <kazu@cs.umass.edu>
623
624 * cp-tree.h, name-lookup.h: Remove unused prototypes.
625
a26ddf11
KL
6262005-01-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
627
628 PR c++/19375
629 * semantics.c (finish_id_expression): Disable access checking for
630 already lookuped FIELD_DECL.
631
1fe94b97
KH
6322005-01-18 Kazu Hirata <kazu@cs.umass.edu>
633
634 * decl.c (delete_block): Remove.
635 * cp-tree.h: Remove the corresponding prototype.
636
66b0e835
KH
637 * decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
638 walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
639 Remove.
640 * cp-tree.h: Remove the corresponding prototypes.
641
c310f35c
KH
642 * tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
643 cp_update_decl_after_saving, name_p): Remove.
644 * cp-tree.h: Remove the corresponding prototypes.
645
b4c33883
AP
6462005-01-18 Andrew Pinski <pinskia@physics.uc.edu>
647
648 PR c/19472
649 * semantics.c (finish_asm_stmt): Strip nops off
650 input memory operands.
651
3638a282
KH
6522005-01-18 Kazu Hirata <kazu@cs.umass.edu>
653
654 * Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
655 typeck2.c: Update copyright.
656
1ce62c32
KH
6572005-01-16 Kazu Hirata <kazu@cs.umass.edu>
658
659 * class.c (get_enclosing_class): Remove.
660 * cp-tree.h: Remove the corresponding prototypes.
661
f2d362e5
KH
662 * cvt.c (convert_lvalue): Remove.
663 * cp-tree.h: Remove the corresponding prototype.
664
2e6da5d7
KH
665 * pt.c (tinst_for_decl): Remove.
666 * cp-tree.h: Remove the corresponding prototypes.
667
fbf53020
KH
668 * tree.c (hash_chainon): Remove.
669 * cp-tree.h: Remove the corresponding prototypes.
670
74aad7cc
JJ
6712005-01-15 Jakub Jelinek <jakub@redhat.com>
672
673 PR c++/19263
674 * typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
675 of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.
676
af708001
KG
6772005-01-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
678
679 * Make-lang.in (cp-warn): Don't append $(WERROR).
680
2f2bc524
KH
6812005-01-10 Kazu Hirata <kazu@cs.umass.edu>
682
683 * cp-tree.h: Fix a comment typo.
684
5aa56f9d
NS
6852005-01-07 Nathan Sidwell <nathan@codesourcery.com>
686
687 PR c++/19298
688 * pt.c (tsubst_qualified_id): Call convert_from_reference.
689
27d6592c
MM
6902005-01-06 Mark Mitchell <mark@codesourcery.com>
691
692 PR c++/19244
693 * class.c (add_implicitly_declared_members): Remove dead code.
694 * decl.c (grokfndecl): Add sfk parameter. Use it do set
695 DECL_CONSTRUCTOR_P.
696 (grokdeclarator): Adjust calls to grokfndecl.
697 * method.c (implicitly_declare_fn): Improve documentation.
698 * parser.c (cp_parser_direct_declarator): Do not consider a
699 function to be a constructor if the containing class was
700 originally anonymous.
701
023458fa
KL
7022005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
703
704 PR c++/17154
705 * search.c (lookup_field_1): Handle using declaration in
706 class template partial specialization.
707
23ff7e2d
KL
7082005-01-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
709
710 PR c++/19258
711 * pt.c (push_access_scope): Handle friend defined in class.
712 (pop_access_scope): Likewise.
713
d8987adb
NS
7142005-01-06 Nathan Sidwell <nathan@codesourcery.com>
715
716 PR c++/19270
717 * pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
718 (tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
719 array-new handling code. Use build_x_binary_op.
720
4514aa8c
NS
7212005-01-05 Nathan Sidwell <nathan@codesourcery.com>
722
723 PR c++/19030
724 * cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
725 * name-lookup.h (push_scope): Return pushed scope, not flag.
726 * name-lookup.c (push_scope): Return scope that should be popped,
727 not a flag.
728 * decl.c (start_decl): Adjust.
729 (grokfndecl): Adjust scope push and pop.
730 * decl2.c (check_classfn): Likewise.
731 * parser.c (cp_parser_condition, cp_parser_conversion_function_id,
732 cp_parser_init_declarator, cp_parser_direct_declarator,
733 cp_parser_class_specifier, cp_parser_class_head,
734 cp_parser_lookup_name,
735 cp_parser_constructor_declarator_p): Likewise.
736 * pt.c (instantiate_class_template,
737 resolve_typename_type): Likewise.
738
33a69702
VR
7392005-01-03 Volker Reichelt <reichelt@igpm.rwth-aaachen.de>
740
741 PR c++/14136
742 * parser.c (cp_parser_unqualified_id): Do not issue error message
743 for typedef-name as destructor declarator when performing an
744 uncommitted tentative parse.
745
43e05e45
SB
7462005-01-01 Steven Bosscher <stevenb@suse.de>
747
748 PR middle-end/17544
749 * decl.c (finish_function): Fix comment. Annotate the compiler
750 generated return with the current file name and line 0.
751
78e0d62b
RH
7522004-12-31 Richard Henderson <rth@redhat.com>
753
754 PR middle-end/17799
755 * call.c (make_temporary_var_for_ref_to_temp): Set DECL_IGNORED_P.
756 * class.c (build_vtable): Don't conditionallize setting it
757 based on DWARF2_DEBUG.
758 (layout_class_type): Set DECL_IGNORED_P.
759 * decl2.c (get_guard): Likewise.
760 * rtti.c (get_tinfo_decl, build_lang_decl): Likewise.
761 * tree.c (build_local_temp): Likewise.
762
1d786913
MM
7632004-12-30 Mark Mitchell <mark@codesourcery.com>
764
765 * cp-tree.h (cp_declarator): Split "name" field into
766 qualifying_scope and unqualified_name.
767 * decl.c (get_scope_of_declarator): Adjust accordingly.
768 (grokdeclarator): Likewise.
769 * decl2.c (grokfield): Likewise, and adjust call to
770 do_class_using_decl.
771 * name-lookup.c (do_class_using_decl): Split "decl" into
772 "scope" and "name". Remove unnecessary code.
773 * name-lookup.h (do_class_using_decl): Adjust declaration.
774 * parser.c (make_id_declarator): Split "id" into qualifying_scope
775 and unqualified_name.
776 (cp_parser_using_declaration): Adjust call to do_class_using_decl.
777 (cp_parser_direct_declarator): Adjust to handle the fact that
778 cp_parser_declarator_id no longer returns a SCOPE_REF.
779 (cp_parser_direct_declarator): Likewise.
780 (cp_parser_declarator_id): Do not create a SCOPE_REF for qualified
781 names.
782 (cp_parser_member_declaration): Adjust call to make_id_declarator.
783 (cp_parser_check_declarator_template_parameters): Do not expect a
c5ff069d
ZW
784 SCOPE_REF.
785
1d786913
MM
786 * decl.c (duplicate_decls): Call ggc_free on declarations we will
787 not be needing any longer.
d9fa1233
MM
788
789 PR c++/19190
790 * cvt.c (convert_to_void): Do not use STRIP_NOPs.
791
74f0c611
RH
7922004-12-28 Richard Henderson <rth@redhat.com>
793
794 PR inline-asm/15740
795 * semantics.c (finish_asm_stmt): Resolve asm names. Validate input
796 constraints. Mark memory inputs addressable.
797
445cf5eb
JM
7982004-12-27 Jason Merrill <jason@redhat.com>
799
800 * decl.c (expand_static_init): Don't use shortcut if
801 targetm.relaxed_ordering.
802
c827f22f
MM
8032004-12-27 Mark Mitchell <mark@codesourcery.com>
804
805 PR c++/19149
806 * decl.c (check_tag_decl): Robustify.
807
cc29fd59
MM
8082004-12-23 Mark Mitchell <mark@codesourcery.com>
809
0d63048c
MM
810 PR c++/17595
811 * parser.c (cp_parser_error): Issue better messages about
812 #pragma in locations where it is not permitted.
813
aae4a277
MM
814 PR c++/17413
815 * pt.c (check_instantiated_args): Remove bogus SFINAE code.
816
cc29fd59
MM
817 * cvt.c (convert_to_void): Fix typo in comment.
818
08167d1c
AO
8192004-12-23 Alexandre Oliva <aoliva@redhat.com>
820
821 PR c++/18962
822 * pt.c (check_explicit_specialization): Use the argument list from
823 the definition in a template function specialization definition.
824
f65b7de3
GB
8252004-12-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
826
827 PR c++/18733
828 * pt.c (check_explicit_specialization): Use special logic to validate
829 befriended specializations.
830
dfb5c523
MM
8312004-12-22 Mark Mitchell <mark@codesourcery.com>
832
5e001b48
MM
833 * rtti.c (emit_support_tinfos): Avoid using C99 semantics.
834
dfb5c523
MM
835 PR c++/18464
836 * call.c (build_this): In templates, do not bother with
837 build_unary_op.
838 * typeck.c (unary_complex_lvalue): In a template, always refuse
c5ff069d 839 simplifications.
dfb5c523
MM
840
841 PR c++/18492
842 * cp-gimplify.c (cp_genericize): Relax assertion.
843
844 PR c++/11224
845 * cvt.c (convert_to_void): Warn about unused values.
846
847 PR c++/18257
848 * rtti.c (emit_support_tinfos): On systems without weak symbols,
c5ff069d 849 emit the runtime library type-info objects as non-COMDAT.
dfb5c523 850
943e3ede
MM
8512004-12-21 Mark Mitchell <mark@codesourcery.com>
852
853 PR c++/18378
854 * call.c (convert_like_real): Do not permit the use of a copy
855 constructor to copy a packed field.
856
b3d1c238 857 PR c++/19063
943e3ede
MM
858 * decl.c (grokdeclarator): Return error_mark_node, not
859 void_type_node, to indicate errors.
860 * parser.c (cp_parser_template_parameter_list): Robustify.
861 (cp_parser_template_parameter): Likewise.
862
863 PR c++/19034
864 * tree.c (cp_tree_equal): Handle OVERLOAD.
865
be99edf8
VR
8662004-12-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
867
868 * decl.c (define_label): Use POP_TIMEVAR_AND_RETURN.
869 * name-lookup.c (pushdecl_class_level): Likewise.
870
a90f8ad5
VR
8712004-12-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
872
873 * name-lookup.c (pushtag): Add missing POP_TIMEVAR_AND_RETURN.
874
af76441f
AP
8752004-12-21 Andrew Pinski <pinskia@physics.uc.edu>
876
877 PR c++/18984
878 * cp-gimplify.c (cp_genericize_r): Don't insert first but instead
879 check to see if contains the pointer. Insert the statement before
880 returning.
881
fd749a60
NS
8822004-12-21 Nathan Sidwell <nathan@codesourcery.com>
883
7a8380ae
NS
884 PR c++/14075
885 * decl.c (check_initializer): Check string initializer of array is
886 not parenthesized.
887 * cp-tree.h (PAREN_STRING_LITERAL_P): New.
888 * semantics.c (finish_parenthesized_expr): Mark a STRING_CST.
889 * error.c (dump_expr): <STRING_CST case> Add parens, if needed.
890
38b3627d 891 * cp-tree.def (TEMPLATE_TYPE_PARM,
c5ff069d 892 BOUND_TEMPLATE_TEMPLATE_PARM, TYPE_OF_TYPE, TYPENAME_TYPE): Reorder
38b3627d
NS
893 for better code efficiency.
894 * cp-tree.h (CLASS_TYPE_P): Short circuit IS_AGGR_TYPE check.
895 (CAN_HAVE_FULL_LANG_DECL_P): Reorder for better optimization.
896 (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P,
897 INTEGRAL_OR_ENUMERATION_TYPE_P, SCALAR_TYPE_P,
898 CP_AGGREGATE_TYPE_P, TYPE_PTROB_P, TYPE_REF_OBJ_P,
c5ff069d 899 TYPE_PTROBV_P): Likewise.
38b3627d 900
fd749a60
NS
901 PR c++/18975
902 * method.c (do_build_copy_constructor): Refactor. Don't const
903 qualify a mutable field.
904 (do_build_assign_ref): Likewise.
905
b482789c
MA
9062004-12-20 Matt Austern <austern@apple.com>
907
908 PR c++/19044
fd749a60
NS
909 * decl.c (make_rtl_for_nonlocal_decl): Use
910 set_builtin_user_assembler_name.
c5ff069d 911
5e2f4cd2
MM
9122004-12-19 Mark Mitchell <mark@codesourcery.com>
913
914 * cp-tree.h (note_decl_for_pch): New function.
915 * class.c (build_clone): Call note_decl_for_pch.
916 * semantics.c (finish_member_declaration): Likewise.
917 (note_decl_for_pch): New function.
918
6b6c8106
SB
9192004-12-17 Steven Bosscher <stevenb@suse.de>
920
921 * init.c (build_zero_init): max_index is the number of
922 elements, minus 1.
923
b54a07e8
NS
9242004-12-17 Nathan Sidwell <nathan@codesourcery.com>
925
10856918 926 PR c++/18721
b54a07e8
NS
927 * class.c (add_method): Do not push conversion operators into a
928 binding level.
929
930 * cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE_TYPE): Reformat.
931 * error.c (dump_decl): <TYPE_DECL case> Remove extraneous braces.
932
8a784e4a
NS
9332004-12-16 Nathan Sidwell <nathan@codesourcery.com>
934
935 PR c++/18905
936 * cp-tree.h (integral_constant_value): Declare.
937 * call.c (null_ptr_cst_p): Use integral_constant_value, not
938 decl_constant_value.
939 (convert_like_real): Likewise.
940 * class.c (check_bitfield_decl): Likewise.
941 * cvt.c (ocp_convert): Likewise.
942 (convert): Remove unnecessary decl_constant_value call.
943 * decl.c (compute_array_index_type): Use integral_constant_value,
944 not decl_constant_value.
945 (build_enumerator): Likewise.
946 * decl2.c (grokfield): Likewise.
947 * init.c (decl_constant_value): Simplify.
948 (integral_constant_value): New.
949 * pt.c (fold_decl_constant_value): Use integral_constant_value,
950 remove subsequent check.
951 (tsubst): Use integral_constant_value, not decl_constant_value.
952 (tsubst_copy, unify): Likewise.
953 * typeck.c (decay_conversion): Likewise.
954 (build_compound_expr): Remove unnecessary decl_constant_value
955 calls.
956 (build_static_cast_1, build_reinterpret_cast_1):
957 (convert_for_assignment): Remove comment about not calling
958 decl_constant_value.
959
6e432b31
KL
9602004-12-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
961
962 PR c++/18825
963 * pt.c (instantiate_class_template): Set input_location for
964 friend function.
965 (tsubst_friend_function): Don't set input_location here.
966 Make sure the context is complete if necessary.
967
fe4c6b8f
NS
9682004-12-15 Nathan Sidwell <nathan@codesourcery.com>
969
970 PR c++/18981
971 * parser.c (cp_parser_lookup_name): Remove unneeded TYPENAME_TYPE
972 flag setting.
973
0c88d886
MM
9742004-12-14 Mark Mitchell <mark@codesourcery.com>
975
976 PR c++/18738
977 * decl.c (make_typename_type): Do not handle namespace-scoped
978 names here.
979 (tag_name): Handle typename_type.
980 (check_elaborated_type_specifier): Handle typenames.
981 * parser.c (cp_parser_diagnose_invalid_type_name): Improve
982 comment.
983 (cp_parser_elaborated_type_specifier): Use
984 cp_parser_diagnose_invalid_type_name.
985
b01f0d13
AP
9862004-12-14 Andrew Pinski <pinskia@physics.uc.edu>
987
988 PR c++/18965
989 * init.c (build_zero_init): If the max_index is 0, there is no
990 need to create a RANGE_EXPR.
991
acb3f79a
MM
9922004-12-14 Mark Mitchell <mark@codesourcery.com>
993
994 PR c++/18793
995 * cp-objcp-common.c (cp_expr_size): Loosen assertion.
996
e8c66fe0
NS
9972004-12-14 Nathan Sidwell <nathan@codesourcery.com>
998
999 PR c++/18949
1000 * pt.c (tsubst_copy_and_build): <INDIRECT_REF case> Check that a
1001 REFERENCE_REF_P is dereferencing a reference type.
1002 * typeck.c (build_static_cast): Convert from reference even in a
1003 template.
1004 (build_reinterpret_cast, build_const_cast, build_c_cast): Likewise.
1005
0b16f8f4
VR
10062004-12-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1007
1008 * parser.c (cp_parser_uncommitted_to_tentative_parse_p): New function.
1009 (cp_parser_name_lookup_error): Use it.
1010 (cp_parser_check_for_invalid_template_id): Likewise.
1011 (cp_parser_skip_to_closing_parenthesis): Likewise.
1012 (cp_parser_nested_name_specifier_opt): Likewise.
1013 (cp_parser_simple_declaration, cp_parser_template_id): Likewise.
1014 (cp_parser_parameter_declaration_list): Likewise.
1015 (cp_parser_parameter_declaration): Likewise.
1016 (cp_parser_template_name): Let cp_parser_simulate_error perform
1017 the checking.
1018 (cp_parser_committed_to_tentative_parse): Remove.
1019
471a58a9
AP
10202004-12-13 Andrew Pinski <pinskia@physics.uc.edu>
1021
1022 PR c++/18968
1023 * class.c (build_base_path): Convert the zero constant to the correct
1024 type when comparing.
1025
532b37d9
MM
10262004-12-13 Mark Mitchell <mark@codesourcery.com>
1027
1028 PR c++/18925
1029 * class.c (layout_class_type): Determine the visibility of static
1030 data members.
1031
eeae0768
RS
10322004-12-12 Roger Sayle <roger@eyesopen.com>
1033
1034 PR middle-end/12454
1035 * cp-gimplify.c (gimplify_if_stmt): Optimize the case where the
1036 condition is a constant and the unexecuted clause is empty.
1037
9bf0e588
VR
10382004-12-10 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1039
1040 PR c++/18731
1041 * parser.c (cp_parser_class_head): Reject typedef-name in class head.
1042
f80f1bab
MA
10432004-12-09 Matt Austern <austern@apple.com>
1044
1045 PR c++/18514
1046 * name-lookup.c (do_nonmember_using_decl): A real function
1047 declaration takes precedence over an anticipated declaration.
c5ff069d 1048
5a19910e
VR
10492004-12-09 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1050
1051 * parser.c (cp_parser_member_declaration): Fix comment typo.
1052
354e22e1
AO
10532004-12-09 Alexandre Oliva <aoliva@redhat.com>
1054
1055 PR c++/18757
1056 * parser.c (cp_parser_template_id): Don't create a CPP_TEMPLATE_ID
1057 if parsing failed.
1058
257d5f32
VR
10592004-12-09 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
1060
1061 PR c++/18073
1062 * typeck.c (build_reinterpret_cast_1): Allow cast from vector type.
1063
94763647
NS
10642004-12-09 Nathan Sidwell <nathan@codesourcery.com>
1065
1066 PR c++/16681
1067 * init.c (build_zero_init): Build a RANGE_EXPR for an array
1068 initializer.
1069
8a21aa30
KC
10702004-12-08 Kelley Cook <kcook@gcc.gnu.org>
1071
1072 * typeck.c: Remove DOS line endings.
1073
4104f0f4
KL
10742004-12-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1075
1076 PR c++/18100
c5ff069d 1077 * decl.c (lookup_and_check_tag): Diagnose nested class with
4104f0f4
KL
1078 the same name as enclosing class.
1079
db24eb1f
NS
10802004-12-08 Nathan Sidwell <nathan@codesourcery.com>
1081
1082 PR c++/18803
1083 * cp-tree.h (REFERENCE_REF_P): New.
1084 (CPTI_TYPE_INFO_TYPE): Rename to ...
1085 (CPTI_CONST_TYPE_INFO_TYPE): ... here.
1086 (CPTI_TYPE_INFO_REF_TYPE): Remove.
1087 (type_info_type_node): Rename to ...
1088 (const_type_info_type_node): ... here.
1089 (type_info_ref_type): Remove.
1090 * call.c (build_user_type_conversion): Reformat.
1091 (resolve_args): Do not convert_from_reference.
1092 (build_object_call): Call convert_from_reference.
1093 (prep_operand): Do not convert_from_reference.
1094 (build_new_method_call): Likewise.
1095 * class.c (build_vfield_ref): Likewise.
1096 * cvt.c (convert_to_reference): Likewise.
1097 (convert_from_reference): Build INDIRECT_REF here, not with
1098 build_indirect_ref.
1099 (convert_force): Do not convert_from_reference.
1100 (build_expr_type_conversion): Likewise.
1101 * decl.c (grok_reference_init): Likewise.
1102 * decl2.c (delete_sanity): Likewise.
1103 * except.c (initialize_handler_parm): Use POINTER_TYPE_P.
1104 * init.c (build_dtor_call): Do not convert_from_reference.
1105 * parser.c (cp_parser_template_argument): Unwrap indirected
1106 reference. Allow TEMPLATE_PARM_INDEX as an object parm.
1107 * pt.c (tsubst_copy_and_build) <case INDIRECT_REF>: Use
1108 convert_from_reference, if indicated.
1109 <case CALL_EXPR>: Do not convert_from_reference.
1110 <case PARM_DECL, VAR_DECL>: Convert_from_reference if needed.
1111 (tsubst_initializer_list): Do not convert_from_reference.
1112 * rtti.c (init_rtti_processing): Adjust node creation.
1113 (throw_bad_typeid): Use const_type_info_type_node.
1114 Do not convert_from_reference.
1115 (typeid_ok_p): Use const_type_info_type_node.
1116 (build_typeid, get_typeid): Always return type_info typed node.
1117 (build_dynamic_cast_1): Dont convert_from_reference. Refactor.
1118 * semantics.c (finish_stmt_expr_expr): Do not
1119 convert_from_reference.
1120 (finish_id_expression): Convert_from_reference as appropriate.
1121 * typeck.c (decay_conversion): Do not convert_from_reference.
1122 (finish_class_member_access_expr): Likewise.
1123 (build_indirect_ref): Use POINTER_TYPE_P.
1124 (convert_arguments): Do not convert_from_reference.
1125 (build_modify_expr): Likewise.
1126 (convert_for_initialization): Likewise.
1127 * typeck2.c (build_x_arrow): Likewise.
1128
c7baa145
ZL
11292004-12-07 Ziemowit Laski <zlaski@apple.com>
1130
1131 * cp-tree.h (struct lang_type_class): Rename 'objc_protocols'
1132 field to 'objc_info'.
1133
54e4aedb
KH
11342004-12-07 Kazu Hirata <kazu@cs.umass.edu>
1135
1136 * pt.c: Replace a use of first_rtl_op with TREE_CODE_LENGTH.
1137
5423d7eb
RS
11382004-12-07 Roger Sayle <roger@eyesopen.com>
1139
1140 * name-lookup.c (leave_scope): We only need to update
1141 class_binding_level when leaving a class scope.
1142
66237a39
ZL
11432004-12-06 Ziemowit Laski <zlaski@apple.com>
1144
1145 * cp-tree.h (struct lang_type_class): Add 'objc_protocols' field.
1146
bad1f462
KL
11472004-12-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1148
1149 PR c++/17011, c++/17971
1150 * pt.c (tsubst_copy) <FIELD_DECL case>: Check and diagnose
1151 invalid field.
1152 (tsubst_copy_and_build) <COMPONENT_REF case>: Check
1153 error_mark_node after member substitution.
1154 * semantics.c (finish_id_expression): Call
1155 finish_non_static_data_member for non-dependent FIELD_DECL.
1156
f4ed7d21
NS
11572004-12-03 Nathan Sidwell <nathan@codesourcery.com>
1158
1159 PR c++/18782
1160 * decl.c (grokdeclarator): Make sure class in pointer to member is
1161 not a namespace.
1162
ad1063d5
NS
11632004-12-02 Nathan Sidwell <nathan@codesourcery.com>
1164
1165 PR c++/18318
1166 * parser.c (cp_parser_new_type_id): Move array size expression
1167 checks from here ...
1168 * init.c (build_new): ... to here.
1169
55dcbc12
NS
11702004-12-02 Nathan Sidwell <nathan@codesourcery.com>
1171
1172 PR c++/18758
1173 * parser.c (cp_parser_class_head): Return NULL_TREE when
1174 push_template_decl fails. Update comment.
1175
28e42b7e
KL
11762004-12-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1177
1178 PR c++/15664, c++/18276
1179 * pt.c (tsubst_decl) <TEMPLATE_DECL case>: Reorganize. Correctly
1180 tsubst TEMPLATE_DECL that is a TEMPLATE_TEMPLATE_PARM.
1181
a5e51518
KL
11822004-12-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1183
1184 PR c++/18123
1185 * parser.c (cp_parser_type_specifier): Catch template declaration
1186 of enum.
1187
8245c194
MA
11882004-12-01 Matt Austern <austern@apple.com>
1189
ad1063d5
NS
1190 * name-lookup.c (namespace_binding): Omit alias check for global
1191 namespace.
8245c194 1192
386489e3
NS
11932004-12-01 Nathan Sidwell <nathan@codesourcery.com>
1194
07c65e00
NS
1195 PR c++/18729
1196 * parser.c (cp_parser_class_name): Check decl's type is not
1197 error_mark_node.
1198
386489e3
NS
1199 PR c++/17431
1200 * call.c (standard_conversion): Add FLAGS parameter. Do not allow
1201 derived to base conversion when checking constructor
1202 accessibility.
1203 (implicit_conversion): Pass FLAGS to standard_conversion.
1204 (check_constructir_callable): Disallow conversion functions.
1205
472c29c3
KH
12062004-11-30 Kazu Hirata <kazu@cs.umass.edu>
1207
1208 * parser.c: Fix comment typos.
1209
fc6a28d7
MM
12102004-11-27 Mark Mitchell <mark@codesourcery.com>
1211
1212 PR c++/18368
1213 * parser.c (cp_parser_check_for_definition_in_return_type): Take
1214 the defined type as a parameter, and inform the user about the
1215 possibility of a missing semicolon.
1216 (cp_parser_explicit_instantiation): Adjust call to
1217 cp_parser_check_for_definition_in_return_type.
1218 (cp_parser_init_declarator): Likewise.
1219 (cp_parser_member_declaration): Likewise.
1220
1221 PR c++/18674
1222 * cp-tree.def (TYPENAME_TYPE): Remove discussion of implicit
1223 typename from comments.
1224 * cp-tree.h (TYPENAME_IS_ENUM_P): New macro.
1225 (TYPENAME_IS_CLASS_P): Likewise.
1226 (make_typename_type): Change prototype.
1227 * decl.c (struct_typename_info): New type.
1228 (typename_compare): Expect the second argument to be a
1229 typename_info, not a tree.
1230 (build_typename_type): Add tag_type parameter. Do not create a
1231 new type until necessary.
1232 (make_typename_type): Add tag_type parameter.
1233 * error.c (TYPENAME_TYPE): Print tags other than "typename" if
1234 appropriate.
1235 * friend.c (make_friend_class): Adjust call to make_typename_type.
1236 * parser.c (cp_parser_make_typename_type): Likewise.
1237 (cp_parser_primary_expression): Adjust call to
1238 cp_parser_lookup_name.
1239 (cp_parser_unqualified_id): Adjust calls to cp_parser_class_name.
1240 (cp_parser_class_or_namespace_name): Likewise.
1241 (cp_parser_postfix_expression): Adjust calls to
1242 make_typename_type.
1243 (cp_parser_mem_initializer_id): Adjust calls to
1244 cp_parser_class_name.
1245 (cp_parser_type_parameter): Adjust calls to cp_parser_lookup_name.
1246 (cp_parser_template_name): Likewise.
1247 (cp_parser_template_argument): Likewise.
1248 (cp_parser_type_name): Adjust call to cp_parser_class_name.
1249 (cp_parser_elaborated_type_specifier): Adjust calls to
1250 make_typename_type and cp_parser_lookup_name.
1251 (cp_parser_namespace_name): Likewise.
1252 (cp_parser_class_name): Replace type_p parameter with tag_type.
1253 Adjust calls to make_typename_type and cp_parser_lookup_name.
1254 (cp_parser_class_head): Adjust calls to cp_parser_class_name.
1255 (cp_parser_base_specifier): Likewise.
1256 (cp_parser_lookup_name): Replace is_type parameter with tag_type.
1257 Adjust calls to make_typename_type and lookup_qualified_name.
1258 (cp_parser_lookup_name_simple): Adjust call to
1259 cp_parser_lookup_name.
1260 (cp_parser_constructor_declarator_p): Adjust call to
1261 cp_parser_class_name.
1262 * pt.c (convert_template_argument): Adjust all to
1263 make_typename_type.
1264 (tsubst_decl): Do not pre-substitute the type of the declaration.
1265 (tsubst): Hand off declarations more quickly. Adjust call to
c5ff069d 1266 make_typename_type.
fc6a28d7
MM
1267
1268 PR c++/18512
1269 * parser.c (cp_parser_postfix_dot_deref_expression): Robustify.
1270
86f029aa
JM
12712004-11-29 Daniel Jacobowitz <dan@codesourcery.com>
1272
1273 PR c/7544
1274 * Make-lang.in (cp/decl2.o): Update dependencies.
1275 * decl2.c (finish_file): Call maybe_apply_pending_pragma_weaks.
1276
c6f9f83b
KL
12772004-11-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1278
1279 PR c++/18652
1280 * name-lookup.c (pushtag): Change return type to tree.
1281 * cp-tree.h (pushtag): Adjust declaration.
1282 * decl.c (xref_tag, start_enum): Use return value of pushtag.
1283 * pt.c (push_template_decl_real): Return immediately if
1284 pushdecl_namespace_level returns error_mark_node.
1285
270af55d
KH
12862004-11-27 Kazu Hirata <kazu@cs.umass.edu>
1287
1288 * pt.c: Fix a comment typo.
1289
e57df6fe
KL
12902004-11-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1291
1292 Friend class name lookup 4/n
1293 * class.c (pushclass): Don't call cxx_remember_type_decls.
1294 * cp-tree.h (clear_anon_tags): Remove declaration.
1295 * decl.c (grokdeclarator): Don't call lookup_tag_reverse.
1296 * name-lookup.c (binding_entry_free, binding_table_free): Comment
1297 out functions.
1298 (binding_table_find_anon_type, binding_table_reverse_maybe_remap,
1299 binding_table_remove_anonymous_types, cxx_remember_type_decls,
1300 bt_print_entry, clear_anon_tags, follow_tag_typedef, lookup_tag,
1301 lookup_tag_reverse): Remove
1302 (begin_scope, leave_scope, kept_level_p, print_binding_level):
1303 Don't use type_decls field in cp_binding_level.
1304 (maybe_process_template_type_declaration, pushtag): Set
1305 CLASSTYPE_NESTED_UTDS directly.
1306 * name-lookup.h (binding_table_remove_anonymous_types,
1307 cxx_remember_type_decls, lookup_tag, lookup_tag_reverse): Remove
1308 declaration.
1309 (cp_binding_level): Remove type_decls field.
1310
276318a5
KH
13112004-11-26 Kazu Hirata <kazu@cs.umass.edu>
1312
1313 * typeck.c: Fix a comment typo.
1314
5ae9ba3e
MM
13152004-11-25 Mark Mitchell <mark@codesourcery.com>
1316
1317 PR c++/18445
1318 * class.c (instantiate_type): Treat NON_DEPENDENT_EXPRs with
1319 unknown_type as non matching. Tidy up.
1320 * pt.c (build_non_dependent_expr): Do not build a
1321 NON_DEPENDENT_EXPR for a VAR_DECL.
1322
1323 PR c++/18001
1324 * cp-tree.h (lvalue_or_else): Remove declaration.
1325 * tree.c (lvalue_or_else): Remove.
1326 * typeck.c (build_unary_op): Adjust call to lvalue_or_else.
1327 (build_modify_expr): Likewise.
1328
1329 PR c++/18625
1330 * decl.c (duplicate_decls): Return error_mark_node on error, as
1331 specified.
1332
1333 PR c++/18466
1334 * decl.c (grokvardecl): Keep track of whether or not a there was
1335 explicit qualification.
1336 * name-lookup.c (set_decl_namespace): Complain about explicit
1337 qualification of a name within its own namespace.
1338
1339 PR c++/18545
1340 * typeck.c (check_return_expr): Robustify.
1341
87c465f5
KL
13422004-11-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1343
1344 Friend class name lookup 3/n, PR c++/3332
1345 * name-lookup.c (push_inner_scope, pop_inner_scope): New functions.
1346 (lookup_type_scope): Don't deal with name from user declaration
1347 specially.
1348 * name-lookup.h (push_inner_scope, pop_inner_scope): Add declarations.
1349 * parser.c (cp_parser_class_specifier): Use push_inner_scope and
1350 pop_inner_scope.
1351
29ef83de
KL
13522004-11-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1353
1354 Friend class name lookup 2/n, PR c++/14513, c++/15410
1355 * name-lookup.c (lookup_name_real): Simplify.
1356 (lookup_type_scope): Add SCOPE parameter. Handle friend class
1357 lookup.
1358 * name-lookup.h (tag_scope): New enum type.
1359 (lookup_type_scope): Adjust declaration.
1360 * decl.c (lookup_and_check_tag, xref_tag, xref_tag_from_type):
1361 Change bool parameter GLOBALIZED to TAG_SCOPE parameter SCOPE.
c5ff069d 1362 (start_enum): Likewise. Add assertion test that NAME is
29ef83de
KL
1363 IDENTIFIER_NODE. Use anonymous name for dummy ENUMERAL_TYPE in
1364 case of error.
1365 * cp-tree.h (xref_tag, xref_tag_from_type): Adjust declarations.
1366 * parser.c (cp_parser_elaborated_type_specifier,
1367 cp_parser_class_head): Adjust call to xref_tag.
1368 * pt.c (lookup_template_class, instantiate_class_template):
1369 Likewise.
1370 * rtti.c (init_rtti_processing, build_dynamic_cast_1,
1371 tinfo_base_init, emit_support_tinfos): Likewise.
1372
597cdf4f
JM
13732004-11-25 Joseph S. Myers <joseph@codesourcery.com>
1374
1375 * g++spec.c, lex.c: Avoid ` as left quote in diagnostics.
1376
9306cccb
MM
13772004-11-24 Mark Mitchell <mark@codesourcery.com>
1378
1379 PR c++/17473
1380 * name-lookup.c (supplement_binding): Do not allow typedefs to be
1381 redefined in class scope.
1382
1383 PR c++/18285
1384 * parser.c (cp_parser_set_decl_type_spec): Do not try to allow
1385 redefinitions of builtin types other that "bool" or "wchar_t".
1386
39afeb1a
SB
13872004-11-24 Steven Bosscher <stevenb@suse.de>
1388
1389 * decl.c (cxx_init_decl_processing): Don't clear
1390 flag_inline_functions.
1391
d6eec208
MM
13922004-11-24 Mark Mitchell <mark@codesourcery.com>
1393
6e2993bf
MM
1394 * pt.c (tsubst_function_type): Do not permit function types which
1395 return arrays or functions.
1396
62a4d942
MM
1397 PR c++/18586
1398 * parser.c (cp_parser_init_declarator): Do not pop scope twice.
1399
d6eec208
MM
1400 PR c++/18530
1401 * cp-tree.h (CTOR_NAME): Remove.
1402 (DTOR_NAME): Remove.
1403 * decl.c (initialize_predefined_identifiers): Add spaces to the
1404 end of constructor and destructor names.
1405
91146169
GB
14062004-11-24 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1407
1408 PR c++/8929
1409 * decl.c (start_decl): Check for invalid specialization headers.
1410
d70b8c3a
PB
14112004-11-24 Paolo Bonzini <bonzini@gnu.org>
1412
1413 PR c++/16882
1414
1415 * call.c (standard_conversion): Move check for conversions between
1416 vector pointers...
1417 * typeck.c (ptr_reasonably_similar): ... here.
1418
af746697
BE
14192004-11-23 Ben Elliston <bje@au.ibm.com>
1420
1421 * cp-tree.h (context_as_string): Remove extern.
1422 * error.c (context_as_string): Remove.
1423
1424 * cp-tree.h (cp_type_qual_from_rid): Remove extern.
1425 * lex.c (cp_type_qual_from_rid): Remove.
1426
1427 * cp-tree.h (do_poplevel): Remove extern.
1428 (check_multiple_declarators): Likewise.
1429 * semantics.c (do_poplevel): Make static.
1430 (check_multiple_declarators): Remove.
1431
1432 * cp-tree.h (check_final_overrider): Remove extern.
1433 * search.c (check_final_overrider): Make static.
1434
1435 * cp-tree.h (build_artificial_parm): Remove extern.
1436 * decl2.c (build_artificial_parm): Make static.
1437
e99f332f
GB
14382004-11-22 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1439
1440 PR c++/18354
1441 * typeck.c (build_unary_op) <CONVERT_EXPR, NEGATE_EXPR>: Unify code.
1442 Make sure the result is always a rvalue.
1443
c9387915
GB
14442004-11-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1445
1446 * decl.c (start_preparsed_function): Call check_function_type even
1447 in templates.
1448 (require_complete_types_for_parms): Skip dependent types.
1449 (check_function_type): Likewise.
1450
d39289db
SB
14512004-11-16 Steven Bosscher <stevenb@suse.de>
1452
1453 * Make-lang.in (cp/decl.o, cp/search.o): Don't depend on stack.h.
1454 * search.c: Don't include it.
1455
e09a5d62
AP
14562004-11-15 Andrew Pinski <pinskia@physics.uc.edu>
1457
1458 * cp-gimplify.c: Include pointer-set.h
1459 (cp_genericize_r): Use pointer_sets instead of a hashtable.
1460 Also instert the new statement for CLEANUP_STMT.
1461 (cp_genericize): Use pointer_sets instead of a hashtable.
1462 * Make-lang.in (cp-gimplify.o): Depend on pointer-set.h.
1463
461c6fce
KL
14642004-11-15 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1465
1466 Friend class name lookup 1/n, PR c++/18471
1467 * decl.c (lookup_and_check_tag): New function.
1468 (xref_tag, start_enum): Use it.
1469 (check_elaborated_type_specifier): Move TEMPLATE_TYPE_PARM check
1470 before !DECL_IMPLICIT_TYPEDEF_P. Also display previously declared
1471 location.
1472 * name-lookup.c (lookup_name_current_level): Rename to ...
1473 (lookup_name_innermost_nonclass_level): ... this.
1474 (lookup_type_scope): New function.
1475 * name-lookup.h (lookup_name_current_level): Rename to ...
1476 (lookup_name_innermost_nonclass_level): ... this.
1477 (lookup_type_scope): Add declaration.
1478
e34b0922
KL
14792004-11-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1480
1481 PR c++/17344
1482 * pt.c (coerce_template_parms): Only emit error message about
1483 invalid template argument when TF_ERROR.
1484
44370687
MM
14852004-11-12 Mark Mitchell <mark@codesourcery.com>
1486
1487 PR c++/18389
1488 * decl.c (start_decl): Make sure to set *pop_scope_p. Return
1489 error_mark_node to indicate errors.
1490
1491 PR c++/18429
1492 * parser.c (cp_parser_direct_declarator): Disallow non-constant
1493 array bounds when not inside a function.
1494
1495 PR c++/18436
1496 * pt.c (tsubst_copy_and_build): Do not do Koenig lookup when an
1497 unqualified name resolves to a member function.
1498
1499 PR c++/18407
1500 * pt.c (tsubst_copy_and_build): Handle qualified names used from a
1501 derived class correctly.
c5ff069d 1502
44370687
MM
1503 * decl2.c (import_export_decl): Fix typo in comment.
1504 * tree.c (pod_type_p): Likewise.
1505
8ef36086
AP
15062004-11-10 Andrew Pinski <pinskia@physics.uc.edu>
1507
1508 * typeck.c (cxx_mark_addressable): Add braces around the first if.
1509
1b8d7c9a
AN
15102004-11-10 Adam Nemet <anemet@lnxw.com>
1511
c5ff069d 1512 PR middle-end/18160
1b8d7c9a
AN
1513 * typeck.c (cxx_mark_addressable): Issue an error if address of an
1514 explicit register variable is requested.
1515
ea1763b1
NS
15162004-11-10 Nathan Sidwell <nathan@codesourcery.com>
1517
1518 PR c++/18143
1519 * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK): New.
1520 (struct lang_decl_flags): Add thunk_p flag.
1521 (struct lang_decl): Remove separate fixed_offset. Place
1522 cloned_function and fixed_offset into union.
1523 (DECL_CLONED_FUNCTION_P, DECL_CLONED_FUNCTION): Adjust.
1524 (DECL_THUNK_P, SET_DECL_THUNK_P): Adjust.
1525 (THUNK_FIXED_OFFSET): Adjust.
1526 * method.c (make_thunk): Adjust.
1527
d746e87d
MM
15282004-11-09 Mark Mitchell <mark@codesourcery.com>
1529
1530 PR c++/18369
1531 * init.c (build_new_1): Handle parenthesized type-ids that name an
1532 array type. Tidy.
1533
9e637a26
JM
15342004-11-09 Joseph S. Myers <joseph@codesourcery.com>
1535
1536 * call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
1537 pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
1538 quoting in diagnostics.
1539 * parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
1540 quoting in printf format.
1541 * decl.c (duplicate_decls, start_decl): Use %qD instead of
1542 unquoted %D.
1543
03fd3f84
KH
15442004-11-08 Kazu Hirata <kazu@cs.umass.edu>
1545
1546 * class.c, decl.c, lex.c, name-lookup.c, parser.c, pt.c,
1547 search.c, typeck2.c: Fix comment formatting.
1548
106f5de5 15492004-11-04 Ulrich Weigand <uweigand@de.ibm.com>
c5ff069d 1550
106f5de5
UW
1551 PR tree-optimization/18184
1552 * cp-objcp-common.c (cxx_types_compatible_p): Do not treat pointers
1553 of different modes or alias-all flags as equivalent.
1554 * typeck.c (comptypes): Likewise.
1555
b6ab6892
GB
15562004-11-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1557
1558 DR 49, 100
1559 * cp-tree.h (TYPE_REF_OBJ_P): New macro.
1560 (TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P,
1561 TYPE_REFFN_P): Document.
1562 (fold_decl_constant_value): New prototype.
1563 * pt.c (convert_nontype_argument_function): Rewrite and extract
1564 parts into...
1565 (fold_decl_constant_value, convert_nontype_argument_function): New.
1566 (lookup_template_class): Add comment about useless double call.
1567 * mangle.c (write_expression): Strip conversions before lowering
1568 pointer to members.
1569 * cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow
1570 enum to enum conversion.
1571
71bd7186
MM
15722004-11-02 Mark Mitchell <mark@codesourcery.com>
1573
1574 PR c++/18124
1575 * parser.c (cp_parser_type_parameter): Robustify.
1576
1577 PR c++/18155
1578 * parser.c (cp_parser_single_declaration): Disallow template
1579 typedefs.
1580
1581 PR c++/18177
1582 * typeck.c (build_const_cast): Use error_operand_p.
1583
65958285
ZL
15842004-11-02 Ziemowit Laski <zlaski@apple.com>
1585
1586 * cp-lang.c (cxx_types_compatible_p): Remove prototype and definition.
1587 (LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h.
1588 * cp-objcp-common.c (cxx_types_compatible_p): Moved definition here
1589 from cp-lang.c.
1590 * cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here
1591 from cp-lang.c.
1592 (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c.
1593
ae209f28
NS
15942004-11-01 Nathan Sidwell <nathan@codesourcery.com>
1595
1596 PR c++/18064
1597 * search.c (check_final_overrider): Deprecate gnu covariant extension.
1598
c4f73174
GDR
15992004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
1600
1601 Convert diagnostics to use quoting flag q 9/n
c5ff069d 1602 * typeck.c (build_x_unary_op, convert_member_func_to_ptr,
c4f73174
GDR
1603 get_delta_difference): Use new quotation style.
1604 * repo.c (reopen_repo_file_for_write): Likewise.
1605 * pt.c (do_type_instantiation): Likewise.
c5ff069d
ZW
1606 * parser.c (cp_parser_diagnose_invalid_type_name):
1607 * name-lookup.c (push_overloaded_decl, set_decl_namespace):
c4f73174
GDR
1608 * error.c (cp_print_error_function,
1609 print_instantiation_full_context): Likewise.
c5ff069d
ZW
1610 * decl.c (define_label, grok_reference_init,
1611 maybe_deduce_size_from_array_init, revert_static_member_fn):
c4f73174 1612 * decl2.c (check_classfn): Likewise.
c5ff069d 1613 * class.c (add_method, check_field_decls, layout_class_type,
c4f73174
GDR
1614 resolve_address_of_overloaded_function): Likewise.
1615 * call.c (build_x_va_arg, build_over_call): Likewise.
1616
939add70
GDR
16172004-10-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
1618
1619 Convert diagnostics to use quoting flag q 8/n
c5ff069d
ZW
1620 * cvt.c (cp_convert_to_pointer, warn_ref_binding,
1621 convert_to_reference, ocp_convert, convert_to_void
c4f73174 1622 cp_convert_to_pointer): Use new quotation style.
939add70 1623
80439563
MM
16242004-10-31 Mark Mitchell <mark@codesourcery.com>
1625
1626 PR c++/15172
1627 * typeck2.c (store_init_value): Use split_nonconstant_init even
1628 for types that require construction.
c5ff069d 1629
3cabd8f9
MA
16301004-10-28 Matt Austern <austern@apple.com>
1631
1632 PR c++/17542
1633 * cp-tree.h (class_key_or_enum_as_string): Declare.
1634 * error.c (class_key_or_enum): Rename to class_key_or_enum_as_string
1635 and remove static qualifier.
1636 * decl.c (shadow_tag): Warn about ignored attributes in class/struct/
1637 union/enum declaration.
c5ff069d 1638
6c745393
KH
16392004-10-29 Kazu Hirata <kazu@cs.umass.edu>
1640
1641 * pt.c: Fix a comment typo.
1642
ec7e5618
NS
16432004-10-28 Nathan Sidwell <nathan@codesourcery.com>
1644
1645 * typeck.c (composite_pointer_type): Remove comment about DR 195.
1646 (build_reinterpret_cast_1): Revert DR195 patch. Only emit a
1647 warning when being pedantic.
1648 (build_reinterpet_cast, build_c_cast): Adjust.
1649
1dc82a99
MM
16502004-10-29 Mark Mitchell <mark@codesourcery.com>
1651
1652 PR c++/17695
1653 * decl.c (grokdeclarator): Mark TYPE_DECLs as abstract when they
1654 appear in a constructor/destructor that will be cloned.
1655
f6af9a15
MA
16561004-10-28 Matt Austern <austern@apple.com>
1657
1658 PR c++/14124
1659 * decl.c (finish_enum): Handle packed attribute.
1660 * parser.c (cp_parser_enum_specifier): Process trailing attributes.
c5ff069d 1661
883a2bff
MM
16622004-10-28 Mark Mitchell <mark@codesourcery.com>
1663
1664 PR c++/17132
1665 * pt.c (instantiate_class_template): Increment
1666 processing_template_decl when substituting into a member class
1667 template.
1668
391c4bc5
MM
16692004-10-27 Mark Mitchell <mark@codesourcery.com>
1670
1671 PR c++/17435
1672 * call.c (convert_like_real): Fix formatting.
1673 (initialize_reference): When binding a temporary to a base class,
1674 ensure that the nominal copy made is to the derived class, not the
1675 base class.
1676
1677 PR c++/18140
1678 * parser.c (cp_parser_next_token_ends_template_argument_p): Do not
1679 include ">>".
1680
42583407
AP
16812004-10-27 Andrew Pinski <pinskia@physics.uc.edu>
1682
63058091 1683 * decl.c (bad_specifiers): Move the q after the %.
42583407 1684
2fbe4889
AP
16852004-10-27 Andrew Pinski <pinskia@physics.uc.edu>
1686
1687 * parser.c (cp_parser_diagnose_invalid_type_name): Move the q after
1688 the %.
1689
a5201a91
MM
16902004-10-26 Mark Mitchell <mark@codesourcery.com>
1691
6ac1920d
MM
1692 * name-lookup.c (do_namespace_alias): Use FROB_CONTEXT.
1693 * search.c (current_scope): Fix prototype.
1694
a5201a91
MM
1695 PR c++/18093
1696 * search.c (current_scope): Return the innermost non-block scope,
1697 not the innermost non-block, non-namespace scope.
1698 (at_namespace_scope_p): Adjust accordingly.
1699 (dfs_accessible_post): Do not pass namespaces to is_friend.
1700 (dfs_walk_once_accessible_r): Likewise.
1701 * decl.c (grokvardecl): Adjust call to current_scope.
1702 (build_enumerator): Likewise.
1703 * parser.c (cp_parser_using_declaration): Likewise.
1704 (cp_parser_direct_declarator): Use at_namespace_scope_p instead of
1705 current_scope.
1706 (cp_parser_class_head): Adjust call to current_scope.
1707 * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the
1708 alias.
1709
1710 PR c++/18020
1711 * pt.c (tusbst_copy_and_build): Resolve enumeration constants to
1712 their underlying values.
1713
1714 PR c++/18161
1715 * typeck.c (build_binary_op): Honor build_type, even when in a
1716 template.
1717
51e63e60
NS
17182004-10-26 Nathan Sidwell <nathan@codesourcery.com>
1719
1720 * parser.c (cp_lexer_get_preprocessor_token): Remove unneeded
1721 padding token checking.
1722
4c7c0c70
AP
17232004-10-25 Andrew Pinski <pinskia@physics.uc.edu>
1724
1725 PR c++/18121
1726 * decl.c (grokdeclarator) <case cdk_array>: Remove the call
1727 layout_type as it is already done by create_array_type_for_decl.
1728
76aebc9f
NS
17292004-10-22 Nathan Sidwell <nathan@codesourcery.com>
1730
1731 PR c++/18095
1732 * parser.c (eof_token): Make const, correctly initialize rid and
1733 location fields.
1734 (struct cp_lexer): Replace buffer_end pointer with buffer_length
1735 count. Adjust.
1736 (cp_lexer_new_main): Directly grow lexer's buffer here. Don't
1737 zero it out.
1738 (cp_lexer_new_from_tokens): Adjust.
1739 (cp_lexer_grow_buffer): Remove.
1740 (cp_lexer_peek_nth_token, cp_lexer_consume_token,
1741 cp_lexer_purge_token): Add const casts.
1742
08e17d9d
MM
17432004-10-21 Mark Mitchell <mark@codesourcery.com>
1744
1745 PR c++/18073
1746 PR c++/10841
1747 * cp-tree.h (convert_to_base): Change prototype.
1748 (build_ptrmemfunc): Likewise.
1749 (convert_ptrmem): New function.
1750 * call.c (struct conversion): Adjust documentation for base_p.
1751 (standard_conversion): Set base_p for ck_pmem conversions as
1752 appropriate.
1753 (convert_like_real): Use convert_to_base for ck_pmem and ck_ptr
1754 conversions.
1755 * class.c (convert_to_base): Handle both pointers and objects.
1756 Add nonnull parameter.
1757 (build_vfield_ref): Adjust call to convert_to_base.
1758 * cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc.
1759 (convert_force): Likewise.
1760 * typeck.c (build_unary_op): Likewise.
1761 (convert_ptrmem): New function.
1762 (build_static_cast_1): Use it.
1763 (build_reinterpret_cast): Allow conversions to vector types.
1764 (get_delta_difference): Add c_cast_p parameter.
1765 (build_ptrmemfunc): Likewise. Adjust calls to
1766 get_delta_difference.
1767
22a49f18
AP
17682004-10-21 Andrew Pinski <pinskia@physics.uc.edu>
1769
1770 PR c++/13560
1771 * error.c (cp_error_at): Output the context as it might be
1772 different file as the other location.
1773
c2fb2abe
KH
17742004-10-21 Kazu Hirata <kazu@cs.umass.edu>
1775
1776 * typeck.c: Fix a comment typo.
1777
b939a023
KL
17782004-10-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
1779
1780 PR c++/13495
1781 * decl.c (make_unbound_class_template): Add PARM_LIST parameter.
1782 * cp-tree.h (make_unbound_class_template): Adjust prototype.
1783 * parser.c (cp_parser_lookup_name): Adjust call to
1784 make_unbound_class_template.
1785 (cp_parser_single_declaration): Handle member class of class
1786 template as template friend parsing correctly.
1787 * friend.c (is_friend): Call is_specialization_of_friend for
1788 template friend class.
1789 (make_friend_class): Handle member class of class template as
1790 template friend.
1791 * pt.c (is_specialization_of_friend): Likewise.
1792 (instantiate_class_template): Likewise.
1793 (tsubst): Adjust call to make_unbound_class_template.
1794
23517e6b
NS
17952004-10-20 Nathan Sidwell <nathan@codesourcery.com>
1796
1797 * typeck.c (composite_pointer_type): Add comment about DR 195
1798 (build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter.
1799 Allow function pointer conversions that DR195 suggests.
1800 (build_reinterpret_cast, build_c_cast): Update
c5ff069d 1801 build_reinterpret_cast_1 calls.
23517e6b 1802
5acd0bed
KH
18032004-10-20 Kazu Hirata <kazu@cs.umass.edu>
1804
1805 * call.c, typeck.c: Fix comment typos.
1806
0c5e4866
NS
18072004-10-20 Nathan Sidwell <nathan@codesourcery.com>
1808
1809 * parser.c (cp_token_position): New typedef. Define VEC thereof.
1810 (struct cp_lexer): Allow buffer and buffer_end to be NULL. Make
1811 next_token and last_token cp_token_position. Make saved_tokens a
1812 VEC(cp_token_position).
1813 (eof_token): New static variable.
1814 (CP_SAVED_TOKENS_SIZE): Rename to ...
1815 (CP_SAVED_TOKEN_STACK): ... here.
1816 (cp_lexer_new_main): Adjust main lexer creation and buffer
1817 filling.
1818 (cp_lexer_new_from_tokens): Do not copy the tokens, merely point
1819 to the parent buffer. Do not append eof token.
1820 (cp_lexer_destroy): Only free buffer if non-NULL. Free token
1821 stack.
1822 (cp_lexer_next_token, cp_lexer_prev_token): Remove.
1823 (cp_lexer_token_position, cp_lexer_token_at): New.
1824 (cp_lexer_saving_tokens): Adjust. Make inline.
1825 (cp_lexer_advance_token, cp_lexer_token_difference): Remove.
1826 (cp_lexer_peek_token_emit_debug_info): Fold into ...
1827 (cp_lexer_peek_token): ... here.
1828 (cp_lexer_peek_nth_token): Don't peek past EOF.
1829 (cp_lexer_consume_token): Set next_token to eof_token, if reaching
1830 EOF.
1831 (cp_lexer_purge_token): Adjust eof setting.
1832 (cp_lexer_purge_tokens_after): Likewise.
1833 (cp_lexer_save_tokens): Push next_token directly.
1834 (cp_lexer_commit_tokens): Adjust.
1835 (cp_lexer_rollback_tokens): Pop next_token directly.
1836 (cp_parser_check_for_invalid_template_id): Adjust token purging.
1837 (cp_parser_translation_unit): Do not consume the EOF.
1838 (cp_parser_nested_name_specifier_opt): Adjust token purging.
1839 (cp_parser_template_id, cp_parser_template_name): Likewise.
1840
33c25e5c
MM
18412004-10-19 Mark Mitchell <mark@codesourcery.com>
1842
1843 PR c++/14035
1844 * call.c (struct conversion): Add base_p.
1845 (convert_like): Add c_cast_p argument.
1846 (convert_like_with_conversion): Likewise.
1847 (build_conv): Clear base_p.
1848 (standard_conversion): Set it, for derived-to-base conversions.
1849 (convert_like_real): Add c_cast_p parameter. Handle pointer
1850 conversions directly rather than relying on ocp_convert.
1851 (perform_direct_initialization_if_possible): Add c_cast_p
1852 parameter.
1853 * cp-tree.h (perform_direct_initialization_if_possible): Change
1854 prototype.
1855 (convert_member_func_to_ptr): New function.
1856 * typeck.c (check_for_casting_away_constness): Add diag_fn
1857 parameter.
1858 (build_static_cast_1): New function, split out from ...
1859 (build_static_cast): ... here. Use build_static_cast_1.
1860 (build_reinterpret_cast_1): New function, split out from ...
1861 (build_reinterpret_cast): ... here. Use build_reinterpret_cast_1.
1862 (build_const_cast_1): New function, split out from ...
1863 (build_const_cast): ... here. Use build_const_cast_1.
1864 (build_c_cast): Rewrite to use build_const_cast_1,
1865 build_static_cast_1, and build_reinterpret_cast_1.
1866 (convert_member_func_to_ptr): New function.
1867
69475123
PB
18682004-10-19 Paolo Bonzini <bonzini@gnu.org>
1869
1870 PR c++/18047
1871 * parser.c (enum cp_parser_prec): Give relational expressions
1872 a higher precedence than equality expressions.
1873
18e4be85
NS
18742004-10-15 Nathan Sidwell <nathan@codesourcery.com>
1875
1876 * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call.
1877 (ACCESSIBLY_UNIQUELY_DERIVED_P): Remove.
1878 (PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call.
1879 (enum base_access): Reorganize.
1880 (accessible_base_p, accessible_p): Add consider_local_p parameter.
1881 * call.c (standard_conversion): Update comment about
1882 DERIVED_FROM_P.
1883 (enforce_access): Adjust accessible_p call.
1884 (build_over_call): Adjust accessible_base_p call.
1885 * class.c (convert_to_base): Adjust lookup_base call.
1886 (build_vtbl_ref_1): Likewise.
1887 (warn_about_ambiguous_bases): Likewise. Add early exit.
1888 * cvt.c (convert_to_pointer_force) Adjust lookup_base call.
1889 * search.c (accessible_base_p): Add consider_local_p parameter.
1890 (lookup_base): Pass consider_local_p to accessible_base_p call.
1891 (friend_accessible_p): Check whether scope is a class member.
1892 Remove unnecessary class template check.
1893 (accessible_p): Add consider_local_p parameter. Use it.
1894 (adjust_result_of_qualified_name_lookup): Adjust lookup_base call.
1895 * tree.c (maybe_dummy_object): Likewise.
1896 * typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P.
1897 (build_class_member_access_expr): Adjust lookup_base call.
1898 * typeck2.c (binfo_or_else): Likewise.
1899 * rtti.c (build_dynamic_cast_1): Access can consider friendship
1900 and current scope.
1901
9596e064
GB
19022004-10-17 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1903
1904 PR c++/17743
1905 * decl2.c (grokfield): Apply attributes also to TYPE_DECLs.
1906
1ed3dfd5
GB
19072004-10-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
1908
1909 PR c++/10479
1910 * parser.c (cp_parser_parenthesized_expression_list): Fold
1911 non-dependent expressions in attribute lists.
1912
de3fe73c
MM
19132004-10-15 Mark Mitchell <mark@codesourcery.com>
1914
1915 PR c++/17042
1916 * decl.c (declare_global_var): Use the return value from pushdecl.
1917
1918 PR c++/14667
1919 * parser.c (cp_parser_simple_declaration): Do not diagnose invalid
1920 type names if we have already found a valid type.
1921 (cp_parser_member_declaration): Likewise.
c5ff069d 1922
d6b4201f 1923 PR c++/17916
de3fe73c
MM
1924 * parser.c (cp_parser_member_specification_opt): Handle
1925 CPP_PRAGMA.
1926
80c48076
KH
19272004-10-15 Kazu Hirata <kazu@cs.umass.edu>
1928
1929 * dump.c, g++spec.c, repo.c: Update copyright.
1930
06b60445
KH
19312004-10-15 Kazu Hirata <kazu@cs.umass.edu>
1932
1933 * decl.c: Fix a comment typo.
1934
db3a9519
AP
19352004-10-13 Andrew Pinski <pinskia@physics.uc.edu>
1936
1937 PR c++/16301
1938 * name-lookup.c (parse_using_directive): If we have a
1939 error_mark_node, do not set the decl namespace associations
1940 on it.
1941
745d26d9
MM
19422004-10-14 Mark Mitchell <mark@codesourcery.com>
1943
1944 PR c++/17976
1945 * decl.c (cp_finish_decl): Do not call expand_static_init more
1946 than once for a single variable.
1947
0c58f841
MA
19482004-10-14 Matt Austern <austern@apple.com>
1949
1950 * Make-lang.in (pt.o): depends on pointer-set.h
1951 * cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now.
1952 * pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t
1953 (for_each_template_parm): Convert from htab_t to pointer_set_t.
1954 * tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now.
c5ff069d 1955
bcd46a7c
AP
19562004-10-13 Andrew Pinski <pinskia@physics.uc.edu>
1957
1958 PR c++/17661
1959 * semantics.c (finish_for_expr): Convert expression to void
1960 so that we don't create temporaries for a?b:c.
1961
f0ec2b9a
KH
19622004-10-13 Kazu Hirata <kazu@cs.umass.edu>
1963
1964 * search.c: Fix a comment typo.
1965
2c2e8978
NS
19662004-10-12 Nathan Sidwell <nathan@codesourcery.com>
1967
5b94d9dd
NS
1968 * class.c (dfs_modify_vtables): Simplify condition. Return
1969 dfs_skip_bases as appropriate.
1970 (modify_all_vtables): Walk in pre-order.
1971 * search.c (dfs_walk_all, dfs_walk_once_r,
1972 dfs_walk_once_accessible_r): Assert post order function never
1973 returns dfs_skip_bases.
1974
2c2e8978
NS
1975 * search.c (struct lookup_base_data_s): New.
1976 (lookup_base_r): Replace with ...
1977 (dfs_lookup_base): ... this.
1978 (lookup_base): Use dfs_walk_all.
1979
d740dbe7
KH
19802004-10-12 Kazu Hirata <kazu@cs.umass.edu>
1981
1982 * search.c: Fix comment typos.
1983
06c00c70
MM
19842004-10-11 Mark Mitchell <mark@codesourcery.com>
1985
db86dd14 1986 PR c++/15786
c5ff069d 1987 * parser.c (cp_parser_declarator): Add member_p parameter.
db86dd14
MM
1988 (cp_parser_condition): Adjust calls to cp_parser_declarator.
1989 (cp_parser_explicit_instantiation): Likewise.
1990 (cp_parser_init_declarator): Likewise.
1991 (cp_parser_direct_declarator): Add member_p parameter. Do not
1992 parse tentatively when parsing the parameters to a member.
1993 (cp_parser_type_id): Adjust calls to cp_parser_declarator.
1994 (cp_parser_parameter_declaration): Likewise.
1995 (cp_parser_member_declaration): Likewise.
1996 (cp_parser_exception_declaration): Likewise.
1997
1ca939e5
MM
1998 PR c++/17936
1999 * cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment.
2000 * pt.c (optimize_specialization_lookup_p): Do not optimize lookups
2001 for members of partial or explicit specializations.
2002
06c00c70
MM
2003 PR c++/17929
2004 * decl2.c (finish_anon_union): Robustify.
2005
539ed333
NS
20062004-10-11 Nathan Sidwell <nathan@codesourcery.com>
2007
6936e493
NS
2008 * cp-tree.h (get_dynamic_cast_base_type): Rename to ...
2009 (dcast_base_hint): ... here.
2010 * rtti.c (build_dynamic_cast_1): Use dcast_base_hint.
2011 * search.c (struct dcast_data_s): New.
2012 (dynamic_cast_base_recurse): Remove. Replace with ...
2013 (dfs_dcast_hint_pre, dfs_dcast_base_post): ... these. New.
2014 (get_dynamic_cast_base_type): Rename to ...
2015 (dcast_base_hint): ... here. Use dfs_walk_once_accessible.
2016 (accessible_r): Remove.
2017 (dfs_accessible_post): New, broken out of accessible_r.
2018 (accessible_p): Use dfs_walk_once_accessible.
2019 (dfs_walk_once_accessible_r): New. From accessible_r.
2020 (dfs_walk_once_accessible): New. From acessible_p.
2021
539ed333
NS
2022 * cp-tree.h (SAME_BINFO_TYPE_P): New.
2023 * class.c (build_base_path): Use SAME_BINFO_TYPE_P to compare
2024 binfo types.
2025 (convert_to_base_statically, determine_primary_bases,
2026 update_vtable_entry_for_fn, dfs_modify_vtables, build_vtt_inits,
2027 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
2028 accumulate_vtbl_inits, dfs_accumulate_vtbl_inits,
2029 build_vtbl_initializer, add_vcall_offset_vtbl_entries_1): Likewise.
2030 * init.c (expand_member_init): Likewise.
2031 * search.c (lookup_base_r, dynamic_cast_base_recurse,
2032 binfo_via_virtual, copied_binfo, binfo_for_vbase,
2033 original_binfo): Likewise.
2034 * tree.c (copy_binfo): Likewise.
2035
22423a1f
KH
20362004-10-11 Kazu Hirata <kazu@cs.umass.edu>
2037
2038 * semantics.c: Fix comment typos.
2039
0ad28dde
AP
20402004-10-10 Andrew Pinski <pinskia@physics.uc.edu>
2041
2042 PR c++/17554
2043 part of c++/17657
2044 middle-end/17703
2045 * semantics.c (maybe_cleanup_point_expr): Call
2046 fold_build_cleanup_point_expr.
2047 (maybe_cleanup_point_expr_void): New function.
2048 (add_decl_expr): Call maybe_cleanup_point_expr_void.
2049 (finish_expr_stmt): Likewise.
2050 (finish_return_stmt): Likewise.
2051 (finish_for_expr): Likewise.
2052 (finish_asm_stmt): Likewise.
2053 * typeck.c (condition_conversion): Call
2054 fold_build_cleanup_point_expr.
2055
b187901e
AP
20562004-10-10 Andrew Pinski <pinskia@physics.uc.edu>
2057
2058 PR c++/17907
2059 * semantics.c (add_decl_expr): If the decl has a size which
2060 has side effects then the decl expression needs a cleanup point.
2061
22ab714d
MM
20622004-10-10 Mark Mitchell <mark@codesourcery.com>
2063
2064 PR c++/17393
2065 * decl.c (grokdeclarator): Robustify error-recovery on invalid
2066 declarations.
2067
a82e1a7d
GDR
20682004-10-10 Gabriel Dos Reis <gdr@integrable-solutions.net>
2069
2070 Convert diagnostics to use quoting flag q 7/n
c5ff069d
ZW
2071 * typeck.c (composite_pointer_type_r, composite_pointer_type,
2072 cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr,
2073 string_conv_p, build_class_member_access_expr,
2074 build_class_member_access_expr, lookup_destructor,
2075 finish_class_member_access_expr, build_indirect_ref,
2076 get_member_function_from_ptrfunc, build_function_call,
2077 convert_arguments, build_binary_op, pointer_diff, build_unary_op,
2078 check_for_casting_away_constness, build_static_cast,
2079 build_reinterpret_cast, build_const_cast, build_c_cast,
2080 build_modify_expr, get_delta_difference, build_ptrmemfunc,
2081 dubious_conversion_warnings, convert_for_assignment,
2082 convert_for_initialization,
2083 maybe_warn_about_returning_address_of_local, check_return_expr):
a82e1a7d
GDR
2084 Use quoting marks.
2085
c5ff069d
ZW
2086 * typeck2.c (error_not_base_type, readonly_error,
2087 abstract_virtuals_error, cxx_incomplete_type_diagnostic,
2088 store_init_value, digest_init, build_x_arrow,
a82e1a7d
GDR
2089 build_m_component_ref, require_complete_eh_spec_types): Likewise.
2090
c5ff069d 2091 * tree.c (cp_build_qualified_type_real,
a82e1a7d
GDR
2092 handle_java_interface_attribute, handle_init_priority_attribute):
2093 Likewise.
2094
c5ff069d
ZW
2095 * semantics.c (finish_asm_stmt, finish_non_static_data_member,
2096 finish_pseudo_destructor_expr,
2097 check_template_template_default_arg, begin_class_definition,
2098 finish_base_specifier, qualified_name_lookup_error,
a82e1a7d
GDR
2099 finish_id_expression, finish_typeof): Likewise.
2100
2101 * search.c (lookup_base, check_final_overrider,
2102 look_for_overrides_r): Likewise.
2103
2104 * rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise.
2105
62e19030
MM
21062004-10-09 Mark Mitchell <mark@codesourcery.com>
2107
17a27b4f
MM
2108 PR c++/17867
2109 * error.c (dump_expr): Correct handling of AGGR_INIT_EXPRs using a
2110 constructor.
2111
2112 PR c++/17670
2113 * init.c (build_new): Correct comments.
2114 * parser.c (cp_parser_new_expression): Use NULL_TREE for nelts in
2115 the non-array case.
2116
2117 PR c++/17821
2118 * parser.c (cp_parser_postfix_dot_deref_expression): If the
2119 pseduo-destructor-name production does not work, fall back to the
2120 ordinary production.
2121
2122 PR c++/17826
2123 * tree.c (cp_tree_equal): Handle a BASELINK.
2124
62e19030
MM
2125 PR c++/17524
2126 * cp-tree.h (check_var_type): New function.
2127 * decl.c (check_var_type): New function, split out from ...
2128 (grokdeclarator): ... here.
2129 * pt.c (tsubst_decl): Use check_var_type.
2130
2131 PR c++/17685
2132 * decl.c (grokdeclarator): Disallow declarations of operators as
2133 non-functions.
c5ff069d 2134
ba52691c
VR
21352004-10-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2136
2137 PR c++/17868
2138 * error.c (dump_expr): Add missing case for RDIV_EXPR.
2139
ee81147e
KH
21402004-10-08 Kazu Hirata <kazu@cs.umass.edu>
2141
2142 * pt.c, search.c: Fix comment typos.
2143
5d5a519f
NS
21442004-10-08 Nathan Sidwell <nathan@codesourcery.com>
2145
2146 * cp-tree.h (dfs_walk, dfs_walk_real, dfs_unmark, markedp,
2147 unmarkedp): Remove.
2148 (dfs_skip_bases, dfs_walk_all, dfs_walk_once): New.
2149 * class.c (struct find_final_overrider_data): Remove most_derived,
2150 vpath_list and vpath fields. Add path field.
2151 (dfs_find_final_ocerrider_1): Add DEPTH parameter. Adjust.
2152 (dfs_find_final_overrider): Rename to ...
2153 (dfs_find_final_overrider_pre): ... here. Adjust.
2154 (dfs_find_final_overrider_post): Adjust.
2155 (dfs_find_final_overrider_q): Fold into
2156 dfs_find_final_overrider_pre.
2157 (find_final_overrider): Adjust dfs searching.
2158 (dfs_modify_vtables): Don't mark binfo here.
2159 (modify_all_vtables): Use dfs_walk_once.
2160 (build_vtt_inits): Likwise. Use dfs_walk_all.
2161 (dfs_build_secondary_vptr_vtt_inits): Don't mark binfo here.
2162 Return dfs_skip_bases as appropriate.
2163 (dfs_fixup_binfo_vtbls): Return dfs_skip_bases as appropriate.
2164 * init.c (dfs_initialized_vtbl_ptrs): Return dfs_skip_bases as
2165 appropriate. Don't mark binfo here.
2166 (initialize_vtbl_ptrs): Use dfs_walk_once.
2167 * search.c (struct vbase_info): Remove unused struct.
2168 (access_in_type): Use dfs_walk_once.
2169 (dfs_access_in_type): Don't mark binfo here.
2170 (dfs_accessible_queue_p, dfs_accessible_p) Remove.
2171 Fold into ...
2172 (accessible_r): ... here. New. Specialize dfs_walk_once.
2173 (accessible_p): Use accessible_r.
2174 (lookup_field_queue_p): Remove. Fold into ...
2175 (lookup_field_r): ... here. Adjust.
2176 (lookup_member): Use dfs_walk_all.
2177 (dfs_walk_real, dfs_walk): Replace with ...
2178 (dfs_walk_all, dfs_walk_once): ... these.
2179 (dfs_walk_once_r, dfs_unmark_r): Workers for dfs_walk_once.
2180 (dfs_unmark, unmarkedp, markedp): Remove.
2181 (dfs_get_pure_virtuals): Don't mark binfo here.
2182 (get_pure_virtuals): Use dfs_walk_once.
2183 (dfs_debug_unmarked_p): Remove. Fold into ...
2184 (dfs_debug_mark): ... here.
2185 (note_debug_info_needed): Use dfs_walk_all.
2186
131263fa
AP
21872004-10-07 Andrew Pinski <pinskia@physics.uc.edu>
2188
2189 * pt.c (tsubst_expr) <case ASM_EXPR>: Look passed the
2190 CLEANUP_POINT_EXPR to get the asm expression.
2191
c7222c02
MM
21922004-10-07 Mark Mitchell <mark@codesourcery.com>
2193
2194 * cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag.
2195 (DECL_MEMBER_TEMPLATE_P): New macro.
2196 (is_member_template): Remove.
2197 (class_method_index_for_fn): New function.
2198 * pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P.
2199 * class.c (finish_struct_methods): Remove out-of-date comment.
2200 * decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P.
2201 * decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and
2202 class_method_index_for_fn.
2203 * pt.c (is_member_template): Remove.
2204 (is_member_template_class): Likewise.
2205 (optimize_specialization_lookup_p): New function.
2206 (retrieve_specialization): Optimize lookups for members that are
2207 not member templates.
2208 (register_specialization): Adjust accordingly.
2209 (build_template_decl): Add member_template_p parameter. Set
2210 DECL_MEMBER_TEMPLATE_P.
2211 (process_partial_specialization): Adjust call to
2212 retrieve_specialization.
2213 (push_template_decl_real): Determine whether the template is a
2214 member template.
2215 (lookup_template_class): Use retrieve_specialization.
2216 (tsubst_decl): Adjust call to retrieve_specialization.
2217 (tsubst_exception_specification): New function.
2218 (tsubst): Use it.
2219 (tsubst_copy): Use DECL_MEMBER_TEMPLATE_P.
2220 (instantiate_template): Adjust call to retrieve_specialization.
2221 (regenerate_decl_from_template): Do not actually generate a new
2222 DECL.
2223 (instantiate_decl): Adjust call to retrieve_specialization.
2224 (class_method_index_for_fn): New method.
2225
ca059043
AP
22262004-10-07 Andrew Pinski <pinskia@physics.uc.edu>
2227
2228 * parser.c (cp_parser_asm_definition): Look passed the
2229 CLEANUP_POINT_EXPR to get the asm expression.
2230
22312004-10-06 Andrew Pinski <pinskia@physics.uc.edu>
564060c3
AP
2232
2233 PR c++/17368
2234 * semantics.c (finish_asm_stmt): Asm expressions need cleanup
2235 also.
2236
cdaf9d33 22372004-10-05 Gabriel Dos Reis <gdr@integrable-solutions.net>
0f51ccfc
GDR
2238
2239 Convert diagnostics to use quoting flag q 6/n
c5ff069d
ZW
2240 * pt.c (finish_member_template_decl, check_specialization_scope,
2241 maybe_process_partial_specialization, determine_specialization,
2242 check_explicit_specialization, maybe_check_template_type,
2243 process_partial_specialization, check_default_tmpl_args,
2244 push_template_decl_real, redeclare_class_template,
2245 convert_nontype_argument, coerce_template_parms,
2246 lookup_template_class, push_tinst_level,
2247 instantiate_class_template, tsubst_arg_types,
2248 tsubst_function_type, tsubst, tsubst_qualified_id,
2249 tsubst_copy_and_build, check_instantiated_args,
2250 do_decl_instantiation, do_type_instantiation,
2251 invalid_nontype_parm_type_p, check_specialization_namespace,
2252 convert_template_argument, determine_specialization,
2253 check_template_shadow, tsubst_decl
0f51ccfc
GDR
2254 instantiate_pending_templates): Use quoting marks.
2255
89d594a2
NS
22562004-10-05 Nathan Sidwell <nathan@codesourcery.com>
2257
2258 PR c++/17829
2259 * parser.c (cp_parser_postfix_expression): Inhibit Koenig when
2260 unqualified lookup finds a member function.
2261
2a13a625
GDR
22622004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
2263
0f51ccfc 2264 Convert diagnostics to use quoting flag q 5/n
c5ff069d
ZW
2265 * parser.c (cp_parser_name_lookup_error,
2266 cp_parser_diagnose_invalid_type_name,
2267 cp_parser_primary_expression, cp_parser_unqualified_id,
2268 cp_parser_nested_name_specifier_opt, cp_parser_labeled_statement,
2269 cp_parser_jump_statement, cp_parser_simple_declaration,
2270 cp_parser_decl_specifier_seq, cp_parser_mem_initializer_id,
2271 cp_parser_type_parameter, cp_parser_template_id,
2272 cp_parser_template_name, cp_parser_direct_declarator,
2273 cp_parser_parameter_declaration_list, cp_parser_class_head,
2274 cp_parser_base_specifier, cp_parser_lookup_name,
2275 cp_parser_late_parsing_default_args,
2276 cp_parser_optional_template_keyword
2277 cp_parser_elaborated_type_specifier, cp_parser_check_class_key,
2a13a625
GDR
2278 cp_parser_check_access_in_redeclaration): Use quoting marks.
2279
c5ff069d
ZW
2280 * name-lookup.c (supplement_binding, pushdecl,
2281 check_for_out_of_scope_variable, validate_nonmember_using_decl,
2282 do_nonmember_using_decl, lookup_tag, set_decl_namespace,
2283 push_namespace, do_namespace_alias, do_using_directive,
2a13a625
GDR
2284 ambiguous_decl, lookup_namespace_name, add_function): Likewise.
2285
2286 * method.c (use_thunk): Likewise.
2287
c5ff069d 2288 * lex.c (unqualified_name_lookup_error,
2a13a625
GDR
2289 unqualified_fn_lookup_error): Likewise.
2290
15a7ee29
GDR
22912004-10-04 Gabriel Dos Reis <gdr@integrable-solutions.net>
2292
2293 Convert diagnostics to use quoting flag q 4/n
c5ff069d
ZW
2294 * except.c (decl_is_java_type, build_throw,
2295 is_admissible_throw_operand, check_handlers_1, check_handlers):
15a7ee29
GDR
2296 Use quoting formats.
2297 * friend.c (add_friend, make_friend_class, do_friend): Likewise.
c5ff069d
ZW
2298 * init.c (sort_mem_initializers, emit_mem_initializers,
2299 member_init_ok_or_else, expand_member_init, is_aggr_type,
15a7ee29
GDR
2300 build_offset_ref, build_java_class_ref): Likewise.
2301
2d01edd7
GDR
23022004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
2303
2304 Convert diagnostics to use quoting flag q 3/n
2305 * decl.c (pop_label, duplicate_decls, redeclaration_error_message,
2306 redeclaration_error_message, lookup_label, check_goto,
2307 make_typename_type, make_unbound_class_template,
c5ff069d
ZW
2308 fixup_anonymous_aggr, check_tag_decl, start_decl, start_decl_1,
2309 grok_reference_init, layout_var_decl, maybe_commonize_var,
2310 check_for_uninitialized_const_var, reshape_init_array,
2d01edd7 2311 reshape_init, check_initializer, cp_finish_decl,
c5ff069d
ZW
2312 member_function_or_else, bad_specifiers, grokfndecl, grokvardecl,
2313 check_static_variable_definition, compute_array_index_type,
2314 create_array_type_for_decl, check_special_function_return_type,
2315 grokdeclarator, check_default_argument, grokparms,
2316 grok_ctor_properties, grok_op_properties,
2317 check_elaborated_type_specifier, xref_tag, finish_enum,
2318 build_enumerator, check_function_type, start_preparsed_function,
2d01edd7 2319 store_parm_decls): Use quoting formats.
c5ff069d
ZW
2320 * decl2.c (grok_array_decl, delete_sanity, check_member_template,
2321 check_java_method, check_classfn, finish_static_data_member_decl,
2d01edd7
GDR
2322 grokfield, grokbitfield, grok_function_init,
2323 build_anon_union_vars, coerce_new_type, coerce_delete_type,
2324 check_default_args): Likewise.
2325 * parser.c (cp_parser_decl_specifier_seq): Likewise.
2326
1f070f2b
GDR
23272004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
2328
2329 Convert diagnostics to use quoting flag q 2/n
2330 * class.c (build_base_path, add_method, alter_access,
2331 handle_using_decl, check_bases,
2332 maybe_warn_about_overly_private_class, find_final_overrider,
2333 warn_hidden, finish_struct_anon, add_implicitly_declared_members,
2334 check_bitfield_decl, check_field_decls, layout_empty_base,
2335 build_base_field, check_methods, layout_virtual_bases,
2336 warn_about_ambiguous_bases, layout_class_type, finish_struct_1,
2337 resolve_address_of_overloaded_function, instantiate_type,
2338 note_name_declared_in_class): Use format flag "q" for quoting.
2339
41775162
GDR
23402004-10-03 Gabriel Dos Reis <gdr@integrable-solutions.net>
2341
2342 Convert diagnostics to use quoting flag q 1/n
2343 * error.c (locate_error): Ignore quoting flag q.
2344 * call.c (build_user_type_conversion_1, build_operator_new_call,
2345 build_object_call, op_error, build_conditional_expr,
2346 build_new_op, build_op_delete_call, enforce_access,
2347 convert_like_real, convert_arg_to_ellipsis, build_x_va_arg,
2348 convert_default_arg, build_over_call, build_new_method_call,
2349 joust, perform_implicit_conversion, initialize_reference): Use the
2350 quoting flag q.
2351
a8c2c492
AP
23522004-10-03 Andrew Pinski <pinskia@physics.uc.edu>
2353
2354 PR c++/17797
2355 * typeck.c (build_reinterpret_cast): Return if the inner type
2356 is error_mark_node.
2357
0f0377f6
JH
23582004-10-01 Jan Hubicka <jh@suse.cz>
2359
2360 * semantics.c (expand_body): Update call of tree_rest_of_compilation.
2361
84eeda0c
NS
23622004-09-30 Nathan Sidwell <nathan@codesourcery.com>
2363
2364 * cp-tree.h (struct lang_decl): Shrink by reordering fields and
2365 turning operator_code and fixed_offset into bitfields.
2366
302a2cc5
JM
23672004-09-29 Joseph S. Myers <jsm@polyomino.org.uk>
2368
2369 * decl.c (duplicate_decls): Merge TREE_DEPRECATED.
2370
5cefa0d9
JM
23712004-09-29 Jason Merrill <jason@redhat.com>
2372
2373 PR tree-optimization/17697
2374 * decl.c (duplicate_decls): Copy TREE_NOTHROW from newdecl to olddecl.
2375
550f100c
JM
23762004-09-28 Jason Merrill <jason@redhat.com>
2377
2378 PR middle-end/17525
2379 * class.c (build_base_field): Set TYPE_MODE.
2380
078208eb
RS
23812004-09-28 Roger Sayle <roger@eyesopen.com>
2382
2383 PR driver/17537
2384 * g++spec.c (lang_specific_driver): Unrecognized libraries, other
2385 than -lc and -lm, may require linking against libstc++.
2386
f9f1c24e
KH
23872004-09-28 Kazu Hirata <kazu@cs.umass.edu>
2388
2389 * tree.c: Fix a comment typo.
2390
a3a0fc7f
NS
23912004-09-28 Nathan Sidwell <nathan@codesourcery.com>
2392
2393 * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): Remove.
2394 (struct secondary_vptr_vtt_init_data_s): New.
2395 (build_vtt_inits): Adjust dfs_walkers.
2396 (dfs_build_secondary_vptr_vtt_inits): Caller data is a
2397 secondary_vptr_vtt_init_data_s structure. Adjust.
2398 (dfs_ctor_vtable_bases_queue_p): Remove.
2399 (dfs_fixup_binfo_vtbls): No need to clear BINFO_MARKED. Simplify.
2400
2401 * pt.c (struct get_template_base_data_s): Remove.
2402 (get_template_base_r): Fold into get_template_base.
2403 (get_template_base): Walk base binfos directly in inheritance
2404 graph order.
2405
455f19cb
MM
24062004-09-27 Mark Mitchell <mark@codesourcery.com>
2407
2408 PR c++/17642
2409 * cp-tree.h (fold_if_not_in_template): New function.
2410 * call.c (build_conditional_expr): Use fold_if_not_in_template.
2411 (build_cxx_call): Likewise.
2412 * cvt.c (convert_to_complex): Likewise.
2413 (ocp_convert): Likewise.
2414 (convert): Likewise.
2415 (convert_force): Likewise.
2416 * decl.c (compute_array_index_type): Clear
2417 processing_template_decl while folding array bounds.
2418 * pt.c (convert_nontype_argument): Clear
2419 processing_template_decl while processing non-type argument
2420 initialization.
2421 * tree.c (fold_if_not_in_template): New function.
2422 * typeck.c (build_class_member_access_expr): Use
2423 fold_if_not_in_template.
2424 (build_array_ref): Likewise.
2425 (build_binary_op): Likewise. Do not try to optimize computations
2426 when processing templates.
2427 (cp_pointer_int_sum): Use fold_if_not_in_template.
2428 (pointer_diff): Likewise.
2429 (build_unary_op): Likewise.
2430 (build_reinterpret_cast): Likewise.
2431 (get_delta_difference): Likewise.
2432 (expand_ptrmemfunc_cst): Likewise.
2433 (dubious_conversion_warnings): Likewise.
2434
7d381002
MA
24352004-09-27 Matt Austern <austern@apple.com>
2436
a3a0fc7f 2437 * cp/parser.c (struct cp_token): New one-bit field , implicit_extern_c
7d381002
MA
2438 (cp_lexer_get_preprocessor_token): Set implicit_extern_c for
2439 tokens that come from headers that are implicitly extern "C".
2440 (struct cp_parser): new one-bit field, implicit_extern_c.
2441 (cp_parser_new): Set parser's implicit_extern_c to false.
2442 (cp_parser_translation_unit): Pop lang context if we were in a
2443 header that was implicitly extern "C".
2444 (cp_parser_declaration_seq_opt): Push/pop lang context as
2445 required by the token's and parser's implicit_extern_c.
c5ff069d 2446
d19e85e8
MM
24472004-09-27 Mark Mitchell <mark@codesourcery.com>
2448
821eaf2a
MM
2449 PR c++/17585
2450 * cp-tree.h (shared_member_p): Declare.
2451 * search.c (shared_member_p): Give it external linkage.
2452 * semantics.c (finish_qualified_id_expr): Use it.
2453 (finish_id_expression): Likewise.
2454
d19e85e8
MM
2455 PR c++/17585
2456 * semantics.c (finish_id_expression): Do not add "this->" to
2457 static member functions.
2458
8d83768f
NS
24592004-09-27 Nathan Sidwell <nathan@codesourcery.com>
2460
c81f61b2
NS
2461 PR c++/17681
2462 * error.c (dump_type): Change TREE_VEC case into TREE_BINFO.
2463
8d83768f
NS
2464 * class.c (struct count_depth_data): Remove.
2465 (dfs_depth_post, dfs_depth_q): Remove.
2466 (find_final_overrider): Use number of vbase classes as depth
2467 bound.
c5ff069d 2468
8d83768f
NS
2469 * cp-tree.h (types_overlap_p): Remove.
2470 * search.c (struct overlap_info): Remove.
2471 (dfs_check_overlap, dfs_no_overlap_yet, types_overlap_p): Remove.
c5ff069d 2472
8d83768f
NS
2473 * pt.c (GTB_VIA_VIRTUAL, GTB_IGNORE_TYPE): Remove.
2474 (get_template_base_recursive): Remove. Replace with ...
2475 (get_template_base_r): ... this.
2476 (struct get_template_base_data_s): New.
2477 (get_template_base): Use get_template_base_r via dfs_walk. Always
2478 return NULL on failure.
2479 (unify): Remove error_mark_node check from get_template_base result.
2480
43c2a69a
PB
24812004-09-24 Paolo Bonzini <bonzini@gnu.org>
2482
2483 * parser.c (cp_parser_expression_stack): Clarify why it is
2484 an array of NUM_PREC_VALUES elements.
2485 (cp_parser_binary_expression): Clarify why we do not need to
2486 handle stack overflow.
2487
5cf447db
NS
24882004-09-24 Nathan Sidwell <nathan@codesourcery.com>
2489
2490 PR c++/16889
2491 * search.c (lookup_field_queue_p): Correct check for hidden base.
2492
2493 * search.c (bfs_walk): Remove.
2494 (lookup_member): Use dfs_walk_real.
2495 (dfs_walk_real): Move and adjust documentation from bfs_walk.
2496
2cfe82fe
ZW
24972004-09-23 Zack Weinberg <zack@codesourcery.com>
2498
2499 * decl.c (grokfndecl): If ::main is found not to return int,
2500 correct it after issuing a diagnostic.
2501 (grokdeclarator): If the incoming type was error_mark_node, do
2502 not complain about declaring something with no type.
2503 (start_function): Change check for ::main not returning int to
2504 an assertion, as grokfndecl now catches this when the user did it.
2505 * init.c (perform_member_init, sort_mem_initializers)
2506 (emit_mem_initializers): Make most diagnostics be issued on
2507 the line of current_function_decl, not whatever the current
2508 input line is.
2509 * parser.c (cp_lexer_peek_token_emit_debug_info): Surround
2510 definition and declaration with #ifdef ENABLE_CHECKING.
2511 Avoid unnecessary use of fprintf.
2512 (cp_lexer_print_token, cp_lexer_debug_stream): Adjust stub
2513 definitions to avoid warnings.
2514 (cp_lexer_new_main): Add assertion that first token is not a
2515 padding token.
2516 (cp_lexer_new_from_token_array): Fold into ...
2517 (cp_lexer_new_from_tokens): ... here. Add assertion that
2518 first token is not a padding token.
2519 (cp_lexer_set_source_position_from_token): Move nearer to callers.
2520 Remove unused lexer argument.
2521 (cp_lexer_peek_token): Just print debugging report (if enabled)
2522 and return lexer->next_token.
2523 (cp_lexer_skip_purged_tokens): Delete.
2524 (cp_lexer_next_token_is, cp_lexer_next_token_is_not): Make
2525 inline, simplify bodies.
2526 (cp_lexer_peek_nth_token): Add debugging report a la
2527 cp_lexer_peek_token.
2528 (cp_lexer_consume_token): Correct commentary. Advance over
2529 purged tokens here. Set current source position here, from
2530 token to be returned. Avoid unnecessary use of fprintf.
2531 (cp_lexer_purge_token): Advance next_token pointer over this and
2532 subsequent purged tokens.
2533 (cp_parser_error): Adjust source position to that of the
2534 peeked token.
2535 (cp_parser_push_lexer_for_tokens, cp_parser_pop_lexer): New functions.
2536 (cp_parser_string_literal): Remove some excessive cleverness.
2537 (cp_parser_enum_specifier): Call start_enum before consuming
2538 the opening brace.
2539 (cp_parser_member_declaration): Make the "extra semicolon"
2540 diagnostic consistently-worded with the other place this is
2541 diagnosed. Explicitly set the diagnostic location to the
2542 location of the offending semicolon.
2543 (cp_parser_enclosed_template_argument_list): Use %</%> quoting
2544 in diagnostics. Do not use cp_parser_require. Set location
2545 of diagnostics about improper use of '>>' to location of
2546 offending token.
2547 (cp_parser_late_parsing_for_member):
2548 Use cp_parser_push_lexer_for_tokens and cp_parser_pop_lexer.
2549 (cp_parser_late_parsing_default_args): Likewise. Manually
2550 move some logic outside the loop.
2551
0c482362
AP
25522004-09-23 Andrew Pinski <pinskia@physics.uc.edu>
2553
2554 PR c++/17618
2555 * cvt.c (cp_convert_to_pointer): Return early when the type is
2556 an error_mark_node.
2557
23fad16e
AP
25582004-09-21 Fariborz Jahanian <fjahanian@apple.com>
2559
2560 PR c++/13989
2561 PR c++/9844
2562 * decl.c (grokfndecl): Add new argument "attrlist", use it
2563 to call cplus_decl_attributes.
2564 (start_function): Remove call to cplus_decl_attributes.
2565 * cvt.c (ocp_convert): Add support to use type conversion
2566 function to vector type.
2567 * parser.c (cp_parser_conversion_type_id): Add attributes, if any,
2568 to the parsed type.
2569
b8b94c5b
PB
25702004-09-23 Paolo Bonzini <bonzini@gnu.org>
2571
2572 PR c++/17596
2573
2574 * parser.c (cp_parser_token_tree_map_node,
2575 cp_parser_pm_expression, cp_parser_additive_expression,
2576 cp_parser_multiplicative_expression, cp_parser_shift_expression,
2577 cp_parser_relational_expression, cp_parser_equality_expression,
2578 cp_parser_and_expression, cp_parser_exclusive_or_expression,
2579 cp_parser_inclusive_or_expression,
2580 cp_parser_logical_and_expression,
2581 cp_parser_logical_or_expression): Removed.
2582 (enum cp_parser_prec, struct cp_parser_token_tree_map_node,
2583 binops, binops_by_token): New.
2584 (cp_parser_assignment_expression): Use cp_parser_binary_expression.
2585 (cp_parser_new): Initialize binops_by_token.
2586 (cp_parser_binary_expression): Rewritten.
2587 (N_CP_TTYPES): New.
2588
9688c3b8
KH
25892004-09-23 Kazu Hirata <kazu@cs.umass.edu>
2590
2591 * parser.c: Fix a comment typo.
2592
98d6e9af
NS
25932004-09-23 Nathan Sidwell <nathan@codesourcery.com>
2594
2595 PR c++/17620
2596 * decl.c (xref_basetypes): Look through typedefs before checking
2597 for duplicate base.
2598
3543e114
NS
25992004-09-22 Nathan Sidwell <nathan@codesourcery.com>
2600
94214953
NS
2601 * cp-tree.h (unemitted_tinfo_decls): Make a VEC(tree).
2602 * decl2.c (cp_finish_file): Adjust tinfo decl emission loop.
2603 * rtti.c (unemitted_tinfo_decls): Make a VEC(tree).
2604 (init_rtti_processing): Initialize it to something realistic.
2605 (get_tinfo_decl): Adjust pushing the new decl.
2606
3543e114
NS
2607 * cp-tree.h (struct lang_type_class): Remove marked flags, add
2608 diamond_shaped and repeated_base flags. Reorder to keep 8-bit blocks.
2609 (TYPE_MARKED_P): New.
2610 (CLASSTYPE_DIAMOND_SHAPED_P, CLASSTYPE_REPEATED_BASE_P): New.
2611 (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
2612 CLEAR_CLASSTYPE_MARKED_N): Remove.
2613 (CLASSTYPE_MARKED_*, SET_CLASSTYPE_MARKED_*,
2614 CLEAR_CLASSTYPE_MARKED_*): Remove.
2615 * decl.c (xref_basetypes): Use TYPE_MARKED_P. Determine diamond
2616 shaped and repeated base properties.
2617 * lex.c (cxx_make_type): Don't clear TYPE_ALIAS_SET.
2618 * rtti.c (dfs_class_hint_mark, dfs_class_hint_unmark,
2619 class_hint_flags): Remove.
2620 (get_pseudo_ti_init): Use CLASSTYPE_REPEATED_BASE_P and
2621 CLASSTYPE_DIAMOND_SHAPED_P.
2cfe82fe 2622
c3002ae9
ZL
26232004-09-21 Ziemowit Laski <zlaski@apple.com>
2624
2625 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved here from
2626 cp-objcp-common.h.
2627 (objcp_tsubst_copy_and_build): Reformat function signature.
2628 * cp-objcp-common.h (objcp_tsubst_copy_and_build): Likewise.
2629 (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved to cp-lang.c.
2630
36952dea
ZW
26312004-09-21 Zack Weinberg <zack@codesourcery.com>
2632
2633 * parser.c (cp_lexer_peek_token, cp_lexer_consume_token):
2634 Don't handle CPP_PRAGMA tokens specially.
2635 (cp_lexer_handle_pragma): Use cp_lexer_consume_token. Don't
2636 purge the token; do clear token->value after processing. Add
2637 assertion at beginning that token->value is nonzero.
2638 (cp_parser_statement, cp_parser_declaration_seq_opt): Handle
2639 CPP_PRAGMA as a full statement or declaration in its own right.
2640
6bdb98d1
MA
26412004-09-21 Matt Austern <austern@apple.com>
2642
2643 PR c++/15049
2644 * decl.c (grokvardecl): Accept declarations of global variables
2645 using anonymous types.
36952dea 2646
d211a298
RS
26472004-09-21 Roger Sayle <roger@eyesopen.com>
2648
2649 PR c++/7503
2650 * tree.c (lvalue_p_1): Disallow MIN_EXPR and MAX_EXPR as lvalues
2651 if either operand has side-effects.
2652 * typeck.c (rationalize_conditional_expr): Assert that neither
2653 operand of MIN_EXPR or MAX_EXPR has side-effects.
2654 (build_modify_expr): Add support for MIN_EXPR and MAX_EXPR.
2655 Check that the "lhs" is a valid lvalue, i.e. that neither operand
2656 of a MIN_EXPR or MAX_EXPR has a side-effect.
2657
5775a06a
NS
26582004-09-21 Nathan Sidwell <nathan@codesourcery.com>
2659
2660 * cp-tree.h (struct lang_type_header): Remove
2661 uses_multiple_inheritance field.
2662 (TYPE_USES_MULTIPLE_INHERITANCE): Remove.
2663 (TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P): Remove.
2664 (TYPE_USES_VIRTUAL_BASECLASSES): Remove.
2665 (DECL_NEEDS_VTT_PARM_P): Use CLASSTYPE_VBASECLASSES.
2666 (TYPE_CONTAINS_VPTR_P): Likewise.
2667 * call.c (add_template_candidate_real): Use
2668 CLASSTYPE_VBASECLASSES.
2669 (build_special_member_call): Likewise.
2670 * class.c (finish_struct_bits): Remove
2671 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P & TYPE_USES_VIRTUAL_BASECLASSES
2672 bookkeeping.
2673 (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
2674 (create_vtable_ptr): Remove TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P
2675 bookkeeping.
2676 (build_vtt_inits): Use CLASSTYPE_VBASECLASSES.
2677 (accumulate_vtbl_inits, build_vbase_offset_vtbl_entries):
2678 Likewise.
2679 * decl.c (xref_basetypes): Remove TYPE_USES_MULTIPLE_INHERITANCE,
2680 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
2681 bookkeeping.
2682 (cxx_maybe_build_cleanup): Use CLASSTYPE_VBASECLASSES.
2683 * decl2.c (maybe_retrofit_in_chrg): Likewise.
2684 * init.c (expand_member, push_base_cleanups): Likewise.
2685 * pt.c (instantiate_class_template): Remove
2686 TYPE_USES_MULTIPLE_INHERITANCE,
2687 TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
2688 bookkeeping.
2689 * ptree.c (cxx_print_type): Remove TYPE_USES_MULTIPLE_INHERITANCE
2690 check.
2691 * typeck2.c (process_init_constructor): Replace some sorrys with
2692 asserts.
2693
b6ad178e
AT
26942004-09-21 Andreas Tobler <a.tobler@schweiz.ch>
2695
2696 * decl.c (reshape_init_array): Initialize max_index_cst to fix
2697 bootstrap failure.
2698
9b60dfd7
MM
26992004-09-20 Mark Mitchell <mark@codesourcery.com>
2700
2701 PR c++/17530
2702 * pt.c (tsubst): Fix parentheses to accomodate emacs.
2703 (tsubst_baselink): If we get a single function, mark it as used.
2704
c162c75e
MA
27052004-09-20 Matt Austern <austern@apple.com>
2706 Zack Weinberg <zack@codesourcery.com>
2707
2708 * decl.c (make_rtl_for_nonlocal_decl, start_preparsed_function):
2709 Apply lbasename to input_filename before passing to get_fileinfo.
2710 * semantics.c (begin_class_definition): Likewise.
2711 * lex.c (handle_pragma_interface): Apply get_fileinfo to the
2712 correct filename. Rename variables to be less confusing.
2713 (handle_pragma_implementation): Likewise. Disable "appears
2714 after file is included" diagnostic.
2715
2716 * parser.c (struct cp_token): Add in_system_header fiag.
2717 (CP_TOKEN_BLOCK_NUM_TOKENS, struct cp_token_block)
2718 (CP_TOKEN_BUFFER_SIZE, cp_token_cache_push_token)
2719 (CPP_NONE, cp_lexer_read_token): Delete.
2720 (struct cp_lexer): Remove first_token, string_tokens,
2721 main_lexer_p fields. Clarify comments.
2722 (struct cp_token_cache): Now just a pair of pointers.
2723 (CP_LEXER_BUFFER_SIZE): New #define.
2724 (CPP_PURGED): New fake token type.
2725 (cp_lexer_new_from_token_array, cp_lexer_destroy)
2726 (cp_lexer_peek_token_emit_debug_info, cp_lexer_skip_purged_tokens)
2727 (cp_lexer_handle_pragma, cp_token_cache_new, cp_parser_string_literal):
2728 New functions.
2729 (cp_lexer_new_from_tokens): Now a simple wrapper around
2730 cp_lexer_new_from_token_array.
2731 (cp_lexer_set_source_position_from_token): Also update
2732 in_system_header.
2733 (cp_lexer_next_token, cp_lexer_prev_token, cp_lexer_advance_token):
2734 Don't wrap round.
2735 (cp_lexer_token_difference): Dont handle wrapping round.
2736 (cp_lexer_new_main): Enable pragma deferral and raw strings,
2737 read the entire translation unit through c_lex_with_flags into
2738 this lexer's buffer, then turn raw strings back off again.
2739 (cp_lexer_grow_buffer): Adjust for buffer no longer being circular.
2740 (cp_lexer_get_preprocessor_token): No need to handle not being
2741 the main lexer. Set token->in_system_header too.
2742 (cp_lexer_peek_token): Skip purged tokens. Feed pragma tokens
2743 to cp_lexer_handle_pragma. No need to call cp_lexer_read_token.
2744 (cp_lexer_peek_nth_token): Likewise.
2745 (cp_lexer_purge_token): Mark the token PURGED, don't shift all
2746 the other tokens down.
2747 (cp_lexer_purge_tokens_after): Likewise.
2748 (cp_lexer_save_tokens, cp_lexer_rollback_tokens): Don't worry
2749 about there being no tokens.
2750 (cp_lexer_print_token): Revise to give useful information on
2751 all tokens.
2752 (struct cp_parser): Add field translate_strings_p.
2753 (cp_parser_new): Initialize it.
2754 (cp_parser_translation_unit): Destroy the lexer when done.
2755 (cp_parser_parameter_declaration): Restructure saving of
2756 default arguments.
2757 (cp_parser_save_member_function_body): Likewise.
2758 (cp_parser_check_for_invalid_template_id)
2759 (cp_parser_nested_name_specifier_opt, cp_parser_template_id):
2760 Adjust calls to cp_lexer_advance_token.
2761 (cp_parser_skip_to_closing_parenthesis, cp_parser_declaration):
2762 No need to fiddle c_lex_string_translate.
2763 (cp_parser_primary_expression, cp_parser_linkage_specification)
2764 (cp_parser_asm_definition, cp_parser_asm_specification_opt)
2765 (cp_parser_asm_operand_list, cp_parser_asm_clobber_list)
2766 Use cp_parser_string_literal.
2767 (cp_parser_attribute_list): Save and restore
2768 parser->translate_strings_p, not c_lex_string_translate.
2769 (cp_parser_cache_group): Delete.
2770 (cp_parser_cache_group_1): Rename cp_parser_cache_group. Do
2771 not take a cache argument.
2772
3d142be2
GB
27732004-09-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2774
2775 PR c++/14179
2776 * decl.c (reshape_init): Extract array handling into...
2777 (reshape_init_array): New function. Use integers instead of trees
2778 for indices. Handle out-of-range designated initializers.
2779
d3907cc3
SB
27802004-09-20 Steven Bosscher <stevenb@suse.de>
2781
2782 * lex.c (cxx_init): Don't set the ridpointer for RID_NULL
2783 to null_node.
2784
5bd91632
MM
27852004-09-19 Mark Mitchell <mark@codesourcery.com>
2786
2787 * decl2.c (determine_visibility): Allow class visibility
2788 directives to override targetm.cxx.export_class_data.
2789
5995ebfb
KH
27902004-09-18 Kazu Hirata <kazu@cs.umass.edu>
2791
2792 * call.c, semantics.c: Follow spelling conventions.
2793 * class.c: Fix a comment typo.
2794
a396f8ae
GK
27952004-09-16 Geoffrey Keating <geoffk@apple.com>
2796
2797 PR pch/13361
2798 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
2799 (handle_pragma_implementation): Likewise.
2800
6615c446
JO
28012004-09-17 Jeffrey D. Oldham <oldham@codesourcery.com>
2802 Zack Weinberg <zack@codesourcery.com>
2803
2804 * cp-tree.def: Use tree_code_class enumeration constants
2805 instead of code letters.
2806 * call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
2807 * mangle.c, pt.c, semantics.c, tree.c, typeck.c:
2808 Update for new tree-class enumeration constants.
2809
67bcc252
MM
28102004-09-16 Mark Mitchell <mark@codesourcery.com>
2811
996c2b52
MM
2812 PR c++/16002
2813 * parser.c (cp_parser_simple_declaration): Commit to tentative
2814 parses after seeing a decl-specifier.
2815 (cp_parser_simple_declaration): Eliminate spurious message.
2816 (cp_parser_init_declarator): Adjust error message.
2817
2818 PR c++/16029
2819 * lex.c (unqualified_name_lookup_error): Mark the dummy
2820 declaration as used.
2821
67bcc252
MM
2822 PR c++/17501
2823 * parser.c (cp_parser_nested_name_specifier): Do not resolve
2824 typename types if the user explicitly said "typename".
2825
2d0db225
AM
28262004-09-16 Andrew MacLeod <amacleod@redhat.com>
2827
6615c446 2828 * error.c (dump_decl): Make sure there is lang_specific info before
2d0db225
AM
2829 checking for DTOR and CTOR decls.
2830
d1f05f93
NS
28312004-09-16 Nathan Sidwell <nathan@codesourcery.com>
2832
2833 * class.c (copy_virtuals): Remove.
2834 (build_primary_vtable): Use copy_list directly.
2835 (build_secondary_vtable): Likewise.
2836 (update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
2837 (create_vtable_ptr): Likewise.
2838
9c763d19
KH
28392004-09-16 Kazu Hirata <kazu@cs.umass.edu>
2840
2841 * search.c: Follow spelling conventions.
2842
fbc704f8
NS
28432004-09-16 Nathan Sidwell <nathan@codesourcery.com>
2844
2845 * cp-tree.h (struct lang_type_class): Make pure_virtuals a
2846 VEC(tree).
2847 (CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
2848 comments.
2849 * call.c (build_new_method_call): Don't confirm a pure virtual is
2850 in CLASSTYPE_PURE_VIRTUALS. Reorder checks. Make it a warning.
2851 * class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
2852 (fixup_inline_methods, finish_struct): Likewise.
2853 * decl.c (finish_method): Likewise.
2854 * search.c (dfs_get_pure_virtuals, get_pure_virtuals):
2855 CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
2856 * typeck2.c (abstract_virtuals_error): Likewise. Truncate the
2857 vector to avoid repeating the list in error messages.
2858
c18a5b6c
MM
28592004-09-15 Mark Mitchell <mark@codesourcery.com>
2860
2861 * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define.
2862 * cp-tree.h (cxx_comdat_group): Declare.
2863 * decl.c (cxx_comdat_group): New function.
2864
16ae29f1
NS
28652004-09-15 Nathan Sidwell <nathan@codesourcery.com>
2866
69862840
NS
2867 * search.c (get_pure_virtuals): Remove unused variables.
2868
16ae29f1
NS
2869 * cp-tree.h (struct lang_decl_flags): Remove
2870 needs_final_overrider.
2871 (DECL_NEEDS_FINAL_OVERRIDER_P): Remove.
2872 * decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P.
2873 * class.c (finish_struct_bits): Correct comment about
2874 CLASSTYPE_PURE_VIRTUALS.
2875 * search.c (get_pure_virtuals): Remove useless loop.
2876
bb5ecf29
MM
28772004-09-14 Mark Mitchell <mark@codesourcery.com>
2878
2879 PR c++/17324
2880 * mangle.c (partially_mangled_name): New variable.
2881 (partially_mangled_name_len): Likewise.
2882 (save_partially_mangled_name): New function.
2883 (restore_partially_mangled_name): Likewise.
2884 (write_encoding): Save and restore partially mangled names around
2885 calls to get_mostly_instantiated_function_type.
2886 (write_unqualified_name): Likewise.
2887
98ddffc1
NS
28882004-09-14 Nathan Sidwell <nathan@codesourcery.com>
2889
2890 * pt.c (unify): Replace gcc_unreachable with gcc_assert.
2891
3590f0a6
MM
28922004-09-13 Mark Mitchell <mark@codesourcery.com>
2893
a52eb3bc
MM
2894 PR c++/16162
2895 * parser.c (cp_parser_id_expression): Correct value for
2896 is_declarator.
2897 (cp_parser_nested_name_specifier_opt): Look through typenames as
2898 necessary.
2899 (cp_parser_template_name): Honor check_dependency_p.
2900
3590f0a6
MM
2901 PR c++/16716
2902 * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
2903 Robustify.
2904
2905 PR c++/17327
2906 * pt.c (unify): Add ENUMERAL_TYPE case. Replace sorry with
2907 gcc_unreacable.
2908
373c0e7f
RH
29092004-09-12 Richard Henderson <rth@redhat.com>
2910
2911 PR c++/16254
2912 * semantics.c (maybe_cleanup_point_expr): Don't call fold.
2913 * typeck.c (condition_conversion): Likewise.
2914
0fe0caa6
RH
29152004-09-11 Richard Henderson <rth@redhat.com>
2916
2917 PR c++/17404
6615c446
JO
2918 * pt.c (cur_stmt_expr): Move from tsubst_expr.
2919 (tsubst_expr) <case STMT_EXPR>: Move ...
2920 (tsubst_copy_and_build): ... here.
0fe0caa6 2921
5d709b00
ZW
29222004-09-10 Zack Weinberg <zack@codesourcery.com>
2923
2924 * cp-tree.h (interface_only, interface_unknown): Delete declarations;
2925 comment explaining them moved to c-common.h.
2926 * lex.c (interface_only, interface_unknown, extract_interface_info):
2927 Delete definitions.
2928 (cxx_finish): Don't reset interface_unknown.
2929 (handle_pragma_interface): Don't set interface_only and
2930 interface_unknown; just the like-named fields in finfo.
2931 (handle_pragma_implementation): Adjust comment.
2932 * decl2.c (cp_finish_file): Don't reset interface_only and
2933 interface_unknown.
2934 * method.c (synthesize_method): Don't reset interface_unknown or
2935 call extract_interface_info.
2936 * pt.c (pop_tinst_level): Don't call extract_interface_info.
2937 * decl.c (start_cleanup_fn): Don't save or restore interface_only
2938 and interface_unknown.
2939 (make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
2940 and use the result instead of the interface_only/interface_unknown
2941 globals.
2942 (start_preparsed_function): Likewise.
2943 * lex.c (cxx_make_type): Likewise.
2944 * semantics.c (begin_class_definition): Likewise.
2945 (expand_body): Don't call extract_interface_info.
2946
f749f3c2
ZL
29472004-09-10 Ziemowit Laski <zlaski@apple.com>
2948
5d709b00 2949 * decl.c (objc_mark_locals_volatile): Make description of
f749f3c2
ZL
2950 routine more descriptive; only mark VAR_DECLs at each
2951 binding level.
2952
981c353e
RH
29532004-09-10 Richard Henderson <rth@redhat.com>
2954
2955 PR c++/17386
2956 * call.c (build_vfield_ref): Move...
2957 * class.c (build_vfield_ref): ... here. Convert datum to the
2958 primary base containing the vptr.
2959 (make_new_vtable): Simplify build_primary_vtable arguments.
2960 (finish_struct_1): Do not duplicate TYPE_VFIELD.
2961 * typeck.c (build_class_member_access_expr): Don't warn for
2962 null object access to base fields.
2963
80aa8340
ZL
29642004-09-10 Ziemowit Laski <zlaski@apple.com>
2965
2966 * decl.c (objc_get_current_scope, objc_mark_locals_volatile):
2967 New functions, to be called from ObjC++.
2968
77880ae4
KH
29692004-09-10 Kazu Hirata <kazu@cs.umass.edu>
2970
2971 * class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
2972 name-lookup.h, parser.c, search.c, semantics.c, typeck2.c: Fix
2973 comment typos.
2974
2e2da467
ZL
29752004-09-09 Ziemowit Laski <zlaski@apple.com>
2976
2977 * typeck.c (build_c_cast): Preserve the cast if casting
2978 to and from an Objective-C type.
2979
d063960a
ZL
29802004-09-09 Ziemowit Laski <zlaski@apple.com>
2981
2982 * Make-lang.in (cp/typeck.o): Depend on c-common.h.
2983 * typeck.c: Include c-common.h.
2984 (comptypes): For RECORD_TYPEs, call objc_comptypes() and
2985 return the result if nonnegative.
2986
15072eb1
ZW
29872004-09-09 Zack Weinberg <zack@codesourcery.com>
2988
2989 * decl2.c (import_export_class)
2990 * lex.c (handle_pragma_interface):
2991 Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.
2992
5f070bc7
ZL
29932004-09-08 Ziemowit Laski <zlaski@apple.com>
2994
2995 * Make-lang.in (cp/semantics.o): Depend on c-common.h.
2996 * semantics.c: Include c-common.h.
2997 (finish_compound_stmt): Call objc_clear_super_receiver().
2998
1835f9ef
ZL
29992004-09-08 Ziemowit Laski <zlaski@apple.com>
3000
3001 * cp-tree.h (do_poplevel): New prototype.
3002 * semantics.c (do_poplevel): Make externally visible.
3003
323e3709
NS
30042004-09-08 Nathan Sidwell <nathan@codesourcery.com>
3005
3006 * cp-tree.h (tree_pair_s): Define a GC'd vector.
3007 * name-lookup.h (cxx_saved_binding, cp_class_binding): Likewise.
3008 * semantics.c (deferred_access): Likewise.
3009
fa3ee801
DJ
30102004-09-06 Daniel Jacobowitz <dan@debian.org>
3011
3012 * semantics.c (expand_body): Assert that we are not nested.
3013
ff4eb0b5
ZW
30142004-09-06 Zack Weinberg <zack@codesourcery.com>
3015
3016 * decl.c (build_enumerator): Use add_double and int_fits_type_p
3017 instead of cp_build_binary_op, to avoid creating short-lived trees.
3018 * parser.c (cp_parse_type_specifier <RID_ENUM>): Use two-token
3019 lookahead instead of backtracking. Move some code to avoid a
3020 conditional branch.
3021 (cp_parser_enum_specifier): Avoid duplication of effort with caller.
3022 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
3023 (cp_parser_enumerator_list, cp_parser_enumerator_definition):
3024 Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
3025
eb1aef53
KL
30262004-09-04 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3027
3028 * decl.c (grok_declarator): Remove a redundant semicolon.
3029
3030 * parser.c (cp_parser_decl_specifier_seq, cp_parser_type_specifier):
3031 Correct comments describing function parameters.
3032
30332004-09-03 Matt Austern <austern@apple.com>
6983ea08
MA
3034 Compile speed improvement.
3035 * parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING set.
3036 Otherwise define a stub macro that expands to nothing.
3037 (cp_lexer_debugging_p): Only define if ENABLE_CHECKING set. Otherwise
3038 define a stub macro that expands to 0.
3039 (cp_lexer_start_debugging): Only define if ENABLE_CHECKING set.
3040 (cp_lexer_stop_debugging): Likewise.
3041 (cp_lexer_debug_stream): Only define if ENABLE_CHECKING set. Otherwise
3042 define a stub macro that expands to NULL.
3043 (cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set.
3044 (cp_lexer_new_from_tokens): Likewise.
ff4eb0b5 3045
37e6d6fe
JH
30462004-09-03 Jan Hubicka <jh@suse.cz>
3047
3048 * decl.c (finish_function): Clean out pointers we no longer need.
3049
61fec9ff
JB
30502004-09-03 Jan Beulich <jbeulich@novell.com>
3051
3052 * g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
3053 than "-lm".
3054
96f62957
PB
30552004-09-02 Paul Brook <paul@codesourcery.com>
3056
3057 * decl2.c (determine_visibility): Only check data visibility
3058 for VAR_DECLS.
3059
af287697
MM
30602004-08-31 Mark Mitchell <mark@codesourcery.com>
3061
505970fc
MM
3062 * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
3063 * class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
ff4eb0b5 3064 * decl2.c (determine_visibility): Honor
505970fc
MM
3065 TARGET_CXX_EXPORT_CLASS_DATA.
3066
96f62957 3067 * class.c (key_method): Rename to ...
af287697
MM
3068 (determine_key_method): ... this.
3069 (finish_struct_1): Adjust accordingly.
3070 * cp-tree.h (key_method): Declare.
3071 * decl2.c (maybe_emit_vtables): Determine the key method here if
3072 it has not already been done.
3073
11bb4b27
ZL
30742004-08-31 Ziemowit Laski <zlaski@apple.com>
3075
3076 * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o.
3077 (cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h.
3078 (cp/cp-decl.c): Do not depend on gtype-cp.h.
3079 (cp/cp-objcp-common.o): New target.
3080 * cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h.
3081 (cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size,
3082 cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move
3083 prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c,
3084 respectively.
3085 (LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH,
3086 LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS,
3087 LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
3088 LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT,
3089 LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET,
3090 LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR,
3091 LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE,
3092 LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION,
3093 LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE,
3094 LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
3095 LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
3096 LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION,
3097 LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS,
3098 LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
3099 LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
3100 LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
3101 LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
3102 LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
3103 LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
ff4eb0b5 3104 LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P,
11bb4b27
ZL
3105 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
3106 LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P,
3107 LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
3108 LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE,
3109 LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR,
3110 LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE,
3111 LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE,
3112 LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
3113 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR,
3114 LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE,
3115 LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move
3116 hooks to cp-objcp-common.h.
3117 (finish_file): New function.
3118 * cp-objcp-common.c: New file.
3119 * cp-objcp-common.h: New file.
3120 * cp-tree.h (cp_finish_file): New prototype.
3121 * decl.c: Do not include gtype-cp.h.
3122 * decl2.c (finish_file): Rename to cp_finish_file.
ff4eb0b5 3123
4bceb077
RH
31242004-08-31 Richard Henderson <rth@redhat.com>
3125
3126 PR c++/17221
3127 * pt.c (tsubst_expr): Move OFFSETOF_EXPR handling ...
3128 (tsubst_copy_and_build): ... here.
3129
19c29b2f
MM
31302004-08-30 Mark Mitchell <mark@codesourcery.com>
3131
3132 * cp-tree.h (initialize_artificial_var): Declare.
3133 * decl.c (initialize_artifical_var): New function.
3134 * class.c (initialize_array): Remove.
3135 (initialize_vtable): Use initialize_artificial_var.
3136 (build_vtt): Likewise.
3137 (build_ctor_vtbl_group): Likewise.
3138
442c8e31
RH
31392004-08-30 Richard Henderson <rth@redhat.com>
3140
3141 * class.c (build_base_path): Use build_address directly.
3142 * typeck.c (build_unary_op): Don't lower &a.b to pointer
3143 arithmetic directly.
3144 * typeck2.c (store_init_value): Don't assume !TREE_CONSTANT
3145 means !initializer_constant_valid_p.
3146
88f19756
RH
31472004-08-30 Richard Henderson <rth@redhat.com>
3148
3149 * class.c (fixed_type_or_null): Use get_base_address before
3150 assuming an ADDR_EXPR is non-null.
3151
315fb5db
NS
31522004-08-30 Nathan Sidwell <nathan@codesourcery.com>
3153
3154 * name-lookup.c (pop_binding, pushdecl,
3155 set_identifier_type_value_with_scope, push_overloaded_decl,
3156 arg_assoc_type): Replace abort with gcc_assert or gcc_unreachable.
3157 * parser.c (cp_parser_diagnose_invalid_type_name,
3158 cp_parser_postfix_expression, cp_parser_unary_expression,
3159 cp_parser_check_declarator_template_para): Likewise.
3160 * pt.c (push_inline_template_parms_recursive,
3161 check_explicit_specialization, convert_nontype_argument,
3162 coerce_template_template_parms, uses_template_parms,
3163 instantiate_class_template, tsubst_decl, tsubst, tsubst_copy,
3164 tsubst_expr, instantiate_template,
3165 maybe_adjust_types_for_deduction, type_unification_real,
3166 resolve_overloaded_unification, template_decl_level,
3167 type_dependent_expression_p): Likewise.
3168 * search.c (lookup_base_r): Likewise.
3169 * semantics.c (finish_stmt_expr, simplify_aggr_init_expr): Likewise.
3170 * tree.c (lvalue_p_1, count_functions, cxx_printable_name,
3171 verify_stmt_tree_r, get_type_decl, stabilize_call): Likewise.
3172 * typeck.c (common_type, get_member_function_from_ptrfunc,
3173 build_binary_op, build_unary_op, expand_ptrmemfunc_cst): Likewise.
3174 * typeck2.c (cxx_incomplete_type_diagnostic,
3175 split_nonconstant_init_1, store_init_value,
3176 process_init_constructor): Likewise.
3177
8dc2b103
NS
31782004-08-30 Nathan Sidwell <nathan@codesourcery.com>
3179
3180 * call.c (check_dtor_name): Replace abort with gcc_assert or
3181 gcc_unreachable.
3182 (build_call, add_builtin_candidate, build_new_op,
3183 convert_like_real, build_over_call, in_charge_arg_for_name,
3184 source_type, joust): Likewise.
3185 * class.c (build_simple_base_path, get_vcall_index,
3186 finish_struct_1, instantiate_type, get_enclosing_class,
3187 add_vcall_offset_vtbl_entries_1, cp_fold_obj_type_ref): Likewise.
3188 * cp-gimplify.c (cp_genericize): Likewise.
3189 * cp-lang.c (cp_expr_size, cp_tree_size): Likewise.
3190 * cvt.c (cp_convert_to_pointer, ocp_convert): Likewise.
3191 * decl.c (poplevel, make_unbound_class_template, reshape_init,
3192 check_special_function_return_type, grokdeclarator,
3193 grok_op_properties, tag_name, xref_tag, start_preparsed_function,
3194 finish_function): Likewise.
3195 * decl2.c (grokfield, maybe_emit_vtables):Likewise.
3196 * error.c (dump_global_iord, dump_decl, dump_template_decl,
3197 language_to_string): Likewise.
3198 * except.c (choose_personality_routine): Likewise.
3199 * friend.c (do_friend): Likewise.
3200 * g++spec.c (lang_specific_driver): Likewise.
3201 * init.c (build_zero_init, expand_default_init, build_new_1,
3202 build_vec_delete_1, build_vec_init, build_dtor_call): Likewise.
3203 * lex.c (retrofit_lang_decl, cp_type_qual_from_rid): Likewise.
3204 * mangle.c (add_substitution, write_unscoped_name,
3205 write_template_prefix, write_identifier,
3206 write_special_name_destructor, write_type, write_builtin_type,
3207 write_expression, write_template_param,
3208 write_java_integer_type_codes): Likewise.
3209 * method.c (implicitly_declare_fn): Likewise.
3210
4094f4d2
NS
32112004-08-30 Nathan Sidwell <nathan@codesourcery.com>
3212
fc6633e0
NS
3213 * cp-tree.h (BINFO_PRIMARY_P): Use a binfo flag.
3214 (BINFO_INDIRECT_PRIMARY_P): Remove.
3215 * class.c (determine_primary_base): Rename to ...
3216 (determine_primary_bases): ... here. Set all primary bases.
3217 (set_primary_base): Remove.
3218 (mark_primary_bases): Remove.
3219 (build_simple_base_path, walk_subobject_offsets,
3220 propagate_binfo_offsets, end_of_class): Adjust.
3221 (layout_class_type): Rename determine_primary_base call.
3222 (dump_class_hierarchy_r, dump_vtable): Adjust. Don't pass a binfo
3223 to type_as_string.
3224 (dfs_build_secondary_vptr_vtt_inits, dfs_accumulate_vtbl_inits,
3225 build_rtti_vtbl_entries): Adjust.
3226 * init.c (build_vtbl_address): Adjust.
3227
4094f4d2
NS
3228 * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert.
3229
e5a002e3
ZL
32302004-08-28 Ziemowit Laski <zlaski@apple.com>
3231
3232 * Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and
3233 CXX_AND_OBJCXX_OBJS.
3234 (CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing
3235 separately on the link line.
3236
b40a3a7b
JM
32372004-08-28 Jason Merrill <jason@redhat.com>
3238
3239 * decl.c (expand_static_init): Avoid bogus warnings.
3240
40aac948
JM
32412004-08-27 Jason Merrill <jason@redhat.com>
3242
bcac21a0
JM
3243 PR c++/16851
3244 * tree.c (stabilize_init): See through a COMPOUND_EXPR.
3245
40aac948
JM
3246 PR c++/13684
3247 * decl.c (expand_static_init): Use thread-safety API.
3248 (register_dtor_fn): Return the call, don't expand it.
3249 * tree.c (add_stmt_to_compound): New fn.
3250 (stabilize_call): Use it.
3251
42c244d8
RH
32522004-08-27 Richard Henderson <rth@redhat.com>
3253
3254 * cp-tree.def (OFFSETOF_EXPR): New.
3255 * parser.c (cp_parser_builtin_offsetof): Either built an
3256 OFFSETOF_EXPR, or call fold_offsetof immediately.
3257 * pt.c (tsubst_expr): Handle OFFSETOF_EXPR.
3258
50bc768d
NS
32592004-08-27 Nathan Sidwell <nathan@codesourcery.com>
3260
3261 * call.c (validate_conversion_obstack): Replace
3262 my_friendly_assert with gcc_assert or gcc_unreachable.
3263 (direct_reference_binding, merge_conversion_sequences,
3264 build_user_type_conversion_1, perform_overload_resolution,
3265 build_op_delete_call, enforce_access, call_builtin_trap,
3266 build_over_call, build_special_member_call, build_new_method_call,
3267 initialize_reference): Likewise.
3268 * class.c (build_base_path, build_primary_vtable, alter_access,
3269 check_bases, update_vtable_entry_for_fn, layout_empty_base,
3270 clone_function_decl, adjust_clone_args,
3271 type_requires_array_cookie, include_empty_classes,
3272 finish_struct_1, resolve_address_of_overloaded_function,
3273 instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
3274 dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
3275 accumulate_vtbl_inits, build_vtbl_initializer,
3276 build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
3277 * cvt.c (build_up_reference, convert_to_reference): Likewise.
3278 * decl.c (poplevel, duplicate_decls, make_typename_type,
3279 cxx_init_decl_processing, reshape_init, check_initializer,
3280 make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
3281 expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
3282 grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
3283 xref_basetypes, start_preparsed_function, save_function_data,
3284 finish_function, finish_method, maybe_register_incomplete_var,
3285 complete_vars): Likewise.
3286 * decl2.c (grok_array_decl, check_member_template,
3287 check_classfn, finish_static_data_member_decl, coerce_new_type,
3288 coerce_delete_type, import_export_class, decl_needed_p,
3289 determine_visibility, import_export_decl, build_cleanup,
3290 start_static_initialization_or_destructi, do_static_destruction,
3291 prune_vars_needing_no_initialization,
3292 build_offset_ref_call_from_tree): Likewise.
3293 * error.c (dump_decl, dump_expr): Likewise.
3294 * init.c (finish_init_stmts, build_zero_init,
3295 expand_virtual_init, expand_default_init, expand_aggr_init_1,
3296 build_offset_ref, build_new_1, build_delete, build_vbase_delete):
3297 Likewise.
3298 * mangle.c (write_method_parms, write_template_args,
3299 write_expression, write_template_arg): Likewise.
3300 * method.c (make_thunk, finish_thunk, use_thunk): Likewise.
3301 * name-lookup.c (pop_binding, begin_scope, leave_scope,
3302 resume_scope, push_using_decl, validate_nonmember_using_decl,
3303 is_ancestor, poplevel_class, set_inherited_value_binding_p,
3304 push_class_level_binding, do_class_using_decl, push_namespace,
3305 pop_namespace, add_using_namespace, ambiguous_decl,
3306 lookup_namespace_name, lookup_type_current_level,
3307 maybe_process_template_type_declaration): Likewise.
3308 * parser.c (cp_lexer_peek_nth_token,
3309 cp_parser_parse_and_diagnose_invalid_typ,
3310 cp_parser_translation_unit, cp_parser_template_id,
3311 cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
3312 * pt.c (push_access_scope, finish_member_template_decl,
3313 push_inline_template_parms_recursive, add_outermost_template_args,
3314 get_innermost_template_args, begin_explicit_instantiation,
3315 end_explicit_instantiation, retrieve_specialization,
3316 is_specialization_of, is_specialization_of_friend,
3317 register_specialization, check_explicit_specialization,
3318 comp_template_parms, process_template_parm,
3319 process_partial_specialization, convert_nontype_argument,
3320 coerce_template_template_parms, coerce_template_parms,
3321 mangle_class_name_for_template, lookup_template_function,
3322 lookup_template_class, instantiate_class_template, tsubst_decl,
3323 tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
3324 instantiate_template, fn_type_unification, type_unification_real,
3325 get_template_base, regenerate_decl_from_template,
3326 template_for_substitution, instantiate_decl,
3327 get_mostly_instantiated_function_type, dependent_scope_ref_p,
3328 value_dependent_expression_p, resolve_typename_type): Likewise.
3329 * repo.c (repo_emit_p): Likewise.
3330 * rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
3331 create_tinfo_types, emit_tinfo_decl): Likewise.
3332 * search.c (lookup_base_r, lookup_base, lookup_field_1,
3333 dfs_access_in_type, build_baselink, lookup_member,
3334 adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
3335 * semantics.c (perform_or_defer_access_check,
3336 finish_non_static_data_member, finish_stmt_expr_expr,
3337 finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
3338 finish_template_template_parm, finish_member_declaration,
3339 emit_associated_thunks): Likewise.
3340 * tree.c (build_target_expr_with_type, force_target_expr,
3341 copy_binfo, get_first_fn, cp_tree_equal): Likewise.
3342 * typeck.c (type_after_usual_arithmetic_conversions, comptypes,
3343 cxx_sizeof_or_alignof_type, perform_integral_promotions,
3344 build_class_member_access_expr, finish_class_member_access_expr,
3345 build_ptrmemfunc_access_expr, build_unary_op,
3346 unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
3347 build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
3348 * typeck2.c (complete_type_check_abstract,
3349 abstract_virtuals_error, process_init_constructor,
3350 add_exception_specifier): Likewise.
3351
ce552f75
NS
33522004-08-27 Nathan Sidwell <nathan@codesourcery.com>
3353
3354 * class.c (build_vtbl_initializer): Use ssize_int.
3355 * decl.c (complete_array_type): Likewise.
3356 * method.c (finish_thunk): Likewise.
3357 * search.c (get_dynamic_base_type): Likewise.
3358
642124c6
RH
33592004-08-26 Richard Henderson <rth@redhat.com>
3360
3361 * cp-tree.h (DECL_FIELD_IS_BASE): New.
3362 * class.c (build_base_field): Set it.
3363 (build_simple_base_path): Use it.
3364 (fixed_type_or_null): Don't consider base fields definitive.
3365
d0c5c9b1
RS
33662004-08-25 Roger Sayle <roger@eyesopen.com>
3367
3368 PR middle-end/16693
3369 PR tree-optimization/16372
3370 * decl.c (finish_enum): Make the precision of the enumerated type
3371 the same width as the underlying integer type.
3372
2b8fe4a0
MM
33732004-08-25 Mark Mitchell <mark@codesourcery.com>
3374
6dc36fed
MM
3375 PR c++/17155
3376 * lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++
3377 functions.
3378
837869a5
MM
3379 * mangle.c (get_identifier_nocopy): Add cast.
3380
2b8fe4a0
MM
3381 * cp-tree.h (mangle_type): Remove.
3382 * mangle.c (globals): GTY it.
3383 (mangle_obstack): New variable.
3384 (name_obstack): Likewise.
3385 (name_base): Likewise.
3386 (write_char): Adjust accordingly.
3387 (write_chars): Likewise.
3388 (write_string): Likewise.
3389 (start_mangling): Initialize G.substitutions only one. Add
3390 ident_p parameter.
3391 (finish_mangling): Use VARRAY_CLEAR to reclaim
3392 storage in G.substitutions. Use obstack_finish.
3393 (init_mangle): Adjust for changes to variable names above.
3394 Initialize G.substitutions.
3395 (mangle_decl_string): Adjust call to start_mangling.
3396 (get_identifier_nocopy): New function.
3397 (mangle_decl): Use it.
3398 (mangle_type_string): Adjust call to start_mangling.
3399 (mangle_special_for_type): Likewise.
3400 (mangle_vtt_for_type): Likewise.
3401 (mangle_ctor_vtbl_for_type): Likewise.
3402 (mangle_thunk): Likewise.
3403 (mangle_guard_variable): Likewise.
3404 (mangle_ref_init_variable): Likewise.
3405
2649701f
KL
34062004-08-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3407
3408 PR c++/14428
3409 * pt.c (redeclare_class_template): Check the type of non-type and
3410 template template parameter.
3411
7d60be94
NS
34122004-08-25 Nathan Sidwell <nathan@codesourcery.com>
3413
7d60be94
NS
3414 * call.c (convert_class_to_reference): Adjust build_int_cst calls.
3415 (build_user_type_conversion_1, convert_like_real,
3416 build_java_interface_fn_ref, build_special_member_call): Likewise.
3417 * class.c (finish_struct_1, build_vtbl_initializer): Likewise.
3418 * cp-gimplify.c (cp_gimplify_expr): Likewise.
3419 * cvt.c (cp_convert_to_pointer): Likewise.
3420 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
3421 * decl2.c (start_static_initialization_or_destruction,
3422 generate_ctor_or_dtor_function): Likewise.
3423 * except.c (build_throw): Likewise.
3424 * mangle.c (write_integer_cst): Likewise.
3425 * method.c (finish_thunk): Likewise.
3426 * rtti.c (build_headof, get_tinfo_decl_dynamic,
3427 build_dynamic_cast_1, ptr_initializer, ptm_initializer,
3428 get_pseudo_ti_init): Likewise.
3429 * search.c (get_dynamic_cast_base_type): Likewise.
ff4eb0b5 3430
f8ca7e49
ZW
34312004-08-25 Zack Weinberg <zack@codesourcery.com>
3432
3433 * class.c, search.c: Remove references to DWARF_DEBUG.
3434
6154f4fd
AN
34352004-08-25 Adam Nemet <anemet@lnxw.com>
3436
3437 * repo.c (extract_string): Reset backquote after one character.
3438 (get_base_filename): Fix indentation.
98ddffc1 3439
8c1d6d62
NS
34402004-08-24 Nathan Sidwell <nathan@codesourcery.com>
3441
7d60be94 3442 * decl.c (cxx_init_decl_processing): Adjust
8c1d6d62
NS
3443 build_common_tree_nodes call.
3444
f8ad2d21
NS
34452004-08-24 Nathan Sidwell <nathan@codesourcery.com>
3446
3447 PR c++/16889
3448 * (is_subobject_of_p): Resurrect & optimize.
3449 (lookup_field_r): Use it.
3450
e59f7322
KL
34512004-08-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3452
3453 PR c++/16706
3454 * search.c (friend_accessible_p): Increment processing_template_decl
3455 when deal with TEMPLATE_DECL of SCOPE.
3456
c645999e
NS
34572004-08-24 Nathan Sidwell <nathan@codesourcery.com>
3458
3459 PR c++/17149
3460 * semantics.c (check_accessibility_of_qualified_id): Defer check
3461 if qualifying_type is a template parameter.
3462
c2a124b2
MM
34632004-08-23 Mark Mitchell <mark@codesourcery.com>
3464
3465 PR c++/17163
3466 * pt.c (instantiate_decl): Do not try to apply
3467 DECL_DECLARED_INLINED_P to a VAR_DECL.
3468
3469 * search.c (build_baselink): Fix typo in comment.
3470
cbaa1b74
AP
34712004-08-22 Andrew Pinski <apinski@apple.com>
3472
3473 Revert:
3474 2004-08-22 Andrew Pinski <apinski@apple.com>
3475 PR c++/14029
c645999e 3476 * typeck.c (build_unary_op): Use &a.b if the folded lowered
cbaa1b74
AP
3477 expression is not constant.
3478
8dd16ecc
NS
34792004-08-23 Nathan Sidwell <nathan@codesourcery.com>
3480
3481 * name-lookup.c (pushdecl): Rename build_type_copy call.
3482 * tree.c (cp_build_qualified_type_real,
3483 build_exception_variant, handle_java_interface_attribute): Likewise.
3484
9fc3b39a
AP
34852004-08-22 Andrew Pinski <apinski@apple.com>
3486
3487 PR c++/14029
c645999e 3488 * typeck.c (build_unary_op): Use &a.b if the folded lowered
9fc3b39a
AP
3489 expression is not constant.
3490
eba6cfb6
MM
34912004-08-20 Mark Mitchell <mark@codesourcery.com>
3492
3493 PR c++/17121
3494 * decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P.
3495
bcf9a914
JM
34962004-08-21 Joseph S. Myers <jsm@polyomino.org.uk>
3497
3498 PR c++/17120
3499 * pt.c (tsubst_copy_and_build): Avoid clearing TREE_NO_WARNING for
3500 MODOP_EXPR.
3501
6f4234e9
KL
35022004-08-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3503
3504 * pt.c (register_specialization): Check DECL_TEMPLATE_SPECIALIZATION
3505 before calling comp_template_args.
3506
3224bead
NS
35072004-08-20 Nathan Sidwell <nathan@codesourcery.com>
3508
3509 * class.c (build_vtbl_initializer): Use build_int_cst for
3510 negative size types.
3511 * decl.c (complete_array_type): Likewise.
3512 * method.c (finish_thunk): Likewise.
3513
401d6e7b
AT
35142004-08-20 Andreas Tobler <a.tobler@schweiz.ch>
3515
3516 * tree.c: Remove unused mark_local_for_remap_r.
3517
19114537
EC
35182004-08-19 Eric Christopher <echristo@redhat.com>
3519
3520 * cp-tree.h (cxx_unsave_expr_now): Delete prototype.
3521 * tree.c (cxx_unsave_expr_now): Delete.
3522 (cp_unsave_r): Ditto.
3523
717a7d5d
MM
35242004-08-19 Mark Mitchell <mark@codesourcery.com>
3525
3526 PR c++/15890
3527 * pt.c (push_template_decl_real): Disallow template allocation
3528 functions with fewer than two parameters.
3529
50652ae9
NS
35302004-08-19 Nathan Sidwell <nathan@codesourcery.com>
3531
3532 * cp-tree.h (build_shared_int_cst): Remove.
3533 * tree.c (shared_int_cache): Remove.
3534 (build_shared_int_cst): Remove.
3535 * class.c (finish_struct_1): Use build_int_cst.
3536
89b0433e
NS
35372004-08-19 Nathan Sidwell <nathan@codesourcery.com>
3538
3539 * decl.c (finish_enum): Do not copy value node early, copy
3540 later.
3541 * lex.c (cxx_init): Force null_node to be unique.
19114537 3542
e4c2c34b
JM
35432004-08-19 Joseph S. Myers <jsm@polyomino.org.uk>
3544
3545 PR c++/17041
3546 * pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING
3547 from input for MODOP_EXPR.
3548
acccf788
MM
35492004-08-18 Mark Mitchell <mark@codesourcery.com>
3550
27ab0504
MM
3551 * pt.c (dependent_template_p): Fix typo in commment.
3552
acccf788
MM
3553 PR c++/17068
3554 * pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as
3555 dependent.
3556
8f78f01f
MM
35572004-08-17 Mark Mitchell <mark@codesourcery.com>
3558
8baddbf1
MM
3559 PR c++/16246
3560 * pt.c (unify): Tidy ARRAY_TYPE handling. Make sure that non-type
3561 arguments have the same type as the corresponding parameter.
3562
b14454ba
MM
3563 PR c++/16215
3564 * parser.c (cp_parser_name_lookup_error): If parser->object_scope
3565 is set use it for diagnostic purposes.
3566 (cp_parser_pseudo_destructor_name): Remove special-case error
3567 message.
3568
1a10290c
MM
3569 PR c++/15871
3570 * semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions.
3571
8f78f01f
MM
3572 PR c++/16965
3573 * cp-tree.h (qualified_name_lookup_error): Add parameter.
3574 * name-lookup.c (do_class_using_decl): Restrict set of entities
3575 passed to cp_emit_debug_info_for_using more carefully.
3576 (lookup_qualified_name): Allow lookup_member to return sets of
3577 ambiguous entries.
3578 * parser.c (cp_parser_lookup_name): Add ambiguous_p parameter.
3579 (cp_parser_primary_expression): Handle ambiguous lookups.
3580 (cp_parser_template_name): Adjust use of cp_parser_lookup_name.
3581 (cp_parser_template_argument): Likewise.
3582 (cp_parser_elaborate_type_specifier): Likewise.
3583 (cp_parser_namespace_name): Likewise.
3584 (cp_parser_class_name): Likewise.
3585 (cp_parser_lookup_name_simple): Likewise.
3586 * pt.c (tsubst_qualified_id): Handle ambiguous results.
3587 (tsubst_expr): Likewise.
3588 * semantics.c (qualified_name_lookup_error): Add decl paramter.
3589 For ambiguous lookups, print candidates.
3590
35046a54
KL
35912004-08-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3592
3593 PR c++/6749
3594 * pt.c (instantiate_pending_templates): Add int parameter. Don't
3595 return anything.
3596 * cp-tree.h (instantiate_pending_templates): Adjust prototype.
3597 * decl2.c (finish_file): Adjust call to
3598 instantiate_pending_templates.
3599
f293ce4b
RS
36002004-08-15 Roger Sayle <roger@eyesopen.com>
3601
3602 * call.c (build_vfield_ref, build_call, build_conditional_expr,
3603 convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
3604 build_java_interface_fn_ref, build_special_member_call,
3605 build_new_method_call, initialize_reference): Replace calls to
3606 build with calls to buildN.
3607 * class.c (build_base_path, convert_to_base_statically,
3608 build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
3609 build_vtbl_initializer): Likewise.
3610 * cp-gimplify.c (genericize_try_block, genericize_catch_block,
3611 gimplify_if_stmt, cp_genericize_r): Likewise.
3612 * cvt.c (convert_to_void): Likewise.
3613 * decl.c (check_initializer, finish_constructor_body,
3614 finish_destructor_body): Likewise.
3615 * error.c (dump_expr): Likewise.
3616 * except.c (build_exc_ptr, expand_start_catch_block, build_throw):
3617 Likewise.
3618 * init.c (perform_member_init, expand_virtual_init,
3619 expand_cleanup_for_base, build_init, expand_default_init,
3620 build_offset_ref, decl_constant_value, build_new, build_new_1,
3621 build_vec_delete_1, build_vec_init, build_delete,
3622 push_base_cleanups, build_vec_delete): Likewise.
3623 * mangle.c (write_integer_cst): Likewise.
3624 * method.c (thunk_adjust, do_build_copy_constructor,
3625 do_build_assign_ref): Likewise.
3626 * pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
3627 unify, build_non_dependent_expr): Likewise.
3628 * rtti.c (build_headof, build_typeid, ifnonnull,
3629 build_dyanmic_cast_1, tinfo_base_init): Likewise.
3630 * semantics.c (begin_compound_stmt, finish_call_expr,
3631 finish_pseudo_destructor_expr, finish_id_expression,
3632 simplify_aggr_init_expr, finalize_nrv_r): Likewise.
3633 * tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
3634 array_type_nelts_total, stabilize_call): Likewise.
3635 * typeck.c (decay_conversion, build_class_member_access_expr,
3636 lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
3637 get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
3638 build_x_unary_op, build_unary_op, unary_complex_lvalue,
3639 build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
3640 check_return_expr): Likewise.
3641 * typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
3642 split_nonconstant_init, store_init_value, build_m_component_ref):
3643 Likewise.
3644
4a90aeeb
NS
36452004-08-15 Nathan Sidwell <nathan@codesourcery.com>
3646
3647 * call.c (convert_class_to_reference,
3648 build_user_type_conversion_1, convert_like_real,
3649 build_java_interface_fn_ref, build_special_member_call): Use
3650 build_int_cst.
3651 * class.c (build_vtbl_initializer): Likewise.
3652 * cp-gimplify.c (cp_gimplify_expr): Likewise.
3653 * cvt.c (cp_convert_to_pointer): Likewise.
3654 * decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
3655 * decl2.c (start_static_initialization_or_destruction,
3656 generate_ctor_or_dtor_function): Likewise.
3657 * except.c (build_throw): Likewise.
3658 * lex.c (cxx_init): Likewise.
3659 * mangle.c (write_integer_cst): Likewise.
3660 * rtti.c (build_headof, get_tinfo_decl_dynamic,
3661 build_dynamic_cast_1, ptr_initializer, ptm_initializer,
3662 get_pseudo_ti_init): Likewise.
3663 * search.c (get_dynamic_cast_base_type): Likewise.
3664 * tree.c (build_shared_int_cst): Likewise.
3665
f7a8132a
MM
36662004-08-12 Mark Mitchell <mark@codesourcery.com>
3667
3668 PR c++/16273
3669 * class.c (count_depth_data): New type.
3670 (dfs_depth_post): New function.
3671 (dfs_depth_q): Likewise.
3672 (find_final_overrider_data_s): Change type of vpath.
3673 Add vpath_list.
3674 (dfs_find_final_overrider_1): New function.
3675 (dfs_find_final_overrider): Use it.
3676 (dfs_find_final_overrider_q): Adjust use of vpath.
3677 (dfs_find_final_overrider_post): Likewise.
3678 (find_final_overrider): Use dfs_depth. Allocate and deallocate
3679 vpath_list.
3680
bf5930d4
JB
36812004-08-12 Jan Beulich <jbeulich@novell.com>
3682
3683 * parser.c (cp_parser_asm_definition): Properly consume scope operator
3684 tokens preceding the clobbers. Don't check for scope operator
3685 following inputs. Simplify inputs handling to match that now used for
3686 clobbers.
3687
539599c1
MM
36882004-08-11 Mark Mitchell <mark@codesourcery.com>
3689
fbac6f3c
MM
3690 PR c++/16698
3691 * except.c (build_throw): Allocate cleanup_type and the function
3692 for __cxa_throw separately.
3693
539599c1
MM
3694 PR c++/16853
3695 * call.c (standard_conversion): Do not accept conversions between
3696 pointers to members if the class types are unrelated.
3697
3698 PR c++/16618
3699 * parser.c (cp_parser_builtin_offsetof): Cast to "const volatile
3700 char &" instead of just "char &".
3701
3702 PR c++/16870
3703 * pt.c (tsubst): Just return the unknown_type_node.
3704
2436b51f
MM
37052004-08-11 Mark Mitchell <mark@codesourcery.com>
3706
3707 PR c++/16964
3708 * parser.c (cp_parser_class_specifier): Robustify.
3709
3710 PR c++/16904
3711 * pt.c (tsubst_copy_and_build): Complain about invalid
3712 qualification.
3713
3714 PR c++/16929
3715 * pt.c (tsubst_default_argument): Clear out current_class_ptr and
3716 current_class_ref while tsubsting.
19114537 3717
550205c3
MM
37182004-08-10 Mark Mitchell <mark@codesourcery.com>
3719
3720 PR c++/16971
3721 * parser.c (cp_parser_init_declarator): Robustify.
3722
eaac4679
RS
37232004-08-06 Richard Sandiford <rsandifo@redhat.com>
3724
3725 * typeck2.c (process_init_constructor): Guard the missing field warning
3726 with warn_missing_field_initializers rather than extra_warnings.
3727
caad9f81
PB
37282004-08-06 Paolo Bonzini <bonzini@gnu.org>
3729
3730 * class.c (instantiate_type) <ENTRY_VALUE_EXPR>: Do not handle.
3731
b2ca3702
MM
37322004-08-05 Mark Mitchell <mark@codesourcery.com>
3733
3734 * decl.c (start_preparsed_function): Move determine_visibility
3735 call.
3736 * decl2.c (determine_visibility): Incorporate dllexport testing.
3737
01e05466
GK
37382004-08-05 Geoffrey Keating <geoffk@apple.com>
3739
3740 * g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option
3741 means that libstdc++ is needed.
3742
ca7a3bd7
NS
37432004-08-05 Nathan Sidwell <nathan@codesourcery.com>
3744
3745 * cvt.c (cp_convert_to_pointer): Adjust force_fit_type call.
3746
0e6df31e
GK
37472004-08-04 Geoffrey Keating <geoffk@apple.com>
3748
3749 * decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
3750 than passing it as a parameter to rest_of_decl_compilation.
3751 * decl2.c (grokfield): Use set_user_assembler_name.
3752
26fad1af
NS
37532004-08-04 Nathan Sidwell <nathan@codesourcery.com>
3754
3755 * decl.c (complete_array_type): Don't gratuitously copy
3756 maxindex. Its type is always set.
3757
44d10c10
PB
37582004-08-04 Paul Brook <paul@codesourcery.com>
3759
3760 * Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H.
3761 * cp-tree.h (struct language_function): Rename x_dtor_label to
3762 x_cdtor_label.
3763 (dtor_label): Rename ...
3764 (cdtor_label): ... to this.
3765 * decl.c (begin_constructor_body): Remove.
3766 (check_special_function_return_type): Maybe change the return type.
3767 (grokdeclarator): Pass the class type.
3768 (start_preparsed_function): Constructors may need a return label.
3769 (finish_constructor_body, finish_destructor_body): Set the return
3770 value.
3771 (begin_function_body): Don't call begin_constructor_body.
3772 (finish_function): Don't warn for constructors or destructors.
3773 (implicitly_declare_fn): Maybe change the return type.
3774 * optimize.c: Include target.h.
3775 (maybe_clone_body): Remap the function result.
3776 * semantics.c: Include target.h.
3777 (finish_return_stmt): Maybe jump to return label for constructors.
3778
73a8adb6
MM
37792004-08-03 Mark Mitchell <mark@codesourcery.com>
3780
3781 * class.c (build_vtable): Do not set DECL_VISIBILITY here.
3782 (check_field_decls): Or here.
3783 (check_methods): Or here.
3784 (initialize_array): Don't mess with DECL_CONTEXT.
3785 * cp-tree.h (start_decl): Adjust prototype.
3786 (determine_visibility): New function.
3787 * decl.c (duplicate_decls): Remove checks for hidden "operator
3788 new".
3789 (build_library_fn_1): Give all library functions default
3790 visibility.
3791 (start_decl): Add pop_scope_p parameter. Tidy.
3792 (cp_finish_decl): Do not pop scopes here. Call
3793 determine_visibility for variable definitions.
3794 (start_preparsed_function): Call determine_visibility.
3795 * decl2.c (determine_visibility): New function.
3796 * method.c (use_thunk): Fix formatting.
3797 * parser.c (cp_parser_condition): Adjust calls to start_decl.
3798 (cp_parser_init_declarator): Likewise.
3799 * pt.c (instantiate_decl): Always call pop_nested_class.
3800 * rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY.
3801 (tinfo_base_init): Likewise.
3802
7756db03
MM
38032004-08-02 Mark Mitchell <mark@codesourcery.com>
3804
3805 PR c++/16707
3806 * name-lookup.c (validate_nonmember_using_decl): Robustify.
3807
c30b4add
MM
38082004-08-01 Mark Mitchell <mark@codesourcery.com>
3809
b1cc95ce
MM
3810 PR c++/16224
3811 * name-lookup.c (decl_namespace): Remove.
3812 (current_decl_namespace): Use decl_namespace_context instead of
3813 decl_namespace.
3814 (push_decl_namespace): Likewise.
3815 (arg_assoc_class): Likewise.
3816 (arg_assoc_type): Likewise.
3817 * pt.c (check_specialization_namespace): New function.
3818 (maybe_process_partial_specialization): Use it.
3819 (register_specialization): Likewise.
3820
72fba2df 3821 PR c++/16489
c30b4add
MM
3822 * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
3823 * call.c (null_ptr_cst_p): Handle variables with constant
3824 initializers.
3825 * pt.c (convert_nontype_argument): Use
3826 DECL_INTEGRAL_CONSTANT_VAR_P.
3827 * semantics.c (finish_id_expression): Likewise.
3828
72fba2df 3829 PR c++/16529
c30b4add
MM
3830 * decl.c (duplicate_decls): Reject duplicate namespace
3831 declarations.
3832
3833 PR c++/16810
3834 * typeck.c (build_ptrmemfunc): Loosen assertion.
3835
ea0ad329
GDR
38362004-08-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
3837
3838 * call.c (z_candidate::template_decl): Rename from template.
3839 (add_template_candidate_real): Adjust member reference.
3840 (joust): Likewise.
3841
4684cd27
MM
38422004-07-29 Mark Mitchell <mark@codesourcery.com>
3843
3844 * cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
3845 (lang_decl_flags): Narrow the width of "languages". Add
3846 repo_available_p.
3847 (DECL_NEEDED_P): Remove.
3848 (FOR_EACH_CLONE): New macro.
3849 (DECL_REPO_AVAILABLE_P): Likewise.
3850 (DECL_TINFO_P): Likewise.
3851 (set_linkage_according_to_type): Declare.
3852 (import_export_vtable): Remove.
3853 (import_export_tinfo): Likewise.
3854 (mark_needed): New function.
3855 (decl_needed_p): Likewise.
3856 (note_vauge_linkage_fn): Likewise.
3857 (init_repo): Change prototype.
3858 (repo_template_used): Remove.
3859 (repo_template_instantiated): Likewise.
3860 (repo_emit_p): New function.
3861 (repo_export_class_p): Likewise.
3862 (no_linkage_check): Change prototype.
3863 * class.c (set_linkage_according_to_type): New function.
3864 (build_vtable): Use it. Do not call import_export_vtable. Set
3865 DECL_IGNORED_P if appropriate.
3866 * decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
3867 (make_rtL_for_nonlocal_decls): Check for template instantiations
3868 explicitly.
3869 (grokfndecl): Adjust call to no_linkage_check.
3870 (set_linkage_for_static_data_member): New function.
3871 (grokvardecl): Use it. Adjust call to no_linkage_check.
3872 (grokdeclarator): Use set_linkage_for_static_data_member.
3873 * decl2.c (note_vague_linkage_fn): New function.
3874 (note_vague_linkage_var): Likewise.
3875 (finish_static_data_member_decl): Use it.
3876 (import_export_vtable): Remove.
3877 (import_export_class): Use repo_export_class_p.
3878 (var_finalized_p): Simplify.
3879 (maybe_emit_vtables): Simplify.
3880 (mark_needed): New function.
3881 (decl_needed_p): Likewise.
3882 (import_export_decl): Add documentation and consistency checks.
3883 Use repo_emit_p. Handle virtual tables and RTTI information
3884 here.
3885 (import_export_tinfo): Remove.
3886 (write_out_vars): Call import_export_decl.
3887 (cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
3888 whenever one is.
3889 (finish_file): Use decl_needed_p. Do not call import_export_decl
3890 for undefined static data members. Do not warn about undefined
3891 inlines when using a repository.
3892 (mark_used): Use note_vague_linkage_fn. Always defer template
3893 instantiations.
3894 * lex.c (cxx_init): Adjust call to init_repo. Always set
3895 flag_unit_at_a-time.
3896 * method.c (synthesize_method): Remove unncessary
3897 import_export_decl call.
3898 (implicitly_declare_fn): Use set_linkage_according_to_type.
3899 * optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
3900 * pt.c (instantiate_class_template): Don't redundantly add classes
3901 to keyed_classes. Don't call repo_template_used.
3902 (tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
3903 templates with internal linkage.
3904 (check_instantiated_args): Adjust call to no_linkage_check.
3905 (instantiate_template): Use FOR_EACH_CLONE.
3906 (mark_definable): New function.
3907 (mark_decl_instantiated): Use it.
3908 (do_decl_instantiation): Adjust tests for explicit instantiation
3909 after "extern template".
3910 (instantiate_class_member): Do not use repo_template_instantiated.
3911 (do_type_instantiation): Simplify.
3912 (instantiate_decl): Use mark_definable. Check repo_emit_p.
3913 Simplify.
3914 * repo.c (repo_get_id): Remove.
3915 (original_repo): Remove.
3916 (IDENTIFIER_REPO_USED): Remove.
3917 (IDENTIFIER_REPO_CHOSEN): Remove.
3918 Remove all #if 0'd code.
3919 (repo_template_used): Remove.
3920 (repo_template_instantiated): Remove.
3921 (temporary_obstack_initialized_p): New variable.
3922 (init_repo): Register with lang_post_pch_load. Avoid creating
3923 identifiers unnecessarily. Don't use original_repo. Close the
3924 file here.
3925 (reopen_repo_file_for_write): Not here.
3926 (finish_repo): Always write out a new repository file.
3927 (repo_emit_p): New function.
3928 (repo_export_class_p): Likewise.
3929 * rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
3930 (involves_incomplete_p): New function.
3931 (tinfo_base_init): Use it.
3932 (ptr_initializer): Remove non_public_ptr parameter.
3933 (ptm_initializer): Likewise.
3934 (get_pseudo_ti_init): Likewise.
3935 (unemitted_tinfo_decl_p): Remove.
3936 (emit_tinfo_decl): Use import_export_decl.
3937 * semantics.c (expand_body): Move updates of static_ctors and
3938 static_dtors to ...
3939 (expand_or_defer_fn): ... here.
3940 * tree.c (no_linkage_check): Add relaxed_p parameter.
19114537 3941
9f63daea
EC
39422004-07-28 Eric Christopher <echristo@redhat.com>
3943
3944 * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
3945
0871761b
NS
39462004-07-28 Nathan Sidwell <nathan@codesourcery.com>
3947
3948 * cp-tree.h (struct tree_pair_s): New.
3949 (typedef tree_pair_p): New.
3950 (DEF_VEC_O(tree_pair_s)): New.
3951 (struct lang_type_class): Make vcall_indices a VEC(tree_pair_s).
3952 (CLASSTYPE_VCALL_INDICES): Update documentation.
3953 * class.c (get_vcall_index): Adjust.
3954 (add_vcall_offset): Adjust.
3955
616adc47
KC
39562004-07-27 Kelley Cook <kcook@gcc.gnu.org>
3957
3958 * pt.c, typeck.c: Remove spurious carriage returns.
3959
00bdb87f
KL
39602004-07-27 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
3961
3962 PR c++/14429
3963 * pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check
3964 when the type of ARG is not dependent.
3965
4afd7f6c
GK
39662004-07-26 Geoffrey Keating <geoffk@apple.com>
3967
3968 * g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX.
3969 (lang_specific_driver): If the C++ or math library options don't
3970 start with '-l', don't count them as added libraries.
3971
63d1c7b3
NS
39722004-07-26 Nathan Sidwell <nathan@codesourcery.com>
3973
3974 * decl.c (xref_basetypes): Adjust base access vector creation.
3975 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
3976 access accesses.
3977 * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.
3978
70502b2c
GB
39792004-07-26 Niall Douglas <s_fsfeurope2@nedprod.com>
3980 Brian Ryner <bryner@brianryner.com>
3981
3982 PR c++/15000
3983 PR c++/9283
3984 * class.c (check_field_decls): Apply hidden visibility if
3985 -fvisibility-inlines-hidden and inlined unless otherwise specified
3986 (build_vtable): Set vtable visibility to class visibility.
3987 (check_field_decls): Default static member visibility to class
3988 visibility.
3989 (check_methods): Default method visibility to class visibility.
3990 * cp-tree.h: Added CLASSTYPE_VISIBILITY and
3991 CLASSTYPE_VISIBILITY_SPECIFIED macro.
3992 * decl.c (duplicate_decls): New logic for merging definition decls
3993 with declaration decls. Added ignore & warning when non default
3994 applied to global operator new or delete.
3995 * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
3996 wherever VISIBILITY was changed
3997 * rtti.c (get_tinfo_decl): Set typeinfo visibility to class
3998 visibility.
3999 (tinfo_base_init): Set typeinfo name visibility to class visibility.
d7afec4b 4000
eab03d5a
BI
40012004-07-25 Bernardo Innocenti <bernie@develer.com>
4002
4003 * decl.c: Rename all identifiers named `class' to `cl'.
4004 * cp-tree.h: Likewise.
4005
99dd239f
GDR
40062004-07-25 Gabriel Dos Reis <gdr@integrable-solutions.net>
4007
4008 * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW.
4009 * typeck2.c (abstract_virtuals_error): Use GGC_NEW.
4010 * name-lookup.c (binding_entry_make): Use GGC_NEW.
4011 (binding_table_construct): Use GGC_CNEWVEC.
4012 (binding_table_new): Use GGC_NEW.
4013 (cxx_binding_make): Likewise.
4014 (begin_scope): Likewise.
4015 (push_to_top_level): Use GCC_CNEW.
4016 * parser.c (cp_token_cache_new): Likewise.
4017 (cp_token_cache_push_token): Likewise.
4018 (cp_lexer_new_main): Likewise.
4019 (cp_lexer_new_from_tokens): Likewise.
4020 (cp_parser_context_new): Likewise.
4021 (cp_parser_new): Likewise.
4022 (cp_lexer_new_from_tokens): Use GGC_NEWVEC.
4023 * lex.c (cxx_make_type): Use GGC_CNEW.
4024 (retrofit_lang_decl): Use GGC_NEWVAR.
4025 (cxx_dup_lang_specific_decl): Likewise.
4026 (copy_lang_type): Likewise.
4027 * decl.c (use_label): Use GGC_NEW instead of ggc_alloc.
4028 (save_function_data): Likewise.
4029 (lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared.
4030 (cxx_push_function_context): Likewise.
4031
b785f485
RH
40322004-07-25 Richard Henderson <rth@redhat.com>
4033
4034 * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
4035 DECL_IGNORED_P on RESULT_DECL.
4036 * semantics.c (finalize_nrv): Copy them too.
4037
8f2a734f
NS
40382004-07-23 Nathan Sidwell <nathan@codesourcery.com>
4039
4040 * search.c (lookup_conversion_operator): Avoid two loops.
4041 (add_conversions): Remove.
4042 (check_hidden_convs, split_conversions,
4043 lookup_conversions_r): New.
4044 (lookup_conversions): Use lookup_conversions_r.
4045
42611590
NS
40462004-07-22 Nathan Sidwell <nathan@codesourcery.com>
4047
4048 * pt.c (get_template_base): Check type is completable.
4049
caf93cb0
EC
40502004-07-21 Eric Christopher <echristo@redhat.com>
4051
4052 * decl.c (poplevel): Inline unused variable checking.
4053 Change formatting.
4054
3a021db2
PB
40552004-07-21 Paolo Bonzini <bonzini@gnu.org>
4056
4057 * typeck.c (build_binary_op): Do not use RDIV_EXPR for
4058 integer vectors.
4059
f03adc6b
GB
40602004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4061
4062 PR c++/14497
4063 * pt.c (check_explicit_specialization): Remove extension to accept
4064 specializations without template headers. Fall-through to normal
4065 processing.
4066
5fe7b654
GB
40672004-07-21 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4068
4069 PR c++/509
4070 * pt.c (determine_specialization): New parameter template_count.
4071 Disambiguate between member templates and member functions counting
4072 the template headers.
4073 (check_explicit_specialization): Update caller.
4074 (tsubst_friend_function): Likewise.
4075
406d77a4
SB
40762004-07-20 Steven Bosscher <stevenb@suse.de>
4077
4078 * cp-tree.def (TINST_LEVEL): Make it an 'x' node.
4079 * cp-tree.h (tinst_level_t): New tree type.
4080 (union lang_tree_node): Handle it.
4081 (TINST_LOCATION): New accessor macro.
4082 (make_tinst_level): New prototype.
4083 * cp-lang.c (cp_tree_size): Handle TINST_LEVEL.
4084 * decl.c (cp_tree_node_structure): Likewise.
4085 * error.c (print_instantiation_full_context): Use TINST_LOCATION.
4086 (print_instantiation_partial_context): Likewise.
4087 * pt.c (pop_tinst_level): Likewise.
4088 (push_tinst_level): Use make_tinst_level.
4089 * tree.c (make_tinst_level): New function.
4090 (cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node.
4091
f68e4dc8
MM
40922004-07-20 Mark Mitchell <mark@codesourcery.com>
4093
da740453
MM
4094 * parser.c (cp_parser_simple_type_specifier): Fix typo.
4095
f68e4dc8
MM
4096 PR c++/16637
4097 * parser.c (cp_parser_simple_type_specifier): Do not record usage
4098 of globally-qualified names.
4099
e9f7dd36
KL
41002004-07-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4101
4102 PR c++/16175
4103 * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
4104 cv qualifier.
4105
fb232476
MM
41062004-07-19 Mark Mitchell <mark@codesourcery.com>
4107
4108 PR c++/16623
4109 * cp-tree.h (lang_type_class): Add lazy_assignment_op.
4110 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
4111 * class.c (add_implicitly_declared_members): Use
4112 CLASSTYPE_LAZY_ASSIGNMENT_OP.
4113 * method.c (lazily_declare_fn): Clear
4114 CLASSTYPE_LAZY_ASSIGNMENT_OP.
4115 * search.c (lookup_fnfields_1): Check it.
4116
bcb1079e
NS
41172004-07-20 Nathan Sidwell <nathan@codesourcery.com>
4118
b396053c
NS
4119 * cp-tree.h (vec_binfo_member): Remove.
4120 * tree.c (vec_binfo_member): Remove.
4121
bcb1079e
NS
4122 * cp-tree.h (struct lang_type_class): Remove vfields field.
4123 (CLASSTYPE_VFIELDS): Remove.
4124 (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
4125 * class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS
4126 handling.
4127 (dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P.
4128 (finish_struct_1): Remove CLASSTYPE_VFIELDS handling.
4129 * init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P.
4130
fa743e8c
NS
41312004-07-20 Nathan Sidwell <nathan@codesourcery.com>
4132
4133 * cp-tree.h (DEF_VEC_P(tree)): Remove here.
4134 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
4135 Moved to common.
4136 (BINFO_LANG_SLOTS): Remove.
4137 * tree.c (copy_binfo): Adjust BINFO creation and accessors.
4138 * decl.c (xref_basetypes): Adjust BINFO creation and accessors.
4139 * class.c (check_bases): Adjust BINFO accessors.
4140 (determine_primary_base, finish_struct_bits,
4141 maybe_warn_about_overly_private_class, warn_hidden,
4142 walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
4143 warn_about_ambiguous_bases, get_vfield_name,
4144 dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
4145 add_vcall_offset_vtbl_entries_r): Likewise.
4146 * dump.c (cp_dump_tree): Likewise.
4147 * init.c (sort_mem_initializers, expand_member_init, build_delete,
4148 push_base_cleanups): Likewise.
4149 * method.c (do_build_copy_constructor, do_build_assign_ref,
4150 synthesize_exception_spec): Likewise.
4151 name-lookup.c (arg_assoc_class): Likewise.
4152 * pt.c (instantiate_class_template,
4153 get_template_base_recursive): Likewise.
4154 * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
4155 * typeck2.c (process_init_constructor): Likewise.
4156 * search.c (lookup_base_r, dynamic_cast_base_recurse,
4157 dfs_access_in_type, dfs_walk_real, look_for_overrides,
4158 types_overlap_p, copied_binfo, original_binfo): Likewise.
4159 (binfo_for_vtable): Remove
4160
a6c0a76c
SB
41612004-07-20 Steven Bosscher <stevenb@suse.de>
4162
4163 * cp-tree.h (struct lang_decl_flags): Unify the template_info and
4164 thunk_alias, and the access and virtual_offset fields.
4165 (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
4166 * decl.c (finish_case_label): Update c_add_case_node call.
4167
31aedc36
MM
41682004-07-19 Mark Mitchell <mark@codesourcery.com>
4169
4170 Revert patch for PR c++/16623.
caf93cb0 4171
e05de6f2
KC
41722004-07-19 Kelley Cook <kcook@gcc.gnu.org>
4173
4174 * except.c: Remove two spurious carriage returns.
4175
43fa0f09
MM
41762004-07-19 Mark Mitchell <mark@codesourcery.com>
4177
4178 PR c++/16623
4179 * cp-tree.h (lang_type_class): Add lazy_assignment_op.
4180 (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
4181 * class.c (add_implicitly_declared_members): Use
4182 CLASSTYPE_LAZY_ASSIGNMENT_OP.
4183 * method.c (lazily_declare_fn): Clear
4184 CLASSTYPE_LAZY_ASSIGNMENT_OP.
4185 * search.c (lookup_fnfields_1): Check it.
4186
9ba5ff0f
NS
41872004-07-19 Nathan Sidwell <nathan@codesourcery.com>
4188
4189 * class.c (add_method): Delay adding the slot until the end.
4190 (determine_primary_base): Adjust VEC_iterate invokation.
4191 (resort_type_method_vec, finish_struct_methods, warn_hidden,
4192 walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases,
4193 build_vtbl_initializer): Likewise.
4194 * init.c (sort_mem_initializers, build_delete, push_base_cleanups,
4195 build_vbase_delete): Likewise.
4196 * method.c (do_build_copy_constructor): Likewise.
4197 * name-lookup.c (new_class_binding, print_binding_level,
4198 poplevel_class, store_class_bindings, push_to_top_level,
4199 pop_from_top_level): Likewise.
4200 * pt.c (check_explicit_specialization): Likewise.
4201 * search.c (lookup_conversion_operator, lookup_fnfields_1,
4202 get_pure_virtuals, add_conversions, dfs_check_overlap,
4203 binfo_for_vbase): Likewise.
4204
6df91b00
KL
42052004-07-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4206
4207 PR c++/12170
4208 * pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only
4209 innermost set of template arguments during deduction. Simplify.
4210
487a92fe
JM
42112004-07-19 Joseph S. Myers <jsm@polyomino.org.uk>
4212
4213 * typeck.c (build_modify_expr, build_x_modify_expr): Set
4214 TREE_NO_WARNING on assignments with an operator other than '='.
4215
31ec7d2f
SB
42162004-07-10 Steven Bosscher <stevenb@suse.de>
4217 Joseph S. Myers <jsm@polyomino.org.uk>
4218
4219 * cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove.
4220 * decl2.c (grokfield): Don't check current_class_depth via
4221 unused TREE_COMPLEXITY.
4222 * semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING
4223 to avoid the missing parentheses warning.
4224 Don't set C_SET_EXP_ORIGINAL_CODE.
4225
383c9d5d
MM
42262004-07-18 Mark Mitchell <mark@codesourcery.com>
4227
caf43ca4
MM
4228 * tree.c (no_linkage_helper): Remove.
4229 (no_linkage_check): Don't use walk_tree_without_duplicates.
4230
383c9d5d
MM
4231 * mangle.c (write_expression): Issue a sorry for zero-operand
4232 functional casts.
4233
3601f003
KL
42342004-07-18 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
4235
4236 PR c++/13092
4237 * init.c (build_offset_ref): Build SCOPE_REF with non-null
4238 TREE_TYPE for non-dependent names.
4239 * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
4240 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
4241 unknown_type_node as its TREE_TYPE.
4242 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
4243 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
4244 (dump_expr) <SCOPE_REF case>: Likewise.
4245
d8472c75
JM
42462004-07-17 Jason Merrill <jason@redhat.com>
4247
4248 PR c++/16115
4249 * call.c (type_passed_as): Make the invisible reference type
4250 __restrict.
4251 * cp-gimplify.c (gimplify_cleanup_stmt): Rename to
4252 cp_genericize_r. Handle invisible reference lowering.
4253 (is_invisiref_parm): New fn.
4254 (cp_genericize): Adjust the types of invisible reference parms.
4255 Don't repeat the walk for clones.
4256 * decl.c (store_parm_decls): Don't generate any code for clones.
4257
6e34d3a3
JM
42582004-07-17 Joseph S. Myers <jsm@polyomino.org.uk>
4259
4260 * cp-tree.h (builtin_function): Declare.
4261
508a1c9c
MM
42622004-07-16 Mark Mitchell <mark@codesourcery.com>
4263
4264 * class.c (finish_struct_methods): Remove unncessary code.
4265 (add_implicitly_declared_members): Create declarations for default
4266 constructors and copy constructors lazily.
4267 * cp-tree.h (lang_type_class): Remove lazy_default_ctor and
4268 lazy_copy_ctor.
4269 (CLASSTYPE_LAZY_DEFAULT_CTOR): New macro.
4270 (CLASSTYPE_LAZY_COPY_CTOR): Likewise.
4271 * decl2.c (check_classfn): Robustify.
4272 (locate_dtor): Handle empty CLASSTYPE_METHOD_VEC.
4273 (locate_ctor): Handle lazy default constructors.
4274 (locate_copy): Handle lazy copy constructors.
4275 (implicitly_declare_fn): Make sure we're looking at the
4276 TYPE_MAIN_VARIANT for a class before creating functions. Don't
4277 set TYPE_HAS_CONSTRUCTOR.
4278 (lazily_declare_fn): New function.
4279 * name-lookup.c (constructor_name_full): Simplify.
4280 * search.c (lookup_fnfields_1): Lazily create methods, as
4281 necessary.
4282 (lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC.
4283
165b54c3
SB
42842004-07-16 Steven Bosscher <stevenb@suse.de>
4285
4286 * cp-tree.h (struct lang_type): Don't have three GTY options on a
4287 single bit GTY desc.
4288
7740f00d
RH
42892004-07-16 Richard Henderson <rth@redhat.com>
4290
4291 * cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die.
4292 * cp-tree.h (cp_copy_res_decl_for_inlining): Remove.
4293 * tree.c (cp_copy_res_decl_for_inlining): Remove.
4294
bd7eccc4
NS
42952004-07-16 Nathan Sidwell <nathan@codesourcery.com>
4296
090ad434
NS
4297 * class.c (finish_struct_bits): Use for loop.
4298 (propagate_binfo_offsets): Do primary binfo outside of loop.
4299
3758425f
NS
4300 PR c++/16583
4301 * dump.c (cp_dump_tree): Don't dump the bases if there's no
4302 binfo.
4303
bd7eccc4
NS
4304 * pt.c (tsubst) <TREE_BINFO case>: We should never get here.
4305
aaaa46d2
MM
43062004-07-15 Mark Mitchell <mark@codesourcery.com>
4307
4308 * cp-tree.h (lang_type_class): Remove has_real_assign_ref and
4309 has_abstract_assign_ref. Make methods a VEC(tree) *.
4310 (TYPE_HAS_CONST_ASSIGN_REF): Add documentation.
4311 (CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC.
4312 (CLASSTYPE_DESTRUCTORS): Likewise.
4313 (TYPE_HAS_REAL_ASSIGN_REF): Remove.
4314 (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
4315 (add_method): Change prototoype.
4316 * class.c (add_method): Remove error_p parameter. Adjust for
4317 changes to CLASSTYPE_METHOD_VEC.
4318 (handle_using_decl): Adjust call to add_method.
4319 (maybe_warn_about_overly_private_class): Adjust for
4320 changes to CLASSTYPE_METHOD_VEC.
4321 (resort_type_method_vec): Likewise.
4322 (finish_struct_methods): Likewise.
4323 (check_for_override): Likewise.
4324 (warn_hidden): Likewise.
4325 (add_implicitly_declared_members): Defer creation of assignment
4326 operators. Adjust call to add_method.
4327 (clone_function_decl): Adjust call to add_method.
4328 (check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF.
4329 (finish_struct_1): Use CLASSTYPE_DESTRUCTORS.
4330 * decl.c (grok_special_member_properties): Don't set
4331 TYPE_HAS_ABSTRACT_ASSIGN_REF.
4332 * decl2.c (check_classfn): Adjust for
4333 changes to CLASSTYPE_METHOD_VEC.
4334 * method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS.
4335 (locate_ctor): Use CLASSTYPE_CONSTRUCTORS.
4336 (locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC.
4337 (implicitly_declare_fn): Set DECL_SOURCE_LOCATION. Do not call
4338 cp_finish_decl.
4339 * pt.c (check_explicit_specialization): Adjust for
4340 changes to CLASSTYPE_METHOD_VEC.
4341 (instantiate_class_template): Do not set
4342 TYPE_HAS_ABSTRACT_ASSIGN_REF.
4343 * ptree.c (cxx_print_type): Don't try to print
4344 CLASSTYPE_METHOD_VEC.
4345 * rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS.
4346 * search.c (lookup_field_r): Adjust for
4347 changes to CLASSTYPE_METHOD_VEC.
4348 (lookup_fnfields): Likewise.
4349 (lookup_conversion_operator): Likewise.
4350 (lookup_fnfields_1): Likewise. Create assignment operators
4351 lazily.
4352 (look_for_overrides_here): Adjust for
4353 changes to CLASSTYPE_METHOD_VEC.
4354 (add_conversions): Likewise.
4355 * semantics.c (finish_member_declaration): Adjust call to add_method.
4356
27f1984e
JM
43572004-07-15 Jason Merrill <jason@redhat.com>
4358
4359 * cp-lang.c (cxx_types_compatible_p): To the middle-end,
4360 references and pointers are compatible.
4361
48b45647
NS
43622004-07-15 Nathan Sidwell <nathan@codesourcery.com>
4363
4364 * decl.c (xref_basetypes): Refactor.
4365 * tree.c (copy_base_binfos): Replace with ...
4366 (copy_binfo): ... this. Deep copy the given binfo, (not the just
4367 bases of the given base).
4368 * cp-tree.h (copy_base_binfo): Remove.
4369 (copy_binfo): Declare.
4370
df05a794 43712004-07-15 Mark Mitchell <mark@codesourcery.com>
caf93cb0
EC
4372
4373 * name-lookup.c (set_inherited_value_binding_p): Add class_type
df05a794
MM
4374 parameter.
4375 (get_class_binding): Adjust.
4376 (push_class_level_binding): Don't use set_inherited_value_binding_p.
4377
37a247a0
NS
43782004-07-15 Nathan Sidwell <nathan@codesourcery.com>
4379
e4f78bd4 4380 * class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here.
132c7dd3
NS
4381 * decl.c (xref_basetypes): Set it here.
4382
37a247a0
NS
4383 * class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here.
4384 Don't check for incomplete base.
4385 (get_vfield_name): Simplify while loop.
4386 * decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here.
4387
90ea9897
MM
43882004-07-14 Mark Mitchell <mark@codesourcery.com>
4389
cc5e9f5a 4390 * lex.c (cxx_make_type): Remove call to get_pointer_type.
cc5e9f5a 4391
90ea9897
MM
4392 * cp-tree.h (IDENTIFIER_VALUE): Remove.
4393 (BINFO_PUSHDECLS_MARKED): Likewise.
4394 (maybe_inject_for_scope_var): Likewise.
4395 (push_class_decls): Likewise.
4396 * name-lookup.h (push_class_binding): Remove.
4397 (innermost_non_namespace_value): New function.
4398 (outer_binding): Likewise.
4399 * class.c (add_method): Push bindings before adding to
4400 TYPE_METHODS.
4401 (restore_class_cache): Do not restore class_shadowed.
4402 (pushclass): Do not add USING_DECLs. Do not call
4403 push_class_decls.
4404 * config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c.
4405 * decl.c (pushdecl): Use outer_binding.
4406 (poplevel): Set the scope for an out-of-scope for-loop declaration
4407 appropriately.
4408 (cp_finish_decl): Don't call maybe_inject_for_scope_var.
4409 * name-lookup.c (new_class_binding): New function.
4410 (push_binding): Use it.
4411 (pushdecl): Use innermost_non_namespace_value.
4412 (maybe_inject_for_scope_var): Remove.
4413 (push_class_binding): Remove.
4414 (set_inherited_value_binding_p): New function.
4415 (get_class_binding): New function.
4416 (push_class_level_binding): Assert that the current_class_type is
4417 being defined.
4418 (outer_binding): New function.
4419 (innermost_non_namespace_value): Likewise.
4420 (lookup_name_real): Use outer_binding.
4421 (lookup_name_current_level): Ignore out-of-scope variables.
4422 * pt.c (check_template_shadow): Use innermost_non_namespace_value.
4423 (lookup_template_class): Likewise.
4424 * search.c (dfs_push_type_decls): Remove.
4425 (dfs_push_decls): Likewise.
4426 (setup_class_bindings): Likewise.
4427 (lookup_field_1): Handle USING_DECLs from dependent scopes.
4428 (marked_pushdecls_p): Remove.
4429 (unmarked_pushdecls_p): Remove.
4430 (marked_identifiers): Remove.
4431 (setup_class_bindings): Remove.
4432 (dfs_push_type_decls): Remove.
4433 (dfs_push_decls): Remove.
4434 (push_class_decls): Remove.
caf93cb0 4435
39fb05d0
MM
44362004-07-13 Mark Mitchell <mark@codesourcery.com>
4437
1ff3c076
MM
4438 PR c++/16518
4439 PR c++/16337
4440 * decl.c (grokvardecl): Make declspecs parameter const.
4441 (grokdeclarator): Likewise. Adjust accordingly.
4442 * decl.h (grokdeclarator): Adjust declaration.
4443 * parser.c (cp_parser_init_declarator): Do not clear
4444 decl_specifiers->attributes.
4445
39fb05d0
MM
4446 * cp-tree.h (lang_identifier): Remove class_value.
4447 (IDENTIFIER_CLASS_VALUE): Remove.
4448 (pop_class_decls): Likewise.
4449 (init_search_processing): Likewise.
4450 * class.c (handle_using_decl): Use lookup_member, not
4451 IDENTIFIER_CLASS_VALUE.
4452 (restore_class_cache): New function, split out from ...
4453 (pushclass): ... here. Do not call clear_identifier_class_values.
4454 (invalidate_class_lookup_cache): Do not clear
4455 IDENTIFIER_CLASS_VALUE.
4456 (popclass): Do not call pop_class_decls.
4457 (maybe_note_name_used_in_class): Do not save names looked up after
4458 the class is complete. Use lookup_member, not
4459 IDENTIFIER_CLASS_VALUE.
4460 * config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
4461 * decl.c (cxx_init_decl_processing): Do not call
4462 init_search_processing.
4463 * method.c (do_build_copy_constructor): Remove unnecessary code.
4464 (do_build_assign_ref): Likewise.
4465 * name-lookup.c (pushdecl): Use lookup_member, not
4466 IDENTIFIER_CLASS_VALUE.
4467 (set_identifier_type_value_with_scope): Set TREE_TYPE on the
4468 type_shadowed list.
4469 (poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
4470 (push_class_binding): Do not set it.
4471 (clear_identifier_class_values): Remove.
4472 (push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
4473 (store_binding): Do not save it.
4474 (pop_from_top_level): Do not restore it.
4475 * name-lookup.h (cxx_saved_binding): Remove class_value.
4476 (clear_identifier_class_values): Remove.
4477 * ptree.c (cxx_print_identifier): Do not print
4478 IDENTIFIER_CLASS_VALUE.
4479 * search.c (search_obstack): Remove.
4480 (push_stack_level): Remove.
4481 (pop_stack_level): Remove.
4482 (search_level): Remove.
4483 (search_stack): Remove.
4484 (lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
4485 (setup_class_bindings): Use IDENTIFIER_MARKED, not
4486 IDENTIFIER_CLASS_VALUE.
4487 (marked_identifiers): New variable.
4488 (push_class_decls): Clear IDENTIFIER_MARKED.
4489 (pop_class_decls): Don't call pop_search_level.
4490 (init_search_processing): Remove.
4491
f31045fd
MM
44922004-07-12 Mark Mitchell <mark@codesourcery.com>
4493
1a57987b
MM
4494 * cp-tree.h (get_aggr_typedef): Remove.
4495 * init.c (get_aggr_typedef): Likewise.
4496
f31045fd
MM
4497 * name-lookup.c (push_class_level_binding): Simplify.
4498
494d9016
AP
44992004-07-12 Andrew Pinski <apinski@apple.com>
4500
4501 PR c++/16475
4502 Revert:
4503 2004-07-07 H.J. Lu <hongjiu.lu@intel.com>
4504 PR c++/16276
4505 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
4506 is not public.
4507
98ca843c
EC
45082004-07-12 Eric Christopher <echristo@redhat.com>
4509
4510 * parser.c (cp_parser_class_head): Remove unused variable.
4511
3143d517
GB
45122004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4513
4514 * decl.c (grok_op_properties): Reject [de-]allocation functions
4515 declared in a namespace, or declared as static.
4516
cad7e87b
NS
45172004-07-12 Nathan Sidwell <nathan@codesourcery.com>
4518
2176cbb5
NS
4519 * cp-tree.h (make_binfo): Remove.
4520 * decl.c (xref_basetypes): Use make_tree_binfo directly.
4521 * tree.h (copy_base_binfos): Likewise.
4522 (make_binfo): Remove.
98ca843c 4523
cad7e87b
NS
4524 * call.c (build_user_type_conversion_1, build_new_op,
4525 check_constructor_callable, build_temp,
4526 perform_direct_initialization_of_possible): Pass type directly to
4527 lookup_fnfields & build_special_member_call.
4528 (build_special_member_call): Accept a type, and complete it.
4529 * class.c (finish_stuct_bits): Copy the BINFOs here.
4530 * cvt.c (ocp_convert): Pass type directly to
4531 build_special_member_call.
4532 * decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
4533 (xref_basetypes): Allocate the binfo here. Adjust.
4534 * init.c (build_init, build_new_1): Pass type directly to
4535 build_special_member_call.
4536 * lex.c (cxx_make_type): Do not allocate binfo here.
4537 * name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
4538 * parser.c (cp_parser_class_head): Always call xref_basetypes.
4539 * pt.c (instantiate_class_template): Likewise. Inhibit access
4540 checking for template friends.
4541 * ptree.c (cxx_print_type): Adjust record printing.
4542 * search.c (lookup_base): When taking a type, complete it before
4543 looking for a binfo.
4544 (lookup_member): Delay completing a type.
4545 (push_class_decls): Don't walk an incomplete type.
4546 (lookup_conversions): Likewise.
4547 * semantics.c (finish_stmt_expr_expr): Pass type directly to
4548 build_special_member_call.
4549 * tree.c (copy_base_binfos): Adjust.
4550 (make_binfo): Likewise.
4551 * typeck.c (build_modify_expr): Pass type directly to
4552 build_special_member_call.
4553 * typeck2.c (process_init_constructor): Check a binfo exists.
4554 (build_m_component_ref): Allow accessing an incomplete type.
4555 (build_functional_cast): Pass type directly to
4556 build_special_member_call.
4557
7fb213d8
GB
45582004-07-12 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4559
4560 PR c++/2204
4561 * config-lang.in (gtfiles): Add typeck2.c.
4562 * Make-lang.in: Tweak typeck2.c dependencies, and add rule for
4563 gt-cp-typeck2.h.
4564 * cp-tree.h: Declare complete_type_check_abstract.
4565 * typeck2.c (pat_calc_hash, pat_compare,
4566 complete_type_check_abstract): New functions.
4567 (abstract_virtuals_error): If the type is abstract, register the
4568 declaration within abstract_pending_vars for further checks.
4569 Inspect also dependent types. Handle IDENTIFIER_NODEs as decl.
4570 * decl.c (cp_finish_decl): Do not strip array types.
4571 (create_array_type_for_decl): Check for abstractness of the element
4572 type.
4573 (complete_vars): Call complete_type_check_abstract.
4574 * class.c (finish_struct): Prepare a list of virtual functions for
4575 template types, and call complete_vars on it to check for abstractness.
4576
55e99d52
PB
45772004-07-12 Paolo Bonzini <bonzini@gnu.org>
4578
4579 PR tree-optimization/14107
4580 * decl.c (finish_function): Remove temporary band-aid.
4581
f44b0c8e
MM
45822004-07-11 Mark Mitchell <mark@codesourcery.com>
4583
12cf89fa
MM
4584 * call.c (build_operator_new_call): Avoid using push_to_top_level.
4585 (build_new_op): Adjust call to lookup_function_nonclass.
4586 * name-lookup.c (identifier_type_value): Adjust call to
4587 lookup_name_real.
4588 (lookup_name_real): Add block_p parameter.
4589 (lookup_name_nonclass): Adjust call to lookup_name_real.
4590 (lookup_function_nonclass): Likewise.
4591 (lookup_name): Likewise.
4592 * name-lookup.h (lookup_name_real): Change prototype.
4593 (lookup_name_nonclass): Likewise.
4594 * parser.c (cp_parser_lookup_name): Likewise.
4595
f44b0c8e
MM
4596 * cp-tree.h (saved_scope): Make old_bindings a vector.
4597 (unuse_fields): Remove.
4598 * name-lookup.h (cxx_saved_binding): Define it.
4599 * class.c (pushclass): Don't use unuse_fields.
4600 * name-lookup.c (cxx_saved_binding_make): Remove.
4601 (store_binding): Add new bindings to a vector, using an
4602 accumulator style, rather than adding them to a list.
4603 (store_bindings): Adjust accordingly.
4604 (store_class_bindings): Likewise.
4605 (push_to_top_level): Likewise.
4606 (pop_from_top_level): Likewise.
4607 * optimize.c (maybe_clone_body): Must push_to_top_level and
4608 pop_from_top_level calls outside of loop.
4609 * parser.c (cp_parser_class_specifier): Move push_scope/pop_scope
4610 calls here from cp_parser_late_parsing_default_args.
4611 (cp_parser_save_default_args): Record the class type in which the
4612 function is declared.
4613 (cp_parser_late_parsing_default_args): Do not call
4614 push_nested_class/pop_nested_class.
4615 * search.c (dfs_unuse_fields): Remove.
4616 (unuse_fields): Remove.
4617
9dcf6e73
JM
46182004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
4619
4620 * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP, LANG_HOOKS_PUSHLEVEL,
4621 LANG_HOOKS_POPLEVEL, LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Remove.
4622 * cp-tree.h (poplevel): Declare.
4623 (set_block): Remove.
4624 * decl.c (set_block): Remove.
4625
30bf22a0
MS
46262004-07-10 Mike Stump <mrs@apple.com>
4627
4628 * decl2.c (import_export_class): Never export/import vtables
4629 with inline key functions.
4630
dae42469
SB
46312004-07-09 Steven Bosscher <stevenb@suse.de>
4632
4633 * typeck.c (c_expand_asm_operands): Remove.
4634
999a1ad4
MS
46352004-07-09 Mike Stump <mrs@apple.com>
4636
4637 * typeck.c (build_class_member_access_expr): Skip null deref
4638 warning when we don't dereference it.
4639
dd29d26b
GB
46402004-07-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4641
4642 PR c++/8211
4643 PR c++/16165
4644 * class.c (check_field_decls): Improve -Weffc++ warning: do not
4645 warn for pointers to functions/members, or for classes without
4646 destructors.
4647
6f2838e3
MM
46482004-07-08 Mark Mitchell <mark@codesourcery.com>
4649
4650 * name-lookup.h (struct cp_binding_level): Update documentation
4651 for class_shadowed.
4652
47293da3
GB
46532004-07-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4654
4655 PR c++/16169
4656 * typeck.c (check_return_expr): Improve -Weffc++ warning: handle
4657 returning CALL_EXPR, and non-reference return type.
4658
7de5bccc
NS
46592004-07-08 Nathan Sidwell <nathan@codesourcery.com>
4660
4661 * name-lookup.c (push_binding): Use VEC_reserve.
4662
ac45df5d
RH
46632004-07-08 Richard Henderson <rth@redhat.com>
4664
4665 * cp-tree.h (expand_eh_spec_block): Remove.
4666
89b578be
MM
46672004-07-07 Mark Mitchell <mark@codesourcery.com>
4668
4669 * cp-tree.h (saved_scope): Remove x_previous_class_type and
4670 x_previous_class_values; add x_previous_class_level.
4671 (previous_class_type): Remove.
4672 (previous_class_values): Remove.
4673 (previous_class_level): New macro.
4674 * class.c (pushclass): Restore the identifier cache more
4675 expeditiously.
4676 (invalidate_class_lookup_cache): Use vector for class_shadowed and
4677 previous_class_values.
4678 * decl.c (poplevel): Likewise.
4679 * name-lookup.c (cxx_binding_init): New function.
4680 (cxx_binding_make): Use it.
4681 (push_binding): For a binding in a class level, use a vector of
4682 cp_class_binding nodes.
4683 (push_binding_level): New function.
4684 (begin_scope): Use it.
4685 (leave_scope): Do not put class binding levels on the free list.
4686 (print_binding_level): Adjust for the fact that class_shadowed is
4687 a vector.
4688 (poplevel_class): Likewise.
4689 (clear_identifier_class_values): Likewise.
4690 (push_class_level_binding): Likewise.
4691 (set_class_shadows): Remove.
4692 (store_binding): New function.
4693 (store_class_bindings): New function.
4694 (push_to_top_level): Use store_class_bindings as appropriate.
4695 (pop_from_top_level): Use previous_class_level, not
4696 previous_class_type.
4697 * name-lookup.h (cp_class_binding): New type.
4698 (cp_binding_level): Use a vector object for class_shadowed.
4699 (push_binding_level): Declare.
4700 (set_class_shadows): Remove.
4701
3a18db48
AP
47022004-07-07 Andrew Pinski <apinski@apple.com>
4703
4704 * class.c (instantiate_type): BUFFER_REF is dead.
4705 * lex.c (init_operators): IN_EXPR is dead.
4706
4fe2a1a7
JM
47072004-07-07 Jason Merrill <jason@redhat.com>
4708
4709 PR c++/16334
4710 * call.c (build_new_op): Give overload warnings for built-in
4711 candidates.
4712
4681c505
L
47132004-07-07 H.J. Lu <hongjiu.lu@intel.com>
4714
4715 PR c++/16276
4716 * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
4717 is not public.
4718
604a3205
NS
47192004-07-07 Nathan Sidwell <nathan@codesourcery.com>
4720
4721 * cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove.
4722 * class.c (build_primary_vtable, check_bases,
4723 determine_primary_base, finish_struct_bits,
4724 maybe_warn_about_overly_private_class, dfs_find_final_overrider_q,
4725 get_basefndecls, warn_hidden, walk_subobject_offsets,
4726 build_base_fields, create_vtable_ptr, propagate_binfo_offsets,
4727 layout_virtual_bases, end_of_class, warn_about_ambiguous_bases,
4728 finish_struct_1, get_vfield_name, contains_empty_class_p,
4729 dump_class_hierarchy_r, finish_vtbls, build_vtt_inits,
4730 dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits,
4731 add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust
4732 BINFO macros.
4733 * decl.c (xref_basetypes): Likewise.
4734 * dump.c (cp_dump_tree): Likewise.
4735 * error.c (dump_expr): Likewise.
4736 * init.c (sort_mem_initializers, expand_member_init,
4737 push_base_cleanups): Likewise.
4738 * method.c (do_build_copy_constructor, do_build_assign_reg,
4739 synthesize_exception_spec): Likewise.
bd7eccc4 4740 * name-lookup.c (arg_assoc_class): Likewise.
604a3205 4741 * pt.c (instantiate_class_template, tsubst,
bd7eccc4
NS
4742 get_template_base_recursive): Likewise.
4743 * ptree.c (cxx_print_type): Likewise.
604a3205
NS
4744 * rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
4745 * search.c (lookup_base_r, dynamic_cast_base_recurse,
4746 dfs_access_in_type, access_in_type, lookup_field_queue_p,
4747 bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp,
4748 marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp,
4749 dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet,
4750 binfo_for_vtable, copied_binfo, original_binfo): Likewise
4751 * tree.c (copy_base_binfos, make_binfo): Likewise.
4752 * typeck.c (commmon_base_type): Likewise
4753 * typeck2.c (process_init_constructor): Likewise
4754
82b5e52a
JM
47552004-07-06 Joseph S. Myers <jsm@polyomino.org.uk>
4756
4757 * decl.c (check_tag_decl): Name redeclared type in diagnostic.
4758
fddabb2c
GB
47592004-07-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4760
4761 PR c++/3671
4762 * pt.c (convert_nontype_argument): Disallow conversions between
4763 different enumeration types.
4764
809e3e7f
NS
47652004-07-06 Nathan Sidwell <nathan@codesourcery.com>
4766
4767 * cp-tree.h (BINFO_MARKED): Remove.
4768 (BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED,
4769 BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P,
4770 BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n.
4771 (SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P.
4772 * class.c (build_base_path): Use BINFO_VIRTUAL_P.
4773 (mark_primary_bases, determine_primary_base, base_derived_from,
4774 dfs_find_final_overrider, dfs_find_final_overrider_q,
4775 dfs_find_inal_overrider_post, update_vtable_entry_for_fn,
4776 dfs_modify_vtables, walk_subobject_offsets,
4777 layout_nonempty_base_or_field, build_base_field,
4778 build_base_fields, propagate_binfo_offsets, layout_virtual_bases,
4779 end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable,
4780 finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits,
4781 build_ctor_vtbl_group, accumulate_vtble_inits,
4782 dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries,
4783 build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r,
4784 add_vcall_offset_vtbl_entries_1): Likewise.
4785 * decl.c (xref_basetypes): Incomming virtual base indicated by
4786 TREE_TYPE. Adjust.
4787 * dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P.
4788 * init.c (finish_init_stmts, sort_mem_initializers,
4789 emit_mem_initializers, build_vtble_address, expand_member_init,
4790 push_base_cleanups): Likewise.
4791 * method.c (do_build_copy_constructor): Likewise.
4792 * pt.c (instantiate_class_template,
4793 get_template_base_recursive): Likewise.
4794 * rtti.c (dfs_class_hint_mark, get_pseudo_ti_init,
4795 get_pseudo_ti_desc): Likewise.
4796 * search.c (lookup_base_r, dynamic_cast_base_recurse,
4797 binfo_from_vbase, binfo_via_virtual, copied_binfo,
4798 original_binfo): Likewise.
4799 * semantics.c (finish_base_specifier): Virtualness is indicated
4800 by TREE_TYPE.
4801 * tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P.
4802
a95d27c8
MM
48032004-07-06 Mark Mitchell <mark@codesourcery.com>
4804
4805 Revert:
4806 2004-06-24 Jason Merrill <jason@redhat.com>
4807 PR c++/16115
4808 * decl.c (grokparms): Give the PARM_DECL reference type if the
4809 parameter is passed by invisible reference.
4810
5377d5ba
RK
48112004-07-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
4812
4813 * cp-lang.c (cp_var_mod_type_p): Add extra arg.
4814 * decl.c (grokdeclarator): Extra arg to variably_modified_type_p.
4815 * pt.c (check_instantiated_args, unify): Likewise.
4816
dcbaa800
PE
48172004-07-05 Phil Edwards <phil@codesourcery.com>
4818
4819 * Make-lang.in (check-c++, lang_checks): Add some comments.
4820
c31b8e1b
ZW
48212004-07-05 Zack Weinberg <zack@codesourcery.com>
4822
4823 * cp-mudflap.c: Delete file.
4824 * Makefile.in: Remove all references to cp-mudflap.o.
4825
6de66680
ZW
48262004-07-05 Zack Weinberg <zack@codesourcery.com>
4827
4828 * decl.c (cxx_init_decl_processing): Call
4829 build_common_tree_nodes before creating the global NAMESPACE_DECL.
4830
030bbecd
GB
48312004-07-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4832
4833 PR c++/2518
4834 * call.c (build_operator_new_call): Look only at global scope.
4835
95b4aca6
NS
48362004-07-05 Nathan Sidwell <nathan@codesourcery.com>
4837
4838 * call.c (enforce_access): Expect TREE_BINFO.
4839 * class.c (binfo_ctor_vtable): Check TREE_BINFO.
4840 * cp-tree.h (RECORD_OR_UNION_TYPE_CHECK): Remove.
4841 (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
4842 Adjust.
4843 (BINFO_LANG_ELTS): Remove.
4844 (BINFO_LANG_SLOTS): New.
4845 (TYPE_RAISES_EXCEPTIONS, ENUM_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
4846 (CLASSTYPE_TEMPLATE_INFO): Adjust.
4847 * pt.c (tsubst): Split TREE_BINFO case from TREE_VEC case.
4848 * search.c (lookup_member): Check TREE_BINFO.
4849 * semantics.c (perform_or_defer_access_check): Likewise.
4850 (check_accessibility_of_qualified_id): Check
4851 deferred_access_no_check.
4852 * tree.c (make_binfo): Use make_tree_binfo.
4853
3aaf7c71
MM
48542004-07-04 Mark Mitchell <mark@codesourcery.com>
4855
4856 * method.c (implicitly_declare_fn): Set linkage of generated
4857 functions.
4858
8fff4fc1
RH
48592004-07-04 Richard Henderson <rth@redhat.com>
4860
4861 * typeck.c (cxx_mark_addressable): Don't put_var_into_stack.
4862
48632004-07-03 Scott Brumbaugh <scottb.lists@verizon.net>
4864
4865 PR c++/3761
4866 * name-lookup.c (push_class_level_binding): Don't pass a
4867 TREE_LIST of ambiguous names to check_template_shadow as it
4868 only handles declarations. Instead, pull the declaration
4869 out and pass that.
ece95d90 4870
e1e93ad8
GB
48712004-07-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
4872
4873 PR c++/14971
4874 * pt.c (check_explicit_specialization): Clarify error message.
4875
82c82743
RH
48762004-07-02 Richard Henderson <rth@redhat.com>
4877
4878 * tree.c (cp_unsave_r): Update remap_save_expr call.
4879
717733d4
MM
48802004-07-02 Mark Mitchell <mark@codesourcery.com>
4881
d9634d53
MM
4882 PR c++/16240
4883 * mangle.c (write_template_arg): Correct mangling.
4884
954a465f 4885 PR c++/16297
717733d4
MM
4886 * decl.c (grokdeclarator): Robustify.
4887
4dfa0342
RH
48882004-07-01 Richard Henderson <rth@redhat.com>
4889
4890 * class.c (fixed_type_or_null): Don't handle RTL_EXPR.
4891 * method.c (synthesize_method): Don't clear_last_expr.
4892 * name-lookup.c (maybe_push_cleanup_level): Likewise.
4893
d59c7b4b
NC
48942004-07-01 Nick Clifton <nickc@redhat.com>
4895
4896 * decl2.c (import_export_class): Invoke the
4897 import_export_class field in the gcc_target structure if it is not
4898 empty.
4899
6a0bec2c
RH
49002004-06-30 Richard Henderson (rth@redhat.com>
4901
4902 * decl.c (start_preparsed_function): Don't set immediate_size_expand.
4903 * method.c (use_thunk): Likewise.
4904
dd66b8e8
JM
49052004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
4906
4907 * call.c (build_over_call), typeck.c (build_function_call): Call
4908 check_function_arguments instead of check_function_format.
4909
99801548
JM
49102004-06-30 Joseph S. Myers <jsm@polyomino.org.uk>
4911
4912 * call.c (build_over_call), typeck.c (build_function_call): Update
4913 calls to check_function_format.
4914
1d528e29
RH
49152004-06-30 Richard Henderson <rth@redhat.com>
4916
4917 * call.c (build_over_call): Use __builtin_memcpy for copying
4918 CLASS_AS_BASE rather than funny casting.
4919
9117ccad
RH
49202004-06-30 Richard Henderson <rth@redhat.com>
4921
4922 * init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and
4923 TYPE_SIZE_UNIT of full_type.
4924
93409b8c
PB
49252004-06-30 Per Bothner <per@bothner.com>
4926
4927 Conditionally compile support for --enable-mapped_location.
4928 * decl.c (pop_label): Handle (imperfectly) USE_MAPPED_LOCATION case.
4929 * decl2.c: If USE_MAPPED_LOCATION, don't do some line number
4930 adjustments - which I don't understand.
4931 * error.c (dump_decl): Rename "<interrnal>" to "<built-in>".
4932 * error.c: Use LOCATION_FILE and EXPR_LOCATION macros.
4933 (print_instantiation_partial_context): Use expand_location.
4934 * decl.c (duplicate_decl): Use new DECL_IS_BUILTIN macro.
4935 * name-lookup.c: Likewise.
4936 * lex.c (cxx_init): Likewise. Also use BUILTINS_LOCATION.
4937 * name-lookup.c: Use input_line macro.
4938 * parser.c (cp_lexer_get_preprocessor_token): Use UNKNOWN_LOCATION.
4939 (cp_parser_statement): Rename locaal variable statement_locus to
4940 statement_location and use SET_EXPR_LOCATION macro.
4941 * pt.c: Handle USE_MAPPED_LOCATION case. Use new macros.
4942 * tree.c (cp_walk_subtrees): Likewise.
4943
dd0d10e8
PB
49442004-06-29 Per Bothner <per@bothner.com>
4945
4946 * tree.c (build_min_nt, build_min, build_min_non_dep):
4947 Don't set TREE_COMPLEXITY from input_line.
4948
46e995e0
PB
49492004-06-29 Paul Brook <paul@codesourcery.com>
4950
4951 * init.c: Include target.h.
4952 (get_cookie_size): Remove and replace with target hook.
4953 Update callers.
4954 (build_new_1): Store the element size in the cookie.
4955
fe88415f
NS
49562004-06-29 Nathan Sidwell <nathan@codesourcery.com>
4957
4958 PR c++/16260
4959 * parser.c (cp_parser_template_declaration_after_export): Disable
4960 access checks here ...
4961 (cp_parser_class_specifier): ... not here.
4962
086e3095
NS
49632004-06-28 Nathan Sidwell <nathan@codesourcery.com>
4964
4965 * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
4966 VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
4967 BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
4968 TREE_CHECK macro.
4969
3e1f1ba5
NS
49702004-06-28 Nathan Sidwell <nathan@codesourcery.com>
4971
4972 * cp-tree.h (struct deferred_access): Move to ...
4973 * semantics.c (struct deferred_access): ... here. Adjust.
4974 (deferred_access_stack): Make a VEC(deferred_access),
4975 (deferred_access_free_list): Remove.
4976 (deferred_access_no_check): New.
4977 (push_deferring_access_checks, resume_deferring_access_checks,
4978 stop_deferring_access_checks, pop_deferring_access_checks,
4979 get_deferred_access_checks, pop_to_parent_deferring_access_checks,
4980 perform_deferred_access_checks, perform_or_defer_access_check): Adjust.
4981
0f2a66c9
NS
49822004-06-28 Nathan Sidwell <nathan@codesourcery.com>
4983
fe88415f 4984 PR c++/16174
644d1951
NS
4985 * call.c (build_temp): Declare.
4986 (check_constructor_callable): New.
4987 (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
4988 CONSTRUCTOR_CALLABLE.
4989 (convert_like_real, initialize_reference): Use
4990 check_constructor_callable.
4991 * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
4992 (LOOKUP_*): Renumber.
4993
3e1f1ba5
NS
49942004-06-28 Nathan Sidwell <nathan@codesourcery.com>
4995
0f2a66c9
NS
4996 * friend.c (add_friend): Only perform access checks when context
4997 is a class.
4998 * lex.c (cxx_make_type): Only create a binfo for aggregate types.
4999 * parser.c (cp_parser_class_specifier): Disable access checks here
5000 when parsing the body of a templated class.
5001 * semantics.c (perform_or_defer_access_checks): Reorder to allow
5002 NULL binfos when not checking access.
5003
58c42dc2
NS
50042004-06-28 Nathan Sidwell <nathan@codesourcery.com>
5005
5006 Use vector API for vbase list.
5007 * cp-tree.h: Include vec.h
5008 (DEF_VEC_P (tree)): New type.
5009 (struct lang_type_class): Change vbase's member type.
5010 (binfo_for_vbase): Declare.
5011 * class.c (determine_primary_base, base_derived_from,
5012 update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class,
5013 warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits,
5014 build_vtbl_initializer): Adjust.
5015 * decl.c (xref_basetypes): Adjust, accumulate upper bound of
5016 vbases.
5017 * init.c (sort_mem_initializers, expand_member_init,
5018 push_base_cleanups): Adjust.
5019 * method.c (do_build_copy_constructor): Adjust.
5020 * search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust.
5021 (binfo_for_vbase): New.
5022 * tree.c (copy_base_binfos): Adjust.
5023
0a73e37f
MM
50242004-06-28 Mark Mitchell <mark@codesourcery.com>
5025
5026 * parser.c (cp_parser_set_decl_spec_type): Fix thinko.
5027
934d729b
GDR
50282004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
5029
6de66680 5030 PR c++/14123
934d729b
GDR
5031 * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
5032 paranthesis in case of pointers to array members.
5033 * error.c (dump_type_prefix): Likewise.
5034 (dump_type_suffix): Maybe issue a whitespace when printing
6de66680 5035 ARRAY_TYPE.
934d729b 5036
f84b6c96
MM
50372004-06-27 Mark Mitchell <mark@codesourcery.com>
5038
5039 PR c++/16193
5040 * parser.c (cp_parser_set_decl_spec_type): Refine test for
5041 redefinition of built-in types.
5042
73bbafe5
GDR
50432004-06-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
5044
5045 * error.c (pp_template_argument_list_start): Remove.
5046 (pp_template_argument_list_end): Likewise.
5047 (pp_separate_with_comma): Use pp_cxx_separate_with.
5048 (reinit_global_formatting_buffer): Remove.
5049 (pp_non_consecutive_character): Likewise.
5050 (dump_scope): Use pp_cxx_colon_colon.
5051 (dump_template_parameter): Use pp_cxx_identifier,
6de66680 5052 pp_cxx_tree_identifier and pp_cxx_whitespace.
73bbafe5
GDR
5053 (dump_templat_bindings): Replace use of pp_string with sequence
5054 of pp_cxx_whitespace and pp_equal.
5055 (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
5056 pp_cxx_colon_colon, pp_cxx_whitespace throughout. Don't set
6de66680 5057 padding here.
73bbafe5
GDR
5058 (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
5059 (dump_type_prefix): Don't set padding. Use pp_cxx_whitespace,
5060 pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
5061 (dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket,
5062 pp_cxx_right_bracket, pp_cxx_identifier throughout,
5063 (dump_decl): Likewise.
5064 (dump_template_decl): Likewise.
5065 (dump_function_decl): Likewise. Set padding as appropriate.
5066 (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
6de66680 5067 pp_cxx_right_paren.
73bbafe5
GDR
5068 (dump_exception_spec): Likewise.
5069 (dump_function_name): Use pp_cxx_tree_identifier and
6de66680 5070 pp_cxx_identifier.
73bbafe5
GDR
5071 (dump_template_parms): Use pp_cxx_begin_template_argument_list and
5072 pp_cxx_end_template_argument_list.
5073 (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
5074 pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
6de66680 5075 pp_cxx_whitespace throughout.
73bbafe5 5076 (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
6de66680 5077 pp_cxx_right_paren.
73bbafe5
GDR
5078 (dump_unary_op): Likewise.
5079 (reinit_cxx_pp): New function.
5080 (type_as_string); Use it.
5081 (expr_as_string): Likewise.
5082 (decl_as_string); Likewise.
5083 (context_as_string): Likewise.
5084 (lang_decl_name): Likewise.
5085 (decl_to_string): Likewise.
5086 (expr_to_string): Likewise.
5087 (parm_to_string): Likewise.
5088 (type_to_string): Likewise.
5089 (args_to_string): Likewise.
5090 (cv_to_string): Likewise.
5091
3c01e5df
MM
50922004-06-26 Mark Mitchell <mark@codesourcery.com>
5093
5094 * cp-tree.h (cp_cv_quals): New type.
5095 (cp_declarator): Use it instead of "tree" as appropriate.
5096 (grok_method_quals): Adjust prototype.
5097 (grokclassfn): Likewise.
5098 (do_friend): Likewise.
5099 * decl.c (grokfndecl): Use cp_cv_quals, not tree.
5100 (grokdeclarator): Likewise.
5101 * decl2.c (grok_method_quals): Likewise.
5102 (grokclassfn): Likewise.
5103 * friend.c (do_friend): Likewise.
5104 * method.c (implicitly_declare_fn): Adjust call to grokclassfn.
5105 * parser.c (make_call_declarator): Use cp_cv_quals, not tree.
5106 (make_pointer_declarator): Likewise.
5107 (make_reference_declarator): Likewise.
5108 (make_ptrmem_declarator): Likewise.
5109 (cp_parser_ptr_operator): Likewise.
5110 (cp_parser_cv_qualifier_seq_opt): Likewise.
5111 (cp_parser_cv_qualifier_opt): Remove.
5112 (cp_parser_new_declarator_opt): Adjust call to
5113 cp_parser_ptr_operator.
5114 (cp_parser_conversion_declaration_opt): Likewise.
5115 (cp_parser_declarator): Use cp_cv_quals, not tree.
5116 (cp_parser_direct_declarator): Likewise.
5117
350fae66
RK
51182004-06-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
5119
5120 * call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c:
5121 Rename DECL_STMT to DECL_EXPR.
5122 * init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise.
5123 * cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
5124 * tree.c (cp_walk_subtrees): Don't call c_walk_subtrees.
5125
e9e4d4ee
JH
51262004-06-26 Jan Hubicka <jh@suse.cz>
5127
5128 PR C++/14865
5129 * decl2.c (maybe_emit_vtables): Always import_export_vtable for the
5130 reachability analysis.
5131
e804f822
MM
51322004-06-25 Mark Mitchell <mark@codesourcery.com>
5133
5134 * cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from
5135 2004-06-23 change.
5136
4185ae53
PB
51372004-06-25 Paul Brook <paul@codesourcery.com>
5138
5139 * decl2.c (get_guard): Call targetm.cxx.guard_type.
5140 (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.
5141
f1b90a04
MM
51422004-06-24 Mark Mitchell <mark@codesourcery.com>
5143
5144 * decl.c (grokdeclarator): Restore error messages about __thread.
5145 * parser.c (cp_parser_decl_specifier_seq): Likewise.
5146
3db4a9b4
JM
51472004-06-24 Jason Merrill <jason@redhat.com>
5148
5149 PR c++/16115
5150 * decl.c (grokparms): Give the PARM_DECL reference type if the
5151 parameter is passed by invisible reference.
5152
5e7752d2
AS
51532004-06-24 Andreas Schwab <schwab@suse.de>
5154
5155 * cp-tree.h (enum cp_storage_class): Remove trailing comma.
5156
62d1db17
MM
51572004-06-23 Mark Mitchell <mark@codesourcery.com>
5158
5159 * Make-lang.in (cp/lex.o): Do not depend on cp/lex.h.
5160 (cp/decl.o): Likewise.
5161 (cp/decl2.o): Likewise.
5162 (cp/pt.o): Likewise.
5163 (cp/semantics.o): Likewise.
5164 * config-lang.in (gtfiles): Do not reference cp/lex.h.
5165 * class.c: Do not include lex.h.
5166 (add_implicitly_declared_members): Do not use
5167 adding_implicit_members.
5168 (check_bases_and_members): Do not talk about grok_x_components.
5169 * cp/cp-tree.h (adding_implicit_members): Remove.
5170 (cp_storage_class): New type.
5171 (cp_decl_spec): Likewise.
5172 (cp_decl_specifier_seq): Likewise.
5173 (cp_parameter_declarator): Use it for the decl_specifiers field.
5174 (check_tag_decl): Adjust prototype.
5175 (shadow_tag): Likewise.
5176 (groktypename): Likewise.
5177 (start_decl): Likewise.
5178 (start_function): Likewise.
5179 (start_method): Likewise.
5180 (grok_x_components): Remove.
5181 (grokfield): Adjust prototype.
5182 (grokbitfield): Likewise.
5183 (finish_member_class_template): Remove.
5184 * decl.c: Do not include lex.h.
5185 (adding_implicit_members): Do not define.
5186 (check_tag_decl): Do not use trees to represent decl-specifiers.
5187 (shadow_tag): Likewise.
5188 (groktypename): Likewise.
5189 (start_decl): Likewise.
5190 (grokvardecl): Likewise.
5191 (grokdeclarator): Likewise.
5192 (grokparms): Likewise.
5193 (start_function): Likewise.
5194 (start_method): Likewise.
5195 * decl.h (grokdeclarator): Adjust prototype.
5196 * decl2.c: Do not include lex.h.
5197 (grok_x_components): Remove.
5198 (grokfield): Do not use trees to represent decl-specifiers.
5199 (grokbitfield): Likewise.
5200 * lex.c: Do not include lex.h.
5201 * lex.h: Remove.
5202 * parser.c: Include target.h.
5203 (clear_decl_specs): New function.
5204 (cp_parser_translation_unit): Do not use trees to represent
5205 decl-specifiers.
5206 (cp_parser_postfix_expression): Likewise.
5207 (cp_parser_new_type_id): Likewise.
5208 (cp_parser_condition): Likewise.
5209 (cp_parser_simple_declaration): Likewise.
5210 (cp_parser_decl_specifier_seq): Likewise.
5211 (cp_parser_function_specifier_opt): Likewise.
5212 (cp_parser_conversion_type_id): Likewise.
5213 (cp_parser_template_parameter): Likewise.
5214 (cp_parser_explicit_instantiation): Likewise.
5215 (cp_parser_type_specifier): Likewise.
5216 (cp_parser_simple_type_specifier): Likewise.
5217 (cp_parser_init_declarator): Likewise.
5218 (cp_parser_type_id): Likewise.
5219 (cp_parser_type_specifier_seq): Likewise.
5220 (cp_parser_parameter_declaration): Likewise.
5221 (cp_parser_member_declaration): Likewise.
5222 (cp_parser_exception_declaration): Likewise.
5223 (cp_parser_function_definition_from_specifiers_and_declarator):
5224 Likewise.
5225 (cp_parser_single_declaration): Likewise.
5226 (cp_parser_save_member_function_body): Likewise.
5227 (cp_parser_friend_p): Likewise.
5228 (cp_parser_set_storage_class): New function.
5229 (cp_parser_set_decl_spec_type): Likewise.
5230 * pt.c: Do not include lex.h.
5231 * semantics.c: Likewise.
6de66680
ZW
5232 (finish_member_class_template): Remove.
5233
d522060b
RS
52342004-06-23 Roger Sayle <roger@eyesopen.com>
5235
5236 * call.c (build_cxx_call): Don't call expand_tree_builtin. No
5237 longer take both "args" and "convert_args" as arguments.
5238 (build_op_delete_call): Update call to build_cxx_call.
5239 (build_over_call): Likewise, update call to build_cxx_call.
5240 * cp-tree.h (build_cxx_call): Update funtion prototype.
5241 * typeck.c (build_function_call): Don't call expand_tree_builtin.
5242 * rtti.c (throw_bad_cast): Update call to build_cxx_call.
5243 (throw_bad_typeid): Likewise.
5244 (build_dynamic_cast_1): Likewise.
5245
0f59171d
RH
52462004-06-22 Richard Henderson <rth@redhat.com>
5247
5248 * class.c (build_vfn_ref): Take a pointer not object. Build
5249 an OBJ_TYPE_REF.
5250 (cp_fold_obj_type_ref): New.
5251 * call.c (build_over_call): Update build_vfn_ref call.
5252 * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
5253 * cp-tree.h (cp_fold_obj_type_ref): Declare.
5254
28c6dc63
JM
52552004-06-21 Jason Merrill <jason@redhat.com>
5256
514df03f
JM
5257 PR c++/16112
5258 * cp-gimplify.c (cp_gimplify_init_expr): Look through
5259 CLEANUP_POINT_EXPR.
28c6dc63 5260
058b15c1
MM
52612004-06-21 Mark Mitchell <mark@codesourcery.com>
5262
5263 * cp-tree.def (NEW_EXPR): Add a fourth slot.
5264 * cp-tree.h (PARMLIST_ELLIPSIS_P): Remove.
5265 (TREE_PARMLIST): Likewise.
5266 (CALL_DECLARATOR_PARMS): Likewise.
5267 (CALL_DECLARATOR_QUALS): Likewise.
5268 (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
5269 (cp_declarator_kind): New type.
5270 (cp_parameter_declarator): Likewise.
5271 (cp_declarator): Likewise.
5272 (cp_error_declarator): Likewise.
5273 (no_parameters): Likewise.
5274 (groktypename): Change prototype.
5275 (start_decl): Likewise.
5276 (start_handler_parms): Likewise.
5277 (get_scope_of_declarator): Likewise.
5278 (start_function): Likewise.
5279 (start_preparsed_function): New function.
5280 (start_function): Change prototype.
5281 (start_method): Likewise.
5282 (grokfield): Likewise.
5283 (grokbitfield): Likewise.
5284 (build_new): Likewise.
5285 (make_pointer_declarator): Remove.
5286 (make_reference_declarator): Likewise.
5287 (make_call_declarator): Likewise.
5288 (set_quals_and_spec): Likewise.
5289 (process_template_parm): Change prototype.
5290 (begin_function_definition): Remove.
5291 (finish_parmlist): Remove.
5292 * decl.c (groktypename): Do not use trees to represent
5293 declarators.
5294 (start_decl): Likewise.
5295 (start_handler_parms): Remove.
5296 (get_scope_of_declarator): Reimplement.
5297 (grokdeclarator): Do not use trees to represent declarators.
5298 (grokparms): Likewise.
5299 (start_function): Likewise.
5300 (start_method): Likewise.
5301 (build_void_list_mode): Do not use TREE_PARMLIST.
5302 * decl.h (grokdeclarator): Change prototype.
5303 * decl2.c (grok_method_quals): Robustify.
5304 (grok_x_components): Do not use trees to represent declarators.
5305 (grokfield): Likewise.
5306 (grokbitfield): Likewise.
5307 (start_objects): Build FUNCTION_DECLs, not declarators.
5308 (start_static_storage_duration_function): Likewise.
5309 * init.c (build_new): Simplify.
5310 * lex.c (make_pointer_declarator): Remove.
5311 (make_reference_declarator): Likewise.
5312 (make_call_declarator): Likewise.
5313 (set_quals_and_spec): Likewise.
5314 * method.c (use_thunk): Use start_preparsed_function.
5315 (synthesize_method): Likewise.
5316 (implicitly_declare_fn): Build FUNCTION_DECLs, not declarators.
5317 * optimize.c (maybe_clone_body): Use start_preparsed_function.
5318 * parser.c (cp_error_declarator): New variable.
5319 (declarator_obstack): Likewise.
5320 (alloc_declarator): New function.
5321 (make_declarator): Likewise.
5322 (make_id_declarator): Likewise.
5323 (make_pointer_declarator): Likewise.
5324 (make_reference_declarator): Likewise.
5325 (make_ptrmem_declarator): Likewise.
5326 (make_call_declarator): Likewise.
5327 (make_array_declarator): Likewise.
5328 (no_parameters): New variable.
5329 (make_parameter_declarator): Likewise.
5330 (cp_parser_check_for_definition_in_return_type): Do not use trees
5331 to represent declarators.
5332 (cp_parser_translation_unit): Likewise.
5333 (cp_parser_new_expression): Likewise.
5334 (cp_parser_new_type_id): Likewise.
5335 (cp_parser_new_declarator_opt): Likewise.
5336 (cp_parser_direct_new_declarator): Likewise.
5337 (cp_parser_condition): Likewise.
5338 (cp_parser_declaration_statement): Likewise.
5339 (cp_parser_declaration): Likewise.
5340 (cp_parser_conversion_type_id): Likewise.
5341 (cp_parser_conversion_declarator_opt): Likewise.
5342 (cp_parser_template_parameter_list): Likewise.
5343 (cp_parser_template_parameter): Likewise.
5344 (cp_parser_explicit_instantiation): Likewise.
5345 (cp_parser_init_declarator): Likewise.
5346 (cp_parser_declarator): Likewise.
5347 (cp_parser_direct_declarator): Likewise.
5348 (cp_parser_type_id): Likewise.
5349 (cp_parser_parameter_declaration_clause): Likewise.
5350 (cp_parser_parameter_declaration_list): Likewise.
5351 (cp_parser_parameter_declaration): Likewise.
5352 (cp_parser_member_declaration): Likewise.
5353 (cp_parser_exception_declaration): Likewise.
5354 (cp_parser_check_declarator_template_parameters): Likewise.
5355 (cp_parser_function_definition_from_specifiers_and_declarator):
5356 Likewise.
5357 (cp_parser_save_member_function_body): Likewise.
5358 * pt.c (process_template_parm): Add is_non_type parameter.
5359 (convert_template_argument): Adjust call to groktypename.
5360 (tsubst_call_declarator_parms): Remove use of TREE_PARMLIST.
5361 (tsubst): Do not expect declarators.
5362 (tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional
5363 argument.
5364 (instantiate_decl): Use start_preparsed_function.
5365 * semantics.c (begin_function_definition): Remove.
5366 (finish_parmlist): Remove.
5367 * cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not
5368 declarators.
5369
44de5aeb
RK
53702004-06-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
5371
5372 * call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
5373 (build_new_method_call): Likewise.
5374 * decl.c (local_variable_p_walkfn): Don't walk into types.
5375 * decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
5376 (build_anon_union_vars): Add new operand for COMPONENT_REF.
5377 * init.c (buld_new): Add new operand for ARRAY_REF.
5378 * method.c (do_build_copy_constructor): New op for COMPONENT_REF.
5379 (do_build_assign_ref): Likewise.
5380 * parser.c (cp_parser_direct_new_declarator): Add new operands
5381 for ARRAY_REF.
5382 (cp_parser_direct_declarator): Likewise.
5383 * pt.c (tsubst): Likewise.
5384 (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
5385 for COMPONENT_REF.
5386 * semantics.c (finish_non_static_data_member): Add new operand
5387 for COMPONENT_REF.
5388 * typeck.c (build_class_member_access_expr): Likewise.
5389 (build_class_member_access_expr, finish_class_member_access_expr):
5390 Likewise.
5391 (build_ptrmemfunc_access_expr): Likewise.
5392 (build_array_ref): Add new operands for ARRAY_REF.
5393 * typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
5394 * tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
5395
5088b058
RH
53962004-06-21 Richard Henderson <rth@redhat.com>
5397
5398 * dump.c (cp_dump_tree): Don't use dump_next_stmt.
5399 * parser.c (cp_parser_jump_statement): Update commentary.
5400 * pt.c (tsubst_expr): Use RETURN_EXPR.
5401 * semantics.c (finish_return_stmt): Likewise.
5402 (finalize_nrv_r): Likewise.
5403 * typeck.c, typeck2.c: Update file start commentary.
5404
3a5b9284
RH
54052004-06-21 Richard Henderson <rth@redhat.com>
5406
5407 * semantics.c (finish_expr_stmt): Call verify_sequence_points.
5408
543a0daa
RH
54092004-06-20 Richard Henderson <rth@redhat.com>
5410
5411 * cp-tree.h (add_decl_stmt): Declare.
5412 * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
5413 * semantics.c (maybe_cleanup_point_expr): New.
5414 (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
5415 finish_for_expr, finish_switch_cond): Use it.
5416 (finalize_nrv_r): Don't build an EXPR_STMT. Don't frob TREE_CHAIN.
5417
5a508662
RH
54182004-06-20 Richard Henderson <rth@redhat.com>
5419
5420 * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
5421 * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
5422 (cp_gimplify_expr): Call it.
5423 (gimplify_cleanup_stmt): Move from c-gimplify.c.
5424 (cp_genericize): New.
5425 * decl.c (finish_function): Call it.
5426 * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
5427 (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
5428 (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
5429 (cp_genericize): Declare.
5430 * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
5431 * dump.c (cp_dump_tree): Likewise.
5432 * semantics.c (push_cleanup): Move from c-semantics.c.
5433
84b8b0e0
ZW
54342004-06-20 Zack Weinberg <zack@codesourcery.com>
5435
5436 * cp-lang.c (has_c_linkage): Implement.
5437
5438 * cp-tree.h (set_mangled_name_for_decl): Don't prototype.
5439 * decl.c (duplicate_decls): Use COPY_DECL_RTL.
5440 (builtin_function_1): Don't call make_decl_rtl.
5441 (build_cp_library_fn): Don't call set_mangled_name_for_decl.
5442 (grokvardecl): Don't call mangle_decl.
5443 * except.c (nothrow_libfn_p): Look at DECL_NAME, not
5444 DECL_ASSEMBLER_NAME.
5445 * method.c (set_mangled_name_for_decl): Delete.
5446 * name-lookup.c (pushdecl): When a local extern shadows a
5447 file-scope declaration of the same object, give both DECLs the
5448 same DECL_UID.
5449 * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
5450 on DECL_ASSEMBLER_NAME.
5451
7c34ced1
RH
54522004-06-19 Richard Henderson <rth@redhat.com>
5453
5454 * cp-gimplify.c: Remove unnecessary prototypes.
5455 (cp_gimplify_stmt): Merge into ...
5456 (cp_gimplify_expr): ... here. Move to end of file. Handle
5457 stmts_are_full_exprs_p frobbing.
5458 * cp-tree.h (cp_gimplify_stmt): Remove.
5459 * pt.c (tsubst_expr): Merge prep_stmt and unify.
5460 * tree.c (init_tree): Don't set lang_gimplify_stmt.
5461
caf2523d
RH
54622004-06-18 Richard Henderson <rth@redhat.com>
5463
5464 PR c++/16034
5465 * semantics.c (begin_cond): New.
5466 (finish_cond): Rewrite to handle template DECL_STMTs specially.
5467 Assume that non-template decls go land before the conditional.
5468 (simplify_loop_decl_cond): Likewise.
84b8b0e0 5469 (begin_if_stmt, finish_if_stmt_cond, begin_while_stmt,
caf2523d
RH
5470 finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond,
5471 begin_switch_stmt, finish_switch_cond): Update to match.
5472
2692eb7d
JM
54732004-06-17 Jason Merrill <jason@redhat.com>
5474
5475 PR c++/16015
5476 * semantics.c (simplify_aggr_init_expr): Don't return the slot.
5477 (finish_stmt_expr_expr): Update type after conversions.
5478 (finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR.
5479 Handle void initializer.
5480 * tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void.
5481
2f0c006e
GK
54822004-06-17 Geoffrey Keating <geoffk@apple.com>
5483
5484 * class.c (build_clone): Don't call defer_fn, let mark_used do it.
5485 * cp-tree.h (defer_fn): Delete.
5486 * decl2.c (defer_fn): Delete.
5487 (finish_file): Simplify deferred_fns loops; check that
5488 only used inline functions get into deferred_fns.
5489 (mark_used): Inline previous contents of defer_fn.
5490
5882f0f3
RH
54912004-06-16 Richard Henderson <rth@redhat.com>
5492
5493 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
5494 (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
5495 * cxx-pretty-print.c (pp_cxx_function_definition): Move handling
5496 of CTOR_INITIALIZER ...
5497 (pp_cxx_statement): ... here.
5498 * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
5499 (finish_function): Use alloc_stmt_list to zap entire function.
5500 * parser.c (cp_parser_compound_statement): Update commentary.
5501 * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
5502 * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
5503 (finish_stmt_expr): Don't look through COMPOUND_STMT.
5504
18cf0da2
GK
55052004-06-16 Geoffrey Keating <geoffk@apple.com>
5506
5507 * pt.c (mark_decl_instantiated): Don't call defer_fn.
5508
8c161995
RH
55092004-06-16 Richard Henderson <rth@redhat.com>
5510
5511 * parser.c (cp_parser_labeled_statement): Update commentary.
5512 * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
5513 * tree.c (mark_local_for_remap_r): Likewise.
5514
e130a54b
RH
55152004-06-16 Richard Henderson <rth@redhat.com>
5516
5517 * parser.c (cp_parser_asm_definition): Update commentary.
5518 * pt.c (tsubst_expr): Use ASM_EXPR.
5519 * semantics.c (finish_asm_stmt): Likewise.
5520
9e14e18f
RH
55212004-06-16 Richard Henderson <rth@redhat.com>
5522
5523 * decl.c (finish_destructor_body): Use LABEL_EXPR.
5524 * parser.c (cp_parser_statement): Update commentary.
5525 * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
5526 * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
5527 * tree.c (mark_local_for_remap_r): Likewise.
5528
894ca2c9
RH
55292004-06-16 Richard Henderson <rth@redhat.com>
5530
5531 PR c++/16012
5532 * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
5533 statement in FOR_INIT_STMT for templates.
5534
325c3691
RH
55352004-06-15 Richard Henderson <rth@redhat.com>
5536
5537 * call.c (initialize_reference): Don't build CLEANUP_STMT here.
5538 * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
5539 (genericize_try_block): Use gimplify_stmt.
5540 (genericize_catch_block, genericize_eh_spec_block): Likewise.
5541 (cp_gimplify_init_expr): Remove STMT_EXPR special case.
5542 (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
5543 * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
5544 (cp_tree_chain_matters_p): Remove.
5545 * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
5546 (COMPOUND_STMT_BODY_BLOCK): New.
5547 (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
5548 (EXPR_STMT_STMT_EXPR_RESULT): New.
5549 (building_stmt_tree): Check cur_stmt_list.
5550 (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
5551 (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
5552 * decl.c (poplevel): Use pop_stmt_list for minding cleanups.
5553 (cp_finish_decl): Use push_cleanup.
5554 (start_function, finish_function): Use statement lists.
5555 (finish_stmt): Do nothing.
5556 * except.c (begin_eh_spec_block): Use statement lists.
5557 (check_handlers_1, check_handlers): Likewise.
5558 * init.c (construct_virtual_base): Don't add extra compound stmts.
5559 (build_vec_init): Likewise.
5560 * name-lookup.c (maybe_push_cleanup_level): Use statement lists.
5561 * name-lookup.h (struct cp_binding_level): Add statement_list.
5562 * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
5563 (cp_parser_labeled_statement, cp_parser_expression_statement,
5564 cp_parser_statement_seq_opt): Likewise.
5565 (cp_parser_compound_statement): Likewise. Take bool for try block.
5566 (cp_parser_selection_statement): Tidy if processing.
5567 (cp_parser_already_scoped_statement): Rewrite to do what it says.
5568 * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
5569 (tsubst_expr): Rewrite STMT_EXPR processing. Handle STATEMENT_LIST.
5570 Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
5571 * semantics.c (do_poplevel, do_pushlevel): Use statement lists.
5572 (finish_cond): New, rewritten from FINISH_COND.
5573 (simplify_loop_decl_cond): New.
5574 (finish_expr_stmt): Avoid nested EXPR_STMTs.
5575 (begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
5576 begin_else_clause, finish_else_clause, finish_if_stmt,
5577 begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
5578 begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
5579 finish_for_cond, finish_for_stmt, begin_switch_stmt,
5580 finish_switch_cond, finish_switch_stmt, begin_try_block,
5581 finish_try_block, finish_cleanup_try_block, finish_function_try_block,
5582 finish_handler_sequence, finish_function_handler_sequence,
5583 begin_handler, finish_handler_parms, finish_handler,
5584 begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
5585 using statement lists.
5586 (begin_compound_stmt): Replace has_no_scope argument with flags.
5587 Update all callers. Use statement lists.
5588 (finish_compound_stmt): Likewise.
5589 (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
5590 (current_scope_stmt_stack): Remove.
5591 (simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
5592 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
5593 Rewrite with statement lists.
5594
0173bb6f
AO
55952004-06-15 Alexandre Oliva <aoliva@redhat.com>
5596
5597 * parser.c: Change all assignments of c_lex_string_translate
5598 to true and false to 1 and 0.
5599 (cp_lexer_read_token): Convert type of the translated string.
5600 (cp_parser_skip_to_closing_parentheses): Preserve original
5601 value of c_lex_string_translate, and set it to -1 while
5602 running.
5603 (cp_parser_cache_group): Likewise.
5604 (cp_parser_cache_group_1): Renamed.
5605 (cp_parser_asm_operand_list): Remove redundant setting of
5606 c_lex_string_translate.
5607 (cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]:
5608 Handle chained strings.
5609
1f2c9ba5
AP
56102004-06-12 Andrew Pinski <apinski@apple.com>
5611
5612 PR c++/14639
5613 Revert:
5614 2004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
5615
5616 * cp-tree.h: Fix typo.
5617
5618 * cp-tree.h: Include cgraph.h
84b8b0e0 5619 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
1f2c9ba5
AP
5620 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
5621
eae29fe1
JM
56222004-06-12 Jason Merrill <jason@redhat.com>
5623
5624 PR tree-optimization/14107
5625 * decl.c (finish_function): Warn about no return in all functions.
5626
096f22f4
PB
56272004-06-15 Paolo Bonzini <bonzini@gnu.org>
5628
5629 * cp-tree.h (struct language_function): Remove cannot_inline.
5630 * decl.c (save_function_data): cannot_inline is no more.
5631 (cxx_push_function_context): Likewise.
5632 * decl2.c (start_objects, start_static_storage_duration_function):
5633 Reset DECL_INLINE, set DECL_UNINLINABLE.
5634
c566721f
GB
56352004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5636
5637 PR c++/15967
5638 * search.c (lookup_field): Propagate the ambiguity list.
5639 (lookup_fnfields): Likewise.
5640
4e0f4df5
GB
56412004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5642
5643 PR c++/15947
5644 * parser.c (cp_parser_template_name): Ctors/dtors never need a
5645 template keyword to disambiguate.
5646
7c82a41e
MM
56472004-06-14 Mark Mitchell <mark@codesourcery.com>
5648
5649 PR c++/15096
5650 * decl.c (grokdeclarator): Ignore pointer-to-members when
5651 computing template depth.
5652
5653 PR c++/14930
5654 * name-lookup.c (pushtag): Do not try to put class declarations in
5655 explicit specialization scopes.
5656
d29647a4
AP
56572004-06-11 Andrew Pinski <pinskia@physics.uc.edu>
5658
5659 * decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.
5660
ba18e4db
MM
56612004-06-11 Mark Mitchell <mark@codesourcery.com>
5662
5663 PR c++/15862
5664 * name-lookup.c (unqualified_namespace_lookup): Do not ignore type
5665 bindings for undeclared built-ins.
5666
da291c87
GB
56672004-06-11 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5668
5669 * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them
5670 appear at the correct location.
5671
5a57f1b2
JM
56722004-06-10 Jason Merrill <jason@redhat.com>
5673
5674 PR c++/15875
5675 Revert:
5676 2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5677 * init.c (build_offset_ref): Build SCOPE_REF with non-null
5678 TREE_TYPE for non-dependent names.
5679 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
5680 unknown_type_node as its TREE_TYPE.
5681 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
5682 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
5683 (dump_expr) <SCOPE_REF case>: Likewise.
5684
109e0040
MM
56852004-06-10 Mark Mitchell <mark@codesourcery.com>
5686
5687 PR c++/15227
5688 * parser.c (cp_parser_direct_declarator): Robustify.
5689
5690 PR c++/15877
5691 * pt.c (tsubst_copy): Use decl_constant_value on enumeration
5692 constants in non-dependent contexts.
5693
5694 PR c++/14211
5695 PR c++/15076
5696 * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
5697 necessary.
5698
dbb4e0c6
JJ
56992004-06-10 Jakub Jelinek <jakub@redhat.com>
5700
5701 PR c++/14791
5702 * decl.c (duplicate_decls): Handle fileptr_type_node arguments
5703 specially.
5704
0e5b7cfa
MM
57052004-06-09 Mark Mitchell <mark@codesourcery.com>
5706
5707 Revert:
5708 PR c++/15815
5709 2004-06-07 Mark Mitchell <mark@codesourcery.com>
5710 * lex.c (handle_pragma_interface): Deprecate.
5711 (handle_pragma_implementation): Likewise.
5712
b7115e7f
AP
57132004-06-09 Andrew Pinski <pinskia@physics.uc.edu>
5714
5715 * g++spec.c (lang_specific_driver): Remove check for -lm
5716 and -lmath when check it see if it was the math library.
5717
9221325f
GB
57182004-06-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5719
5720 PR c++/7841
5721 * parser.c (cp_parser_direct_declarator): Reject constructor named
5722 as qualified template-id.
5723
3743236e
MM
57242004-06-07 Mark Mitchell <mark@codesourcery.com>
5725
5726 PR c++/15815
5727 * lex.c (handle_pragma_interface): Deprecate.
5728 (handle_pragma_implementation): Likewise.
5729
d5a10cf0
MM
57302004-06-07 Mark Mitchell <mark@codesourcery.com>
5731
5732 PR c++/15766
5733 * parser.c (cp_parser_iteration_statement): Fix typo in error
5734 message.
5735
5736 PR c++/14777
5737 * pt.c (tsubst_default_argument): Do not defer access checks
5738 while substituting into the default argument.
5739
5740 PR c++/15554
5741 * pt.c (tsubst_copy): Do not try to substitute for an enumeration
84b8b0e0
ZW
5742 constant in a non-dependent context.
5743
d5a10cf0
MM
5744 PR c++/15057
5745 * except.c (build_throw): Ensure that temp_expr has been
5746 initialized.
5747
25a1a39e
RS
57482004-06-06 Roger Sayle <roger@eyesopen.com>
5749
5750 * cp/cp-tree.h (lvalue_or_else): Add function prototype.
5751
8a83a693
GB
57522004-06-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5753
5754 PR c++/15503
5755 * parser.c (cp_parser_mem_initializer_id): Gracefully reject
5756 'typename', and accept 'template'.
5757
f9d18955
AP
57582004-06-03 Andrew Pinski <pinskia@physics.uc.edu>
5759 Jan Hubicka <jh@suse.cz>
5760
5761 PR c++/14639
5762 * method.c (use_think): Do not mark thunk as referenced.
5763
0524c91d
MA
57642004-06-03 Matt Austern <austern@apple.com>
5765
5766 PR c++/15428
5767 * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
5768 is nonzero, and if we see a noninline definition of a key method,
5769 make the vtables nonweak.
84b8b0e0 5770
415c974c
MA
57712004-06-02 Matt Austern <austern@apple.com>
5772
5773 * cp-tree.h (instantiate_decl): new boolean parameter,
5774 undefined_ok. Current behavior is equivalent to its being 0.
5775 * decl2.c (mark_used): Add new argument when calling instantiate_decl
5776 * pt.c (mark_decl_instantiated): Unconditionally make
5777 instantiations explicit unconditionally
5778 (do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION,
5779 since mark_decl_instantiated now does it.
5780 (instantiate_class_member): New. Instantiate a member of an
5781 explicitly instantiated class template.
5782 (do_type_instantiation): Explicitly instantiate members of an
5783 explicitly instantiated class template.
5784 (instantiate_decl): if undefined_ok is nonzero, and if we're
5785 trying to explicitly instantiated a template with no definition,
5786 change it to an implicit instantiation.
5787 (instantiate_pending_templates): Add new argument to instantiate_decl.
5788 * tree.c (cp_cannot_inline_tree_fn): Likewise.
84b8b0e0 5789
d2d87e6d
AP
57902004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
5791
b9696fd4
AP
5792 * cp-tree.h: Fix typo.
5793
d2d87e6d
AP
5794 * cp-tree.h: Include cgraph.h
5795 (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
5796 TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
5797
a90f9bb1
JM
57982004-06-01 Jason Merrill <jason@redhat.com>
5799
5800 PR c++/15142
5801 * call.c (call_builtin_trap): Remove type parm.
5802 (convert_arg_to_ellipsis): Change a non-POD argument to integer type.
5803 (build_x_va_arg): Dereference a null pointer for a non-POD argument.
5804
43daf8ff
KL
58052004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
5806
5807 PR c++/13092
5808 * init.c (build_offset_ref): Build SCOPE_REF with non-null
5809 TREE_TYPE for non-dependent names.
5810 * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
5811 unknown_type_node as its TREE_TYPE.
5812 * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
5813 * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
5814 (dump_expr) <SCOPE_REF case>: Likewise.
5815
7a3ea201
RH
58162004-06-01 Richard Henderson <rth@redhat.com>
5817 Andrew Pinski <pinskia@physics.uc.edu>
5818
5819 * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
5820 * parser.c (struct cp_parser): Remove in_offsetof.
5821 (cp_parser_new): Don't set it.
5822 (cp_parser_unary_expression): Don't check it.
5823 (cp_parser_postfix_open_square_expression): Split out from ...
5824 (cp_parser_postfix_expression): ... here.
5825 (cp_parser_postfix_dot_deref_expression): Likewise.
5826 (cp_parser_builtin_offsetof): New.
5827 (cp_parser_primary_expression): Use it.
5828
07166901
GB
58292004-06-01 Giovanni Bajo <giovannibajo@gcc.gnu.org>
5830
5831 PR c++/14932
5832 * parser.c (cp_parser_postfix_expression): Allow subscript
5833 operator in offsetof.
5834
e17b3578
MM
58352004-05-31 Mark Mitchell <mark@codesourcery.com>
5836
5837 PR c++/15701
5838 * friend.c (add_friend): Do not try to perform access checks for
5839 functions from dependent classes.
5840
41fd3bac
GDR
58412004-05-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
5842
5843 * cxx-pretty-print.c (pp_cxx_colon_colon): Expor.
5844 (pp_cxx_begin_template_argument_list): Turn into a function.
5845 (pp_cxx_end_template_argument_list): Likewise.
5846 (pp_cxx_separate_with): Define.
5847 (pp_cxx_unqualified_id): Tidy.
5848 (pp_cxx_primary_expression): Likewise.
5849 (pp_cxx_postfix_expression): Likewise.
5850 (pp_cxx_expression): Likewise.
5851 (pp_cxx_simple_type_specifier): Likewise.
5852 (pp_cxx_type_specifier_seq): Likewise.
5853 (pp_cxx_parameter_declaration_clause): Likewise.
5854 (pp_cxx_exception_specification): Likewise.
5855 (pp_cxx_direct_declarator): Likewise.
5856 (pp_cxx_type_id): Likewise.
5857 * cxx-pretty-print.h (pp_cxx_whitespace): Export from
5858 cxx-pretty-print.c.
5859 (pp_cxx_left_paren): Likewise.
5860 (pp_cxx_right_paren): Likewise.
5861 (pp_cxx_left_brace): Likewise.
5862 (pp_cxx_right_brace): Likewise.
5863 (pp_cxx_left_bracket): Likewise.
5864 (pp_cxx_right_bracket): Likewise.
5865 (pp_cxx_dot): Likewise.
5866 (pp_cxx_identifier): Likewise.
5867 (pp_cxx_tree_identifier): Likewise.
5868 (pp_cxx_ampersand): New macro.
5869 (pp_cxx_star): Likewise.
5870 (pp_cxx_arrow): Likewise.
5871 (pp_cxx_semicolon): Likewise.
5872 (pp_cxx_complement): Likewise.
5873 (pp_cxx_begin_template_argument_list): Declaree.
5874 (pp_cxx_end_template_argument_list): Likewise.
5875 (pp_cxx_colon_colon): likewise.
5876
6661a85f
EB
58772004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr>
5878
5879 * parser.c (cp_parser_simple_type_specifier): Explicitly test
5880 against NULL_TREE.
5881
324f9dfb
KH
58822004-05-31 Kazu Hirata <kazu@cs.umass.edu>
5883
5884 * call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c,
5885 typeck.c: Fix comment formatting.
5886
3c79fa86
AP
58872004-05-30 Andrew Pinski <pinskia@physics.uc.edu>
5888
5889 * cp-lang.c (cp_expand_decl): Remove.
5890 (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.
5891
bd0a5aab
AJ
58922004-05-30 Andreas Jaeger <aj@suse.de>
5893
5894 * lang-specs.h: Add missing initializers for .ii.
5895
9e6f2e7d
AH
58962004-05-28 Aldy Hernandez <aldyh@redhat.com>
5897
5898 * decl.c (cp_make_fname_decl): Free return value from
5899 fname_as_string.
5900
c1cca8d4
MM
59012004-05-28 Mark Mitchell <mark@codesourcery.com>
5902
5903 PR c++/15083
5904 * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
5905 even in a templat.e
5906 * init.c (build_new): Likewise.
5907
5908 PR c++/15640
5909 * name-lookup.c (arg_assoc): Robustify.
5910
5911 PR c++/15471
5912 * typeck.c (unary_complex_lvalue): Use context_for_name_lookup
5913 when determining the scope to use for a pointer to member.
b3dd05b1
MM
5914 (lookup_anon_field): Give it external linkage.
5915 * cp-tree.h (lookup_anon_field): Declare it.
5916 * expr.c (cplus_expand_constant): Use it.
c1cca8d4 5917
0c1a1ecd
MM
59182004-05-28 Mark Mitchell <mark@codesourcery.com>
5919
5920 PR c++/14668
5921 * parser.c (cp_parser_simple_type_specifier): Call
5922 maybe_note_name_used_in_class.
5923
72e89c7c 59242004-05-28 Tom Marshall <tmarshall@real.com>
9fd8f60d
TM
5925
5926 PR c++/15214
5927 * class.c (finish_struct_1): Warn only if the dtor is non-private or
5928 the class has friends.
5929
81b4398d
AN
59302004-05-27 Adam Nemet <anemet@lnxw.com>
5931
5932 PR c++/12883
5933 * decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and
5934 TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type.
5935
bf277438
GK
59362004-05-24 Geoffrey Keating <geoffk@apple.com>
5937
5938 * method.c (implicitly_declare_fn): Don't call defer_fn; abort
5939 if it might be needed.
5940 * pt.c (mark_decl_instantiated): Only call defer_fn if
5941 the function actually needs processing in finish_file.
5942 * decl2.c (finish_file): Add check that elements in
5943 deferred_fns_used are really needed there. Remove unnecessary
5944 test of DECL_SAVED_TREE.
5945
4f4e53dd
PB
59462004-05-23 Paolo Bonzini <bonzini@gnu.org>
5947
5948 * Make-lang.in: No need to specify $(LIBCPP).
5949
15077df5
MM
59502004-05-23 Mark Mitchell <mark@codesourcery.com>
5951
5952 PR c++/15044
5953 * parser.c (cp_parser_class_head): Robustify.
5954
5955 PR c++/15317
5956 * parser.c (cp_parser_decl_specifier_seq): Correct error in
5957 comment.
5958 (cp_parser_constructor_declarator_p): Treat attributes
5959 as decl-specifiers.
5960
5961 PR c++/15329
5962 * typeck.c (build_unary_op): Do not attempt to resolve casts to
5963 base classes in templates.
5964
a30f62e0
MM
59652004-05-23 Mark Mitchell <mark@codesourcery.com>
5966
5967 PR c++/15165
5968 * pt.c (instantiate_template): Robustify.
5969
9ce1594a
MM
59702004-05-23 Mark Mitchell <mark@codesourcery.com>
5971
5972 PR c++/15025
5973 * decl.c (xref_tag): Issue errors about redeclaring template
5974 classes as non-template classes.
5975
f746161e
MM
59762004-05-23 Mark Mitchell <mark@codesourcery.com>
5977
5978 PR c++/14821
5979 * name-lookup.c (supplement_binding): Allow redefinitions of
5980 namespace aliases.
5981
5982 PR c++/14883
5983 * parser.c (cp_parser_template_argument): Robustify.
5984
4460cef2
GDR
59852004-05-23 Gabriel Dos Reis <gdr@integrable-solutions.net>
5986
5987 * class.c (alter_access): Use %E format specifier to print an
5988 identifier node. Avoid looking at the IDENTIFIER_POINTER.
5989 (push_lang_context): Likewise.
5990 * decl.c (lookup_label): Likewise.
5991 (grokdeclarator): Likewise.
5992 * parser.c (cp_parser_check_for_invalid_template_id): Likewise.
5993 * pt.c (do_type_instantiation): Likewise.
5994 * tree.c (handle_java_interface_attribute): Likewise.
5995 (handle_com_interface_attribute): Likewise.
5996 (handle_init_priority_attribute): Likewise.
5997
0deb916c
MM
59982004-05-22 Mark Mitchell <mark@codesourcery.com>
5999
6000 PR c++/15285
6001 PR c++/15299
6002 * pt.c (build_non_dependent_expr): Expand the set of tree nodes
6003 recognized as overloaded functions.
6004
1e2e9f54
MM
60052004-05-22 Mark Mitchell <mark@codesourcery.com>
6006
6007 PR c++/15507
6008 * class.c (layout_nonempty_base_or_field): Do not try to avoid
6009 layout conflicts for unions.
6010
6011 PR c++/15542
6012 * typeck.c (build_x_unary_op): Instantiate template class
6013 specializations before looking for "operator &".
6014
6015 PR c++/15427
6016 * typeck.c (complete_type): Layout non-dependent array types, even
6017 in templates.
6018
6019 PR c++/15287
6020 * typeck.c (build_unary_op): Do not optimize "&x[y]" when in a
6021 template.
6022
ae5cbc33
RS
60232004-05-22 Roger Sayle <roger@eyesopen.com>
6024
6025 * name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
6026 returning when TREE_TYPE is error_mark_node.
6027 * typeck.c (require_complete_type): Return error_mark_node if
6028 value's type is an error_mark_node.
6029
94632047 60302004-05-20 Andrew Pinski <pinskia@physics.uc.edu>
98d784a9
AP
6031
6032 * optimize.c (calls_setjmp_r): Remove.
6033 (calls_setjmp_p): Remove.
6034 * cp-tree.c (calls_setjmp_p): Remove.
6035 * decl.c (finish_function): Do not call calls_setjmp_p.
6036
bb9a388d
ZW
60372004-05-18 Zack Weinberg <zack@codesourcery.com>
6038
6039 * decl.c (cp_finish_decl): Use mark_decl_referenced.
6040 * decl2.c (maybe_make_one_only): Likewise.
6041 * method.c (use_thunk): Likewise.
6042
d7981fd9
JM
60432004-05-18 Jason Merrill <jason@redhat.com>
6044
6045 * class.c (build_base_path): Tidy a bit.
6046
15f8ac7f
GK
60472004-05-14 Geoffrey Keating <geoffk@apple.com>
6048
6049 * name-lookup.c (struct scope_binding): New.
6050 (EMPTY_SCOPE_BINDING): New.
6051 (lookup_using_namespace): Take a scope_binding instead of a
6052 cxx_binding.
6053 (qualified_lookup_using_namespace): Likewise.
6054 (cxx_binding_clear): Delete.
6055 (do_nonmember_using_decl): Use a scope_binding instead of a
6056 cxx_binding.
6057 (lookup_tag): Don't call select_decl.
6058 (ambiguous_decl): Don't return anything (and change callers to match).
6059 Take a scope_binding as the second parameter.
6060 (lookup_namespace_name): Use a scope_binding instead of a
6061 cxx_binding.
6062 (unqualified_namespace_lookup): Likewise.
6063 (lookup_qualified_name): Likewise.
6064 (select_decl): Take a scope_binding instead of a cxx_binding.
6065 Use macros rather than hand-coding tests for type-ness.
6066
eadf906f
DN
60672004-05-13 Diego Novillo <dnovillo@redhat.com>
6068
6069 * cp-gimplify.c: Rename from cp-simplify.c.
6070 * Make-lang.in, optimize.c: Update.
6071
6de9cd9a
DN
60722004-05-13 Diego Novillo <dnovillo@redhat.com>
6073
6074 Merge from tree-ssa-20020619-branch. See
6075 ChangeLog.tree-ssa for details.
6076
6077 * Make-lang.in, call.c, class.c, cp-lang.c, cp-tree.def,
6078 cp-tree.h, cvt.c, decl.c, decl2.c, error.c, except.c,
6079 expr.c, init.c, name-lookup.h, optimize.c, parser.c,
6080 pt.c, rtti.c, semantics.c, tree.c, typeck.c, typeck2.c:
6081 Merged.
6082 * cp-mudflap.c: New file.
6083 * cp-simplify.c:: New file.
6084
5015278a
GB
60852004-05-03 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6086
6087 PR c++/14389
6088 * decl2.c (check_classfn): For member templates, compare also the
6089 template parameters to match the declaration.
6090 * cp-tree.h: Adjust declaration of check_classfn.
6091 * decl.c (start_decl, grokfndecl): Adjust callers of check_classfn.
6092 * friend.c (do_friend): Likewise.
6093 * pt.c (tsubst_friend_function): Likewise.
6094
f8e7a389
ZW
60952004-05-01 Zack Weinberg <zack@codesourcery.com>
6096
6097 * decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
6098 Instead, dig into the representation type to find the array bound.
6099
00bfffa4
JM
61002004-04-30 Jason Merrill <jason@redhat.com>
6101
6102 Refer to base members using COMPONENT_REFs where possible.
6103 * class.c (build_simple_base_path): New fn.
6104 (build_base_path): Use it for non-virtual base references.
6105 (layout_class_type): Change base fields to their real type
6106 after layout is done.
6107 * cp-tree.h (IS_FAKE_BASE_TYPE): New macro.
6108 * cp-lang.c (cxx_get_alias_set): Use it.
6109
a692ad2e
KH
61102004-04-30 Kazu Hirata <kazu@cs.umass.edu>
6111
6112 * class.c, cp-tree.h, decl.c, decl2.c, pt.c, rtti.c: Fix
6113 comment typos.
6114
4424e0da
GB
61152004-04-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6116
6117 PR c++/15064
6118 * parser.c (cp_parser_postfix_expression): typeid operator cannot be
6119 used in integral constant expressions.
6120
92a62aad
MM
61212004-04-22 Mark Mitchell <mark@codesourcery.com>
6122
671cb993
MM
6123 * init.c (build_aggr_init): Fix accidental use of C99 construct in
6124 previous change.
f8e7a389 6125
92a62aad
MM
6126 * class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
6127 braced initializer.
6128 * cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
6129 * decl.c (reshape_init): Use it.
6130 * init.c (perform_member_init): Remove redundant condition.
6131 (build_aggr_init): Adjust to handle brace-enclosed initializers
6132 correctly.
6133 (expand_default_init): Use BRACE_ENCLOSED_INITIALIZER_P.
671cb993 6134
92a62aad
MM
6135 * parser.c (cp_parser_initializer_clause): Do not set
6136 TREE_HAS_CONSTRUCTOR on the initializer.
6137 * rtti.c (tinfo_base_init): Likewise.
6138 (generic_initializer): Likewise.
6139 (ptr_initializer): Likewise.
6140 (ptm_initializer): Likewise.
6141 (class_initializer): Likewise.
6142 (get_pseudo_ti_init): Likewise.
6143 * typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.
f8e7a389 6144
aa26a3f6
AM
61452004-04-22 Alan Modra <amodra@bigpond.net.au>
6146
6147 * name-lookup.c (anonymous_namespace_name): Make static.
6148
60c90ad1
RS
61492004-04-19 Roger Sayle <roger@eyesopen.com>
6150
6151 PR middle-end/14531
6152 * class.c (build_base_path): Call fold whilst building the NULL
6153 pointer check expression trees.
6154
245c3c04
BM
61552004-04-15 Bryce McKinlay <mckinlay@redhat.com>
6156
6157 * init.c (build_new_1): Don't use type size argument for Java
6158 _Jv_AllocObject call.
6159
c051cc7e
DS
61602004-04-09 Danny Smith <dannysmith@users.sourceforge.net>
6161
6162 * method.c (make_alias_for_thunk): Remove preprocessor guard on
6163 declaration and definition.
6164
4a77e08c
DS
61652004-04-08 Danny Smith <dannysmith@users.sourceforge.net>
6166
6167 PR c++/14808
6168 * method.c (use_thunk): Test TARGET_USE_LOCAL_THUNK_ALIAS_P rather
6169 than ASM_OUTPUT_DEF.
6170
a7485e93
JJ
61712004-04-08 Jakub Jelinek <jakub@redhat.com>
6172
6173 * decl2.c (mark_used): Don't segfault if cfun != NULL but
6174 current_function_decl == NULL.
6175
355f774d
NS
61762004-04-05 Nathan Sidwell <nathan@codesourcery.com>
6177
6178 PR c++/3518
6179 * pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer
6180 level.
6181
4f976745
RK
61822004-04-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6183
6184 * init.c (decl_constant_value): Don't look at DECL_INITIAL
6185 of PARM_DECL.
6186 * tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
6187 or TREE_SIDE_EFFECTS of a type.
6188
2e9ceb77
NS
61892004-04-02 Nathan Sidwell <nathan@codesourcery.com>
6190
6191 PR c++/14007
6192 * pt.c (check_cv_quals_for_unify): Correct logic for disallowed
6193 cv-qualifier unification.
6194 * tree.c (cp_build_qualified_type_real): Renable DR295 logic.
6195
18c6ada9
JH
61962004-04-02 Jan Hubicka <jh@suse.cz>
6197
6198 * cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define.
6199 * cp-tree.h (cp_update_decl_after_saving): Declare.
6200 * tree.c (cp_update_decl_after_saving): Define.
6201
e8632777
MM
62022004-04-01 Mark Mitchell <mark@codesourcery.com>
6203
6204 PR c++/14803
6205 * typeck.c (get_delta_difference): Call fold before returning the
6206 value.
6207
6407bc67
RH
62082004-04-01 Richard Henderson <rth@redhat.com>
6209
6210 PR c++/14804
6211 * decl.c (cp_finish_decl): Preserve TREE_READONLY more often.
6212 * typeck2.c (split_nonconstant_init): Clear TREE_READONLY.
6213
bb8b4ed6
MM
62142004-04-01 Mark Mitchell <mark@codesourcery.com>
6215
6216 PR c++/14810
6217 * name-lookup.c (maybe_push_cleanup_level): Robustify.
6218
a150de29
RK
62192004-04-01 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6220
6221 * class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly.
6222
8df83eae
RK
62232004-03-31 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6224
6225 * call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
6226 * class.c (check_bitfield_decl): Likewise.
6227 * cvt.c (type_promotes_to): Likewise.
6228 * decl.c (finish_enum): Likewise.
6229 * mangle.c (write_builtin_type): Likewise.
6230 * semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
6231 * typeck.c (type_after_usual_arithmetic_conversions): Likewise.
6232 (build_binary_op): Likewise.
6233
0ba13880
JH
62342004-03-31 Jan Hubicka <jh@suse.cz>
6235
6236 * tree.h (optimize_function): Kill prototype.
6237 * optimize.c (dump_function, optimize_function, dump_finction): Kill.
6238 * semantics.c (expand_body): Kill.
6239
c6671cbb
MM
62402004-03-30 Mark Mitchell <mark@codesourcery.com>
6241
6242 PR c++/14724
6243 * decl.c (start_decl_1): Do not decide whether or not to create a
6244 new cleanup level until after the type has been completed.
6245
6246 PR c++/14763
6247 * pt.c (tsubst_default_argument): Clear current_function_decl.
6248
1431042e
ZW
62492004-03-30 Zack Weinberg <zack@codesourcery.com>
6250
6251 * name-lookup.c, parser.c: Use new shorter form of GTY markers.
6252
93604b1a
ZW
62532004-03-29 Zack Weinberg <zack@codesourcery.com>
6254
6255 * error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
6256 is null, just print the literal name and return.
6257
666c27b9
KH
62582004-03-25 Kazu Hirata <kazu@cs.umass.edu>
6259
6260 * cxx-pretty-print.c: Fix comment typos.
6261
ef335eb8
KH
62622004-03-24 Kazu Hirata <kazu@cs.umass.edu>
6263
6264 * cxx-pretty-print.c, cxx-pretty-print.h, decl.h, friend.c:
6265 Update copyright.
6266
f18eca82
ZL
62672004-03-23 Ziemowit Laski <zlaski@apple.com>
6268
6269 * Make-lang.in (cp/mangle.o): Depend on $(TARGET_H).
6270 * mangle.c (write_type): Add call to 'mangle_fundamental_type'
6271 target hook.
6272
f75fbaf7
ZW
62732004-03-23 Zack Weinberg <zack@codesourcery.com>
6274
1b1d85bd 6275 PR 12267, 12391, 12560, 13129, 14114, 14133
f75fbaf7
ZW
6276 * cp-lang.c (c_reset_state): Delete.
6277 (push_file_scope, pop_file_scope): New stubs.
6278 * parser.c (c_parse_file): Call sorry() here if called more than once.
6279
22421b79
RK
62802004-03-23 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6281
6282 * typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
6283 for INTEGER_CST.
6284
7090f4b3
GDR
62852004-03-22 Gabriel Dos Reis <gdr@integrable-solutions.net>
6286
6287 * cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): Declare.
6288
b9b44fb9
GDR
62892004-03-21 Gabriel Dos Reis <gdr@integrable-solutions.net>
6290
6291 * error.c (enum pad): Remove.
6292 (dump_qualifiers): Likewise.
6293 (dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq.
6294 (dump_aggr_type): Likewise.
6295 (dump_type_suffix): Likewise.
6296 (dump_simple_decl): Likewise.
6297 (dump_function_decl): Likewise.
6298 (cv_to_string): Likewise.
f75fbaf7 6299 (dump_type_prefix): Likewise. Adjust return void.
b9b44fb9
GDR
6300 * cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to
6301 cxx_pretty_print.h.
6302 (pp_cxx_template_keyword_if_needed): Document.
6303 (pp_cxx_qualified_id): Document case FUNCTION_DECL. Tidy.
6304 (pp_cxx_expression): Handle NON_DEPENDENT_EXPR and
f75fbaf7 6305 MUST_NOT_THROW_EXPR.
b9b44fb9 6306
fc5fccde
MM
63072004-03-21 Mark Mitchell <mark@codesourcery.com>
6308
6309 PR c++/14616
6310 * decl.c (cp_finish_decl): Compute the size of arrays declared in
6311 templates, if their type is non-dependent.
6312
4546865e
MM
63132004-03-19 Mark Mitchell <mark@codesourcery.com>
6314
6315 * call.c (build_op_delete_call): Do not forget the placement
6316 arguments when iterating through mutiple delete operators.
6317
6318 * cp-tree.h (svaed_scope): Remove last_parms.
6319 (NEW_DELETE_OPNAME_P): New macro.
6320 (last_function_parms): Remove.
6321 (do_friend): Adjust prototype.
6322 * decl.c (grokparms): Return the PARM_DECLs directly, rather than
6323 using last_function_parms.
6324 (grokfndecl): Take the PARM_DECLs as an argument, rather than
6325 using last_function_parms.
6326 (grokdeclarator): Adjust accordingly. Do not form METHOD_TYPEs
6327 for class-specific operator new and operator delete.
6328 (grok_op_properties): Do not look for allocation functions with
6329 METHOD_TYPEs.
6330 (start_function): Use DECL_ARGUMENTS instead of
6331 last_function_parms.
6332 * decl.h (last_function_parms): Do not declare.
6333 * decl2.c (grokclassfn): Do not use last_function_parms.
6334 * friend.c (do_friend): Remove parmdecls parameter.
6335 * name-lookup.c (push_to_top_level): Do not save last_function_parms.
6336 (pop_from_top_level): Do not restore it.
6337 * pt.c (check_explicit_specialization): Do not adjust
6338 last_function_parms.
6339
6340 * name-lookup.c (do_local_using_decl): Create a local binding for
6341 types brought in via using declarations.
6342
6343 * name-lookup.c (lookup_arg_dependent): Handle block-scope
6344 function declarations correctly.
6345
6346 * semantics.c (finish_id_expression): Correct handling of
6347 conversion operators to dependent types.
6348
6349 * typeck.c (lookup_destructor): Allow the use of destructors from
6350 base classes.
f75fbaf7 6351
32f4f719
RK
63522004-03-19 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6353
6354 * cxx-pretty-print.c (pp_cxx_unqualified_id): Use
6355 TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS.
6356 * search.c (dfs_unuse_fields): Add two more TREE_CODES that mean
6357 the field is named TEMPLATE_TYPE_PARM_INDEX.
6358
d36d5600
GB
63592004-03-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6360
6361 PR c++/14545
6362 * parser.c (cp_parser_functional_cast): A cast to anything
6363 but integral or enumaration type is not an integral constant
6364 expression.
6365 * pt.c (value_dependent_expression_p): Handle cast expressions
6366 without operands (such as "int()").
6367
26bcf8fc
MM
63682004-03-18 Mark Mitchell <mark@codesourcery.com>
6369
6370 * semantics.c (finish_pseudo_destructor_expr): Allow differing
6371 cv-qualification between the type named by the
6372 pseudo-destructor-name and the object-type.
6373
6374 * search.c (accessible_base_p): Handle non-proper bases.
6375
6376 * name-lookup.c (do_nonmember_using_decl): If a using declaration
6377 refers to a single overloaded function, set the type of the
6378 function.
6379 * tree.c (lvalue_type): Simplify.
6380 * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
6381 unknown type.
6382 (build_unary_op): Handle OVERLOADs with known types.
6383
6384 * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
6385 function templates.
6386
6387 * parser.c (cp_parser_postfix_expression): Handle the use of
6388 "typename" in non-dependent contexts. Convert appropriately when
6389 when using a qualified name after "->" or ".".
6390
6391 * call.c (conditional_conversion): Honor the requirement that some
6392 conversions refer to the original object.
6393
9d363a56
MM
63942004-03-18 Mark Mitchell <mark@codesourcery.com>
6395
6396 * call.c (build_conditional_expr): Do not call force_rvalue for
6397 operands of void_type when the conditional expression itself has
6398 void type.
6399 * name-lookup.c (pushdecl): Don't consider a declaration of a
6400 function named "main" to be an overload of a type named "main".
6401 * parser.c (cp_parser_template_name): Perform name lookup when the
6402 template name is proceeded by "template" if the qualifying scope
6403 is non-dependent.
6404 * typeck.c (composite_pointer_type_r): Correctly handle
6405 pointer-to-member types.
6406 (build_const_cast): Likewise.
6407
eb34af89
RK
64082004-03-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6409
a2982c1b
RK
6410 * cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments.
6411 * cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check.
6412 (DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise.
6413 (KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise.
6414 (TYPENAME_TYPE_FULLNAME): Add check and use type.values.
6415 (TYPEOF_TYPE_EXPR): New macro.
eb34af89
RK
6416 * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
6417 * error.c (dump_type): Use TYPEOF_TYPE_EXPR.
6418 * pt.c (tsubst): Likewise.
6419 * semantics.c (finish_typeof): Likewise.
6420 * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
6421 and TEMPLATE_TYPE_PARM.
6422 * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
6423 (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
6424
ec835fb2
MM
64252004-03-16 Mark Mitchell <mark@codesourcery.com>
6426
6427 PR c++/14586
6428 * cp-tree.h (build_new_op): Change prototype.
6429 (build_x_binary_op): Likewise.
6430 * call.c (build_new_op): Add overloaded_p parameter.
6431 * decl2.c (grok_array_decl): Adjust call to build_new_op.
6432 * parser.c (cp_parser_binary_expression): Note that uses of
6433 overloaded operators prevents an expression from being considered
6434 an integral constant.
6435 * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
6436 build_x_binary_op.
6437 * semantics.c (finish_call_expr): Likewise.
6438 * typeck.c (rationalize_conditional_expr): Likewise.
6439 (build_x_indirect_ref): Likewise.
6440 (build_x_binary_op): Likewise.
6441 (build_x_unary_op): Likewise.
6442 (build_x_compound_expr): Likewise.
6443 (build_modify_expr): Likewise.
6444 * typeck2.c (build_x_arrow): Likewise.
6445
ca2b05ba
KH
64462004-03-15 Kazu Hirata <kazu@cs.umass.edu>
6447
6448 * cp-lang.c, ptree.c: Update copyright.
6449
625cbf93
MM
64502004-03-13 Mark Mitchell <mark@codesourcery.com>
6451
6452 PR c++/14550
6453 * parser.c (cp_parser_non_integral_constant_expression): Encode
6454 more of the idiom that surrounded calls to this function within
6455 the function itself
6456 (cp_parser_primary_expression): Adjust accordingly.
6457 (cp_parser_postfix_expression): Likewise.
6458 (cp_parser_unary_expression): Likewise.
6459 (cp_parser_cast_expression): Likewise.
6460 (cp_parser_assignment_expression): Likewise.
6461 (cp_parser_expression): Likewise.
6462 (cp_parser_new_expression): Note that new-expressions are not
6463 allowed in integral constant expressions.
6464 (cp_parser_delete_expression): Likewise.
6465
4746cf84
MA
64662004-03-12 Matt Austern <austern@apple.com>
6467
6468 * decl2.c (maybe_make_one_only): Look at
6469 TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
6470 to make an explicit instantiation weak.
6471 * method.c (use_thunk): Make sure we call comdat_linkage
6472 when appropriate.
6473 * pt.c (do_type_instantiation): On systems where weak symbols
6474 don't go in a static archive's TOC, explicit instantiation of a
6475 class must imply *explicit* instantiation of its memeber.
f75fbaf7 6476
878cbb73
KH
64772004-03-11 Kazu Hirata <kazu@cs.umass.edu>
6478
6479 * call.c, cp-tree.h, pt.c: Fix comment typos.
6480
e46e9f82
MM
64812004-03-10 Mark Mitchell <mark@codesourcery.com>
6482
6483 PR c++/14510
6484 * decl.c (xref_tag): Disregard non-type declarations when
f75fbaf7 6485 looking up a tagged type.
e46e9f82 6486
c497b976
NS
64872004-03-09 Nathan Sidwell <nathan@codesourcery.com>
6488
6489 PR c++/14397
6490 * call.c (convert_like_real): Build a const qualified temporary,
6491 when testing ctor access.
6492
205b4f1d
MM
64932004-03-09 Mark Mitchell <mark@codesourcery.com>
6494
6495 * call.c (initialize_reference): Fix typo.
6496
0da99d4e
GB
64972004-03-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6498
6499 PR c++/14409
6500 * pt.c (determine_specialization): For member templates, match also
6501 constness.
6502
6503 PR c++/14448
6504 * parser.c (cp_parser_initializer_clause): Fold initializer if it is
6505 non-dependent.
6506 * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.
6507
65196e37
MM
65082004-03-09 Mark Mitchell <mark@codesourcery.com>
6509
6510 PR c++/14230
6511 * call.c (initialize_reference): Handle initializers that are
6512 class-member access expressions applies to rvalues.
6513
62d99768
MM
65142004-03-09 Mark Mitchell <mark@codesourcery.com>
6515
6516 PR c++/14432
6517 * name-lookup.c (supplement_binding): Ignore functions that are
6518 marked DECL_ANTICIPATED.
6519
58ec3cc5
MM
65202004-03-08 Mark Mitchell <mark@codesourcery.com>
6521
6522 PR c++/14401
6523 * class.c (check_field_decls): Complain about non-static data
6524 members of reference type in unions. Propagate
6525 CLASSTYPE_REF_FIELDS_NEED_INIT and
6526 CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
6527 data members.
6528 * init.c (perform_member_init): Complain about mbmers with const
6529 type that are not explicitly initialized.
6530
65312004-03-08 Mark Mitchell <mark@codesourcery.com>
6532
6533 * class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS.
6534 * cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro.
6535 (lang_identifier): Remove implicit_decl and error_locus.
6536 (IDENTIFIER_IMPLICIT_DECL): Remove.
6537 (SET_IDENTIFIER_IMPLICTI_DECL): Likewise.
6538 (IDENTIFIER_ERROR_LOCUS): Likewise.
6539 (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
6540 (TYPE_ASSEMBLER_NAME_STRING): Likewise.
6541 (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
6542 (implicitly_declare): Remove.
6543 * decl.c (warn_extern_redeclared_static): Remove check of
6544 IDENTIFIER_IMPLICIT_DECL.
6545 (duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS.
6546 (implicitly_declare): Remove.
6547 (grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS.
6548 (start_function): Don't check IDENTIFIER_IMPLICIT_DECL.
6549 (start_method): Don't check IDENTIFIER_ERROR_LOCUS.
6550 * lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL
6551 in the innermost scope, rather than at namespace scope.
6552 * name-lookup.c (push_local_binding): Give it external linkage.
6553 (pushdecl): Remove dead code.
6554 * name-lookup.h (push_local_binding): Declare it.
6555 * ptree.c (cxx_print_identifier): Don't print
6556 IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS.
6557 * search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P,
6558 not IDENTIFIER_ERROR_LOCUS.
6559 * typeck.c (build_function_call): Remove dead code.
6560
38b305d0
JM
65612004-03-08 Jason Merrill <jason@redhat.com>
6562
6563 PR c++/13170
6564 * decl.c (xref_tag): Remove attribute handling.
6565 * cp-tree.h: Adjust prototype.
6566 * decl.c, parser.c, rtti.c: Adjust callers.
6567 * parser.c (cp_parser_class_head): Pass back attributes in the
6568 class head.
6569 (cp_parser_class_specifier): Adjust.
6570
97b6d55b
MA
65712004-03-08 Matt Austern <austern@apple.com>
6572
6573 PR debug/14079
6574 * name-lookup.c (add_decl_to_level): Add extern variables, as well
6575 as static, to static_decls array.
f75fbaf7 6576
fd917e0d
JM
65772004-03-05 Jason Merrill <jason@redhat.com>
6578
6579 * tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/.
6580
9fc444cc
GK
65812004-03-04 Geoffrey Keating <geoffk@apple.com>
6582
6583 * decl.c (grokfndecl): Update old incorrect comment.
6584 (grokvardecl): Diagnose C++ variables of type with no linkage.
6585
9b7be7b5
MM
65862004-03-01 Mark Mitchell <mark@codesourcery.com>
6587
6588 PR c++/14369
6589 * pt.c (build_non_dependent_expr): Do not create a
6590 NON_DEPENDENT_EXPR for a THROW_EXPR.
6591
1c09c5e5
GDR
65922004-03-01 Gabriel Dos Reis <gdr@integrable-solutions.net>
6593
6594 PR c++/14369
6595 * error.c (dump_expr): Handle THROW_EXPR.
6596
676e33ca
MM
65972004-03-01 Mark Mitchell <mark@codesourcery.com>
6598
6599 PR c++/14360
6600 * parser.c (cp_parser_postfix_expression): Do not perform Koenig
6601 lookup if ordinary name-lookup finds a non-function.
6602 * pt.c (tsubst_copy_and_build): Likewise.
6603
6604 PR c++/14361
6605 * parser.c (cp_parser_late_parsing_default_args): Check that there
6606 are no extra tokens after the end of the default-argument
6607 expression.
f75fbaf7 6608
ab73670a
MM
66092004-03-01 Mark Mitchell <mark@codesourcery.com>
6610
6611 PR c++/14324
6612 * lex.c (retrofit_lang_decl): Treat entities with no linkage as
6613 having C++ linkage for name-mangling purposes.
6614
6615 PR c++/14260
6616 * parser.c (cp_parser_direct_declarator): Recognize constructor
6617 declarators that use a template-id to name the class being
6618 constructed.
6619
6620 PR c++/14337
6621 * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
6622 (tsubst_expr): Do not call tsubst_copy, even when
f75fbaf7 6623 processing_template_decl.
ab73670a 6624
9bf793f9
JL
66252004-03-01 Jeff Law <law@redhat.com>
6626
6627 * init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
6628 the proper type.
6629
91b004e5
MM
66302004-02-29 Mark Mitchell <mark@codesourcery.com>
6631
6632 PR c++/14138
6633 * name-lookup.h (push_scope): Change prototype.
6634 * name-lookup.c (push_scope): Do not reenter the current class
6635 scope.
6636 * decl.c (grokfndecl): Check return code from push_scope before
6637 calling pop_scope.
6638 * decl2.c (check_classfn): Likewise.
6639 * parser.c (cp_parser_conversion_function_id): Likewise.
6640 (cp_parser_init_declarator): Likewise.
6641 (cp_parser_direct_declarator): Likewise.
6642 (cp_parser_class_specifier): Likewise.
6643 (cp_parser_class_head): Likewise.
6644 (cp_parser_lookup_name): Likewise.
6645 (cp_parser_constructor_declarator_p): Likewise.
6646 * pt.c (instantiate_class_template): Likewise.
6647 (resolve_typename_type): Likewise.
6648
39876352
MM
66492004-02-29 Mark Mitchell <mark@codesourcery.com>
6650
719f407a
MM
6651 PR c++/14267
6652 * typeck.c (build_modify_expr): Remove more of the cast-as-lvalue
6653 extension.
6654
39876352
MM
6655 PR debug/12103
6656 * class.c (update_vtable_entry_for_fn): Do not go through
6657 covariance machinery if the type returned by an overrider is the
6658 same as the original.
6659
4ee31f1e
KH
66602004-02-29 Kazu Hirata <kazu@cs.umass.edu>
6661
6662 * call.c: Fix a comment typo.
6663
b1009a5d
ZL
66642004-02-27 Ziemowit Laski <zlaski@apple.com>
6665
6666 * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.
6667
4d5fe289
MM
66682004-02-26 Mark Mitchell <mark@codesourcery.com>
6669
6670 PR c++/14278
6671 * parser.c (cp_parser_parameter_declaration_list): Commit
6672 to fewer tentative parses.
6673
6bf92cb6
GB
66742004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6675
6676 PR c++/14284
6677 * pt.c (dependent_type_p_r): A template template parameter is a
6678 dependent type.
6679
3cc8f587
GB
66802004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6681
6682 PR c++/14246
6683 * mangle.c (write_template_arg_literal): Don't rely on identity for
6684 boolean constants.
6685
134084ff
JM
66862004-02-24 Jason Merrill <jason@redhat.com>
6687
6688 * tree.c (build_exception_variant): Use check_qualified_type.
6689
3521b33c
ZW
66902004-02-23 Zack Weinberg <zack@codesourcery.com>
6691 Kazu Hirata <kazu@cs.umass.edu>
6692
6693 * decl.c (cxx_init_decl_processing): Don't check
6694 flag_writable_strings.
6695
a2f1f4c3
AP
66962004-02-23 Andrew Pinski <pinskia@physics.uc.edu>
6697
6698 PR c++/14156
6699 * typeck.c (maybe_warn_about_returning_address_of_location):
6700 Change check for VAR_DECL to use DECL_P instead.
6701
29f4ceab
GB
67022004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6703
6704 PR c++/14250
6705 * cvt.c (build_expr_type_conversion): Type must be complete before
6706 looking up for conversions.
6707
146d3c99
GB
67082004-02-23 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6709
6710 PR c++/14143
f75fbaf7 6711 * name-lookup.c (arg_assoc_class): Don't look into template
146d3c99
GB
6712 arguments if it is not a primary template.
6713
7a3e01c4
JDA
67142004-02-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
6715
146d3c99 6716 PR c++/12007
7a3e01c4
JDA
6717 * method.c (use_thunk): Always clone function argument tree.
6718
c0694c4b
MM
67192004-02-20 Mark Mitchell <mark@codesourcery.com>
6720
6721 PR c++/14199
6722 * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
6723
6724 PR c++/14173
6725 * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
6726 for all type variants.
6727
a6567a0f
MM
67282004-02-19 Mark Mitchell <mark@codesourcery.com>
6729
c0694c4b
MM
6730 PR c++/13927
6731 * decl.c (duplicate_decls): Return error_mark_node for invalid
6732 redeclarations.
6733 * name-lookup.c (push_namespace): Ignore the return value from
6734 pushdecl.
6735 * pt.c (push_template_decl_real): Robustify.
6736
a6567a0f
MM
6737 PR c++/14186
6738 * name-lookup.c (push_class_level_binding): Do not complain about
6739 adding a binding for a member whose name is the same as the
6740 enclosing class if the member is located in a base class of the
6741 current class.
6742
063e900f
GB
67432004-02-19 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6744
6745 PR c++/14181
f75fbaf7 6746 * parser.c (cp_parser_new_expression): Parse an ill-formed
063e900f
GB
6747 direct-new-declarator after a parenthesized type-id to emit good
6748 diagnostic.
6749
aa335b76
KH
67502004-02-18 Kazu Hirata <kazu@cs.umass.edu>
6751
6752 * cp-tree.def, cvt.c: Update copyright.
6753
57782ad8
MM
67542004-02-17 Mark Mitchell <mark@codesourcery.com>
6755
6756 PR c++/11326
6757 * cp-tree.h (abi_version_at_least): Remove.
6758 * mangle.c: Include flags.h.
6759
d2f2c87b
MM
67602004-02-15 Mark Mitchell <mark@codesourcery.com>
6761
6762 PR c++/13971
6763 * call.c (build_conditional_expr): Handle conversions between
6764 class types which result in differently cv-qualified type
6765 variants.
6766
6767 PR c++/14086
6768 * class.c (delete_duplicate_fields_1): Remove.
6769 (delete_duplicate_fields): Likewise.
6770 (finish_struct_anon): Remove check for members with the same name
6771 as their enclosing class.
6772 (check_field_decls): Do not call duplicate_fields.
6773 * decl.c (grokdeclarator): Remove check for static data members
6774 with the same name as their enclosing class.
6775 * name-lookup.c (push_class_level_binding): Check for members with
6776 the same name as their enclosing class.
6777
bf3e8283
GDR
67782004-02-15 Gabriel Dos Reis <gdr@integrable-solutions.net>
6779
6780 PR c++/14085
6781 * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
6782
28ba38e3
KL
67832004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
6784
6785 PR c++/13635
6786 * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
6787 has full set of arguments.
6788
7162281a
GB
67892004-02-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6790
6791 PR c++/13927
6792 * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
6793
41dffe62
MM
67942004-02-13 Mark Mitchell <mark@codesourcery.com>
6795
0e8c9b28
MM
6796 PR c++/14122
6797 * cp-tree.h (delete_sanity): Change prototype.
6798 * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
6799 Remove dead code. Adjust code to warn about deleting an array.
6800 * typekc.c (decay_conversion): Use build_address and build_nop.
6801
6802 PR c++/14108
6803 * search.c (accessible_p): Do not check access in thunks.
6804
41dffe62
MM
6805 PR c++/14083
6806 * call.c (build_conditional_expr): Call force_rvalue on the
6807 non-void operand in the case that one result is a throw-expression
6808 and the other is not.
6809
d6e57462
ILT
68102004-02-13 Ian Lance Taylor <ian@wasabisystems.com>
6811
6812 PR c++/9851
6813 * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
6814 the type name and look ahead for ::~, and bail out early with a
6815 better error message if the parse is going to fail.
6816
5bd61841
MM
68172004-02-12 Mark Mitchell <mark@codesourcery.com>
6818
6819 * call.c (conversion_kind): New type.
6820 (conversion_rank): Likewise.
6821 (conversion): Likewise.
6822 (CONVERSION_RANK): New macro.
6823 (conversion_obstack): New variable.
6824 (obstack_initialized): Likewise.
6825 (z_candidate): Change type of convs and second_conv.
6826 (candidate_warning): New type.
6827 (IDENTITY_RANK): Remove.
6828 (EXACT_RANK): Likewise.
6829 (PROMO_RANK): Likewise.
6830 (STD_RANK): Likewise.
6831 (PBOOL_RANK): Likewise.
6832 (USER_RANK): Likewise.
6833 (ELLIPSIS_RANK): Likewise.
6834 (BAD_RANK): Likewise.
6835 (ICS_RANK): Likewise.
6836 (ICS_STD_RANK): Likewise.
6837 (ICS_USER_FLAG): Likewise.
6838 (ICS_ELLIPSIS_FLAG): Likewise.
6839 (ICS_THIS_FLAG): Likewise.
6840 (ICS_BAD_FLAG): Likewise.
6841 (NEED_TEMPORARY_P): Likewise.
6842 (CHECK_COPY_CONSTRUCTOR_P): Likewise.
6843 (USER_CONV_CAND): Likewise.
6844 (USER_CONV_FN): Likewise.
6845 (conversion_obstack_alloc): New function.
6846 (alloc_conversion): Likewise.
6847 (validate_conversion_obstack): Likewise.
6848 (alloc_conversions): Likewise.
6849 (build_conv): Adjust to deal with new conversion data structures.
6850 (build_identity_conv): New function.
6851 (build_ambiguous_conv): Likewise.
6852 (standard_conversion): Adjust to deal with new conversion data
6853 structures.
6854 (convert_class_to_reference): Likewise.
6855 (direct_reference_binding): Likewise.
6856 (reference_binding): Likewise.
6857 (implicit_conversion): Likewise.
6858 (add_candidate): Likewise.
6859 (add_function_candidate): Likewise.
6860 (add_conv_candidate): Likewise.
6861 (build_builtin_candidate): Likewise.
6862 (print_z_candidate): Likewise.
6863 (merge_conversion_sequences): Likewise.
6864 (build_user_type_conversion_1): Likewise.
6865 (build_user_type_conversion): Likewise.
6866 (build_new_function_call): Likewise.
6867 (build_object_call): Likewise.
6868 (conditional_conversion): Likewise.
6869 (build_conditional_expr): Likewise.
6870 (build_new_op): Likewise.
6871 (build_op_delete_call): Likewise.
6872 (convert_like_real): Likewise.
6873 (build_over_call): Likewise.
6874 (build_new_method_call): Likewise.
6875 (is_subseq): Likewise.
6876 (maybe_handle_implicit_object): Likewise.
6877 (maybe_handle_ref_bind): Likewise.
6878 (compare_ics): Likewise.
6879 (source_type): Likewise.
6880 (add_warning): Likewise.
6881 (joust): Likewise.
6882 (can_convert_arg): Likewise.
6883 (can_convert_arg_bad): Likewise.
6884 (perform_implicit_conversion): Likewise.
6885 (perform_direct_initialization_if_possible): Likewise.
6886 (initialize_reference): Likewise.
6887 * cp-lang.c (cp_tree_size): Do not handle WRAPPER.
6888 * cp-tree.def (WRAPPER): Likewise.
6889 (IDENTITY_CONV): Remove.
6890 (LVALUE_CONV): Likewise.
6891 (QUAL_CONV): Likewise.
6892 (STD_CONV): Likewise.
6893 (PTR_CONV): Likewise.
6894 (PMEM_CONV): Likewise.
6895 (BASE_CONV): Likewise.
6896 (REF_BIND): Likewise.
6897 (USER_CONV): Likewise.
6898 (AMBIG_CONV): Likewise.
6899 (RVALUE_CONV): Likewise.
6900 * cp-tree.h (tree_wrapper): Remove.
6901 (WRAPPER_ZC): Remove.
6902 (lang_tree_node): Remove wrapper.
6903 (LOOKUP_SPECULATIVELY): Remove.
6904 (build_op_delete_call): Adjust prototype.
6905 (validate_conversion_obstack): Declare.
6906 (build_zc_wrapper): Remove.
6907 * cvt.c (convert_to_reference): Remove dead code.
6908 (ocp_convert): Likewise.
6909 * decl.c (redeclaration_error_message): Correct handling of
6910 templates.
6911 (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
6912 (cp_tree_node_structure): Remove WRAPPER case.
6913 * decl2.c (finish_file): Call validate_conversion_obstack.
6914 * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
6915 (build_op_delete_call): Likewise.
6916 (build_x_delete): Likewise.
6917 (build_delete): Adjust call to build_op_delete_call.
6918 * pt.c (tsubst_friend_declaration): Adjust code to determine
6919 whether or not a friend template is a definition.
6920 (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
6921 * tree.c (build_zc_wrapper): Remove.
f75fbaf7 6922
21d13d83
ZW
69232004-02-12 Zack Weinberg <zack@codesourcery.com>
6924
6925 * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
6926 * cp-tree.h: Don't declare cxx_builtin_type_decls.
6927 * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
6928 (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
6929
3d2dbfbb
MM
69302004-02-10 Mark Mitchell <mark@codesourcery.com>
6931
6932 * typeck.c (lookup_destructor): Fix typo in error message.
6933
77077b39
KH
69342004-02-09 Kazu Hirata <kazu@cs.umass.edu>
6935
6936 * call.c, parser.c, tree.c: Fix comment typos.
6937
a6f78652
ZW
69382004-02-07 Zack Weinberg <zack@codesourcery.com>
6939
6940 Bug 13856
6941 * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
6942 * decl.c (duplicate_decls, start_function): Likewise.
6943
69442004-02-07 Zack Weinberg <zack@codesourcery.com>
6945
6946 * name-lookup.c (pushdecl): Issue shadow warnings directly.
6947 * parser.c (free_parser_stacks): Delete.
6948
0ea5865c
KH
69492004-02-07 Kazu Hirata <kazu@cs.umass.edu>
6950
6951 * rtti.c: Update copyright.
6952
94632047 69532004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2500bbb6
GB
6954
6955 PR c++/14033
6956 * decl.c (require_complete_types_for_parms): Do not insert
6957 error_mark_node in the parameter list.
6958
94632047 69592004-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
6c0cc713
GB
6960
6961 PR c++/14028
6962 * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
6963 error when terminator can not be found.
6964
02ba6b22
KC
69652004-02-05 Kelley Cook <kcook@gcc.gnu.org>
6966
6967 Make-lang.in (po-generated): Delete.
6968
136e64db
KH
69692004-02-05 Kazu Hirata <kazu@cs.umass.edu>
6970
6971 * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
6972 targetm.calls.promote_prototypes.
6973
839ee4bc
RO
69742004-02-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
6975
6976 PR middle-end/13750
6977 Revert:
6978 2004-01-15 Geoffrey Keating <geoffk@apple.com>
6979 PR pch/13361
6980 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
6981 (handle_pragma_implementation): Likewise.
6982
fca00ffb
MM
69832004-02-05 Mark Mitchell <mark@codesourcery.com>
6984
6985 PR c++/13714
6986 * typeck.c (lookup_destructor): Tweak error message.
6987
6039a93d
JH
69882004-02-05 Jan Hubicka <jh@suse.cz>
6989
6990 * tree.c (cp_cannot_inline_tree_fn): Allow inlining of comdat
6991 functions.
6992
94632047 69932004-02-05 Giovanni Bajo <giovannibajo@gcc.gnu.org>
2097b5f2
GB
6994
6995 PR c++/14008
a6f78652 6996 * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
2097b5f2
GB
6997 code, only emits the diagnostic now. Added lookup of the identifier
6998 and support for qualified ids.
6999 (cp_parser_parse_and_diagnose_invalid_type_name): New function.
7000 Parse an (invalid) type name as id-expression within a declarator.
7001 (cp_parser_simple_declaration): Use it.
7002 (cp_parser_member_declaration): Likewise.
7003 (cp_parser_make_typename_type): New function. Handle errors through
7004 cp_parser_diagnose_invalid_typename.
7005 (cp_parser_elaborated_type_specifier): Use it.
7006
f583e452
MM
70072004-02-04 Mark Mitchell <mark@codesourcery.com>
7008
7009 PR c++/13932
7010 * call.c (convert_like_real): Use "converting" rather than
7011 "argument" as the descriptive keyword to
7012 dubious_conversion_warnings.
7013 * typeck.c (convert_for_assignment): Do not call
7014 dubious_conversion_warnings.
7015
b1e5b86c
GB
70162004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7017
7018 PR c++/13086
7019 * init.c (build_delete): Emit a more informative error message in
7020 case of an incomplete type, and on the correct source line.
7021
e146f815
KH
70222004-02-04 Kazu Hirata <kazu@cs.umass.edu>
7023
7024 * error.c, search.c: Update copyright.
7025
6f3d0d2f
MM
70262004-02-04 Mark Mitchell <mark@codesourcery.com>
7027
7028 PR c++/9941
7029 * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
7030 linkage for the typeinfo name string.
7031
9baa27a9
MM
70322004-02-04 Mark Mitchell <mark@codesourcery.com>
7033
7034 PR c++/13969
7035 * cp-tree.h (fold_non_dependent_expr): New function.
7036 * parser.c (cp_parser_fold_non_dependent_expr): Remove.
7037 (cp_parser_template_argument): Use fold_non_dependent_expr.
7038 (cp_parser_direct_declarator): Likewise.
7039 * pt.c (fold_non_dependent_expr): New function.
7040 (convert_nontype_argument): Use it.
7041 (tsubst_qualified_id): Simplify.
7042 (tsubst_copy_and_build): Likewise.
7043
dd292d0a
MM
70442004-02-04 Mark Mitchell <mark@codesourcery.com>
7045
7046 * decl.c (cxx_push_function_context): Do not set
7047 current_function_is_thunk.
7048 * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
7049 actual function.
7050
94632047 70512004-02-04 Giovanni Bajo <giovannibajo@gcc.gnu.org>
baa49730 7052
18d0ecb6 7053 PR c++/13997
baa49730
GB
7054 * pt.c (more_specialized_class): Increase processing_template_decl
7055 while partial ordering.
7056
18f5be99
MM
70572004-02-03 Mark Mitchell <mark@codesourcery.com>
7058
7059 PR c++/13925
7060 * decl.c (start_function): Do not call pushdecl for any
7061 instantiation or specialization of a primary template.
7062
3c398f34
MM
70632004-02-03 Mark Mitchell <mark@codesourcery.com>
7064
4bfb8bba
MM
7065 PR c++/13950
7066 * parser.c (cp_parser_class_name): Robustify.
7067
7068 PR c++/13970
7069 * parser.c (cp_parser_cache_group): Do not consume the EOF token.
7070
3c398f34
MM
7071 PR c++/14002
7072 * semantics.c (finish_id_expression): Do not return an
7073 IDENTIFIER_NODE when lookup finds a PARM_DECL.
7074
5a98fa7b
MM
70752004-02-03 Mark Mitchell <mark@codesourcery.com>
7076
7077 PR c++/13978
7078 * pt.c (build_non_dependent_expr): Do not build
7079 NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
7080
7081 PR c++/13968
7082 * semantics.c (finish_id_expression): Do not return an
7083 IDENTIFIER_NODE when lookup finds a VAR_DECL.
7084
7085 PR c++/13975
7086 * parser.c (cp_parser_simple_declaration): When skipping to the
7087 end of the statement swallow the terminating semicolon.
7088
e9525111
MM
70892004-02-02 Mark Mitchell <mark@codesourcery.com>
7090
7091 PR c++/13113
7092 * init.c (build_offset_ref): Improve error recovery for invalid
7093 uses of non-static member functions.
7094
7095 PR c++/13854
7096 * cp-tree.h (cp_build_type_attribute_variant): New function.
7097 * class.c (build_clone): Use cp_build_type_attribute_variant.
7098 * decl.c (duplicate_decls): Likewise.
7099 * pt.c (copy_default_args_to_explicit_spec): Likewise.
7100 (tsubst_function_type): Likewise.
7101 * tree.c (build_exception_variant): Check attributes before
7102 concluding that two types are the same.
7103 (cp_build_type-attribute_variant): New method.
7104 * typeck.c (merge_types): Use cp_build_type_attribute_variant.
7105
7106 PR c++/13907
7107 * call.c (convert_class_to_reference): Keep better track of
7108 pedantically invalid user-defined conversions.
7109
84b683c1
GB
71102004-02-01 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7111
7112 PR c++/13957
7113 * pt.c (tsubst_qualified_id): Improved error message when a type
7114 is expected but not found.
7115
852dcbdd
KH
71162004-01-31 Kazu Hirata <kazu@cs.umass.edu>
7117
7118 * class.c: Fix comment typos.
7119 * decl.c: Likewise.
7120 * error.c: Likewise.
7121 * parser.c: Likewise.
7122 * pt.c: Likewise.
7123 * search.c: Likewise.
7124 * typeck.c: Likewise.
7125
59445d74
RH
71262004-01-30 Richard Henderson <rth@redhat.com>
7127
a6f78652
ZW
7128 PR c++/13693
7129 * method.c (use_thunk): Don't force_target_expr for void thunks.
7130 * tree.c (build_target_expr_with_type): Assert non-void type.
7131 (force_target_expr): Likewise.
59445d74 7132
98ce043b
MM
71332004-01-30 Michael Matz <matz@suse.de>
7134
7135 * parser.c (cp_parser_labeled_statement): Accept case ranges.
7136
a9f46cbb
GB
71372004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7138
7139 DR206
7140 PR c++/13813
7141 * decl.c (grokdeclarator): Check immediatly type completeness for
7142 non-dependent types.
7143
5840af0f
GB
71442004-01-30 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7145
7146 PR c++/13683
7147 * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
7148 a sizeof expression.block
7149
4a5e0ed9
MM
71502004-01-29 Mark Mitchell <mark@codesourcery.com>
7151
7152 PR c++/13883
7153 * mangle.c (write_encoding): Correct encoding of member template
7154 constructors.
7155
f4abade9
GB
71562004-01-28 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7157
a6f78652 7158 * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
f4abade9
GB
7159 template name as it was `<::' (digraph typo).
7160 (cp_parser_nth_token_starts_template_argument_list_p): New function.
7161 (cp_parser_id_expression): Use it.
7162 (cp_parser_nested_name_specifier_opt): Likewise.
7163 (cp_parser_template_name): Likewise.
7164 (cp_parser_class_name): Likewise.
7165 (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
7166
a7324e75
MM
71672004-01-28 Mark Mitchell <mark@codesourcery.com>
7168
b1a95e0b
MM
7169 PR c++/13791
7170 * typeck.c (merge_types): Do not merge attributes into
7171 TYPENAME_TYPEs.
7172
a7324e75
MM
7173 PR c++/13736
7174 * parser.c (cp_parser_direct_declarator): Do not prevent
7175 backtracking inside a parenthesized declarator.
7176 (cp_parser_parameter_declaration): Fix typo in comment.
7177
de81ffd4
JH
71782004-01-28 Jan Hubicka <jh@suse.cz>
7179
7180 * semantics.c (expand_body) Do emit_associated_thunks before
7181 expansion.
7182
6097b0c3
DP
71832004-01-27 Devang Patel <dpatel@apple.com>
7184
7185 * name-lookup.c: Include "debug.h"
7186 (do_namespace_alias): Invoke debug_hooks to emit debug info
7187 for namespace alias.
a6f78652 7188 (do_local_using_decl): Invoke debug_hooks to emit debug info
6097b0c3
DP
7189 for using decl.
7190 (do_class_using_decl): Same.
7191 (do_toplevel_using_decl): Same.
7192 (do_using_directive): Same.
7193 (cp_emit_debug_info_for_using): New function.
7194 * Make-lang.in (cp/parser.o): Depend on debug.h
7195 (cp/name-lookup.o): Same.
7196
1c62e7b2
KG
71972004-01-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
7198
7199 * cp-tree.h (language_function, lang_type_header): Use
7200 BOOL_BITFIELD.
7201 * name-lookup.h (cp_binding_level): Likewise.
7202
c353b8e3
MM
72032004-01-26 Mark Mitchell <mark@codesourcery.com>
7204
6f69173e
MM
7205 PR c++/13663
7206 * semantics.c (finish_for_expr): Check for unresolved overloaded
7207 functions.
7208
c353b8e3
MM
7209 * class.c (add_method): Just check processing_template_decl to
7210 determine whether or not we are within a template.
7211 * decl2.c (maybe_retrofit_in_chrg): Likewise.
7212 * init.c (decl_constant_value): Check the type of the declaration,
7213 not TREE_READONLY.
7214 * name-lookup.c (maybe_push_to_top_level): Rename to ...
7215 (push_to_top_level): ... this.
7216 * name-lookup.h (maybe_push_to_top_level): Do not declare it.
7217 * pt.c (push_template_decl_real): Reorder condition for speed.
7218 (convert_template_argument): Use dependency-checking functions in
7219 place of uses_template_parms.
7220 (lookup_template_class): Avoid calling uses_template_parms more
7221 than once.
7222 (uses_template_parms): Reimplement, using dependency-checking
7223 functions.
7224 (instantiate_class_template): Use push_to_top_level, not
7225 maybe_push_to_top_level.
7226 (type_unification_real): Simplify.
7227 (type_dependent_expression_p): Handle OFFSET_REFs and
7228 TEMPLATE_DECLs.
7229 (any_dependent_template_arguments_p): Handle multiple levels of
7230 template argument.
7231 * semantics.c (expand_or_defer_fn): Do not check
7232 uses_template_parms for template instantiations.
7233 * typeck.c (comptypes): Avoid calling cp_type_quals.
7234
b7c707d1
MM
72352004-01-25 Mark Mitchell <mark@codesourcery.com>
7236
7237 PR c++/13833
7238 * call.c (build_over_call): Do not convert arguments when
7239 processing a template.
7240 * pt.c (build_non_dependent_expr): Do not build a
7241 NON_DEPENDENT_EXPR for arithmetic constants.
7242
a3a503a5
GB
72432004-01-25 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7244
7245 PR c++/13810
a6f78652 7246 * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
a3a503a5
GB
7247 returns a TYPE_DECL. no further lookup is required.
7248 * semantics.c (check_template_template_default_arg): A TYPE_DECL
7249 is invalid. Rework to give better diagnostics.
7250
ad2768d0 72512004-01-25 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
2620d095
KL
7252
7253 PR c++/13797
7254 * pt.c (instantiate_class_template): Add an error_mark_node
7255 check.
7256 (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
7257
279883ed
AP
72582004-01-23 Andrew Pinski <pinskia@physics.uc.edu>
7259
7260 PR c++/13701
7261 * decl.c (finish_function): Move the call to
7262 finish_fname_decls below the call to
7263 finish_eh_spec_block.
7264
3c2426b9
KH
72652004-01-21 Kazu Hirata <kazu@cs.umass.edu>
7266
7267 * optimize.c, typeck2.c: Update copyright.
7268
521cc508
KH
72692004-01-21 Kazu Hirata <kazu@cs.umass.edu>
7270
7271 * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
7272 init.c, mangle.c, typeck.c: Update copyright.
7273
4543ee47
ZD
72742004-01-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
7275
7276 * parser.c (cp_parser_class_specifier): Prevent garbage collection.
7277
a541f69d
KC
72782004-01-20 Kelley Cook <kcook@gcc.gnu.org>
7279
7280 * Make-lang.in: Replace $(docdir) with doc.
7281 (c++.info, c++.srcinfo): Dummy entry.
7282 (c++.man, c++.srcman): New rules.
7283 (c++.install-man): Revamp rule.
7284
e165d61b
KC
72852004-01-20 Kelley Cook <kcook@gcc.gnu.org>
7286
a6f78652 7287 * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
e165d61b
KC
7288 CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
7289 immediate $(shell) instead of deferred backquote.
7290
9f880ef9
MM
72912004-01-19 Mark Mitchell <mark@codesourcery.com>
7292
be799b1e
MM
7293 PR c++/13651
7294 * parser.c (cp_parser_postfix_expression): When encountering
7295 incomplete type on left-hand side of "->" or ".", treat the entire
7296 expression as erroneous.
7297
9f880ef9
MM
7298 PR c++/13592
7299 * call.c (build_field_call): Remove.
7300 (n_build_method_call): Likewise.
7301 (build_method_call): Likewise.
7302 (build_new_method_call): Do not call build_field_call.
7303 * class.c (n_build_method_call): Remove.
7304 (print_class_statistics): Do not print it.
7305 * cp-tree.h (build_method_call): Remove declaration.
7306 (finish_object_call_expr): Likewise.
7307 (build_new_1): Do not use build_method_call.
7308 * parser.c (cp_parser_postfix_expression): Use finish_call_expr
7309 when the function appearing on the right-hand-side of "." or "->"
7310 is not actually a function.
7311 * pt.c (tsubst_copy_and_build): Likewise.
7312 * semantics.c (finish_object_call_expr): Remove.
7313
b830b74c
MM
73142004-01-18 Mark Mitchell <mark@codesourcery.com>
7315
0f18efe3 7316 PR c++/13710
b830b74c
MM
7317 * pt.c (tsubst): Use finish_typeof.
7318
0fed9ec7 73192004-01-18 Jason Merrill <jason@redhat.com>
aff5c451
JM
7320
7321 PR c++/11725
7322 * except.c (build_throw): In a template, set
7323 current_function_returns_abnormally.
7324
4bfaff4d 73252004-01-17 Fred Fish <fnf@intrinsity.com>
6f27961a
AP
7326
7327 PR c++/11895
7328 * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
7329 except don't call array_type_nelts() with a VECTOR_TYPE.
7330
965514bd
JH
73312004-01-16 Jan Hubicka <jh@suse.cz>
7332
7333 * mangle.c (write_mangled_name): Remove inline modifier.
7334
ab8ffc79
MM
73352004-01-16 Mark Mitchell <mark@codesourcery.com>
7336
a8e6c82a
MM
7337 PR c++/13574
7338 * decl.c (compute_array_index_type): Fix grammar in comment.
7339 * init.c (build_zero_init): Handle zero-sized arrays correctly.
7340
144e414d
MM
7341 PR c++/13178
7342 * call.c (name_as_c_string): Print conversion operator names
7343 correctly.
7344
ab8ffc79 7345 PR c++/13478
1b6bfcd2
MM
7346 * call.c (initialize_reference): Pass -1 for inner parameter to
7347 convert_like_real.
ab8ffc79 7348
1ed53ef3
GB
73492004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7350
7351 PR c++/13407
7352 * parser.c (cp_parser_base_specifier): Check for an invalid
7353 keyword `typename' and emit an user-friendly error message.
7354
a6dd4094
GK
73552004-01-15 Geoffrey Keating <geoffk@apple.com>
7356
7357 PR pch/13361
7358 * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
7359 (handle_pragma_implementation): Likewise.
7360
21b34b9c
GB
73612004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7362
7363 PR c++/9259
7364 * typeck.c (build_class_member_access_expr): Allow to access members
7365 of the currently open class.
7366 (finish_class_member_access_expr): Likewise.
7367
ed5f054f
AO
73682004-01-15 Alexandre Oliva <aoliva@redhat.com>
7369
7370 PR c++/13659
7371 * name-lookup.c (validate_nonmember_using_decl): Take scope and
7372 name by value, instead of computing them.
7373 (do_local_using_decl, do_toplevel_using_decl): Add scope and name
7374 arguments. Pass them to validate_nonmember_using_decl.
7375 * name-lookup.h (do_local_using_decl): Adjust.
7376 (do_toplevel_using_decl): Likewise.
7377 * parser.c (cp_parser_using_declaration): Likewise.
7378 * pt.c (tsubst_expr): Likewise.
7379
dc55c941
AO
73802004-01-15 Alexandre Oliva <aoliva@redhat.com>
7381
7382 PR c++/13594
7383 PR c++/13658
7384 * name-lookup.c (qualified_lookup_using_namespace): Search
7385 strongly-associated namespaces first, and only then try other
7386 namespaces.
7387
03787dfd
KC
73882004-01-15 Kelley Cook <kcook@gcc.gnu.org>
7389
7390 * Make-lang.in (c++.srcextra): Dummy entry.
7391
0d956474
GB
73922004-01-15 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7393
7394 PR c++/8856
a6f78652 7395 * parser.c (cp_parser_template_name): Don't try to parse a
0d956474
GB
7396 conversion-function-id, as it cannot be a template-name.
7397 (cp_parser_simple_type_specifier): Check for invalid template-ids
7398 even after a built-in type.
7399
7ec4deda
JH
74002004-01-14 Jan Hubicka <jh@suse.cz>
7401
7402 PR c++/12850
7403 * pt.c (instantiate_decl): Do not increase function_depth.
7404
e0fed25b
DS
74052004-01-14 Danny Smith <dannysmith@users,sourceforge.net>
7406
7407 PR c++/9021
bd0a5aab 7408 PR c++/11005
e0fed25b
DS
7409 * parser.c (cp_parser_elaborated_type_specifier): Warn about
7410 attributes and discard.
7411 * decl.c (xref_tag): Don't overwite existing attributes with
7412 NULL_TREE.
7413
fd6e3cce
GB
74142004-01-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7415
7416 PR c++/12335
7417 * parser.c (cp_parser_lookup_name): Return error_mark_node if there
7418 is no destructor while looking up a BIT_NOT_EXPR.
7419
f18056ff
ILT
74202004-01-13 Ian Lance Taylor <ian@wasabisystems.com>
7421
7422 * cxxfilt.c: Remove unused file.
7423
d34cb6a1
JH
74242004-01-14 Jan Hubicka <jh@suse.cz>
7425
7426 Partial fix to PR c++/12850
7427 * decl2.c (mark_used): Do not proactively instantiate templates
7428 when compiling in unit-at-a-time or not optimizing.
7429 * optimize.c (maybe_clone_body): Do not increase function depth.
7430
cdf4ac6f
GB
74312004-01-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7432
7433 PR c++/13474
7434 * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
7435
94632047 74362004-01-12 Steven Bosscher <stevenb@suse.de>
fdd09134
SB
7437
7438 PR c++/13558
7439 * parser.c (cp_parser_member_declaration): Any non-type is also
7440 not a class or a function.
7441
7b25f6e5
JM
74422004-01-12 Jason Merrill <jason@redhat.com>
7443
7444 PR c++/12815
7445 * class.c (build_base_path): Do not mark vtable references as
7446 TREE_CONSTANT.
7447 (build_vtbl_ref_1): Likewise.
7448
25ebb82a
RH
74492004-01-12 Richard Henderson <rth@redhat.com>
7450
7451 PR opt/10776
7452 * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
7453 (store_init_value): Use it.
7454 * decl.c (check_initializer): Expect full initialization code
7455 from store_init_value.
7456 * init.c (expand_aggr_init_1): Likewise.
7457 * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
7458
4f0a2b81
MM
74592004-01-12 Mark Mitchell <mark@codesourcery.com>
7460
7461 * class.c (layout_class_type): For non-POD class types, also copy
7462 the DECL_SIZE and DECL_MODE of fields to the base class type.
7463
66e0c440
KL
74642004-01-12 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7465
7466 PR c++/13289
7467 * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
7468 calling regenerate_decl_from_template.
7469
0426c4ca
SB
74702004-01-12 Scott Brumbaugh <scottb.lists@verizon.net>
7471
7472 PR c++/4100
7473 * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
7474 decl-specifier occurring along with a class definition.
7475
543ca912
ILT
74762004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
7477
7478 * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
7479 clauses to comments describing declares_class_or_enum.
7480 (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
7481 false.
7482
c1e39976
JH
74832004-01-12 Jan Hubicka <jh@suse.cz>
7484
7485 * pt.c (for_each_template_parm): Do not check for duplicates.
7486 (for_each_template_parm): Use walk_tree duplicate checking code.
7487
e90c7b84
ILT
74882004-01-11 Ian Lance Taylor <ian@wasabisystems.com>
7489
7490 PR c++/3478
7491 * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
7492 is error_mark_node, don't add any more decl_specs.
7493 (cp_parser_init_declarator): After committing to a declaration, if
7494 the decl_specifiers start with error_mark_node, issue an error and
7495 change the type to "int".
7496
c90501d0
NN
74972004-01-09 Nathanael Nerode <neroden@gcc.gnu.org>
7498
7499 PR bootstrap/7817
7500 * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
7501
cfb91b67
GB
75022004-01-10 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7503
7504 DR 337
7505 PR c++/9256
a6f78652 7506 * pt.c (tsubst): Substitution must fail if we are attempting to
cfb91b67
GB
7507 create an array with element type that is an abstract class type.
7508 * decl.c (cp_finish_decl): Strip pointers and array types recursively
7509 before calling abstract_virtuals_error.
7510
c404ab02
AO
75112004-01-09 Alexandre Oliva <aoliva@redhat.com>
7512
7513 * name-lookup.c (qualified_lookup_using_namespace): Consider
7514 strong using directives even if we've already found a binding.
7515
0fab64a3
MM
75162004-01-09 Mark Mitchell <mark@codesourcery.com>
7517
7518 * cp-tree.h (cxx_expand_expr): Change prototype.
7519 * expr.c (cxx_expand_expr): Add alt_rtl parameter.
7520
3d5ddced
GB
75212004-01-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
7522
7523 PR c++/12573
7524 * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
7525 looking into them recursively. They can be there because of the
7526 new __offsetof__ extension.
7527
7ce27103
ZW
75282004-01-07 Zack Weinberg <zack@codesourcery.com>
7529
7530 * parser.c (cp_parser_save_member_function_body): Mark the
7531 definition static.
7532
88081599
MM
75332004-01-05 Mark Mitchell <mark@codesourcery.com>
7534
221bfb03
MM
7535 PR c++/13057
7536 * class.c (build_clone): Copy type attributes from the original
7537 function to the clone.
7ce27103 7538
856363c8 7539 PR c++/12815
962c0823
MM
7540 * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
7541 references as constant.
7542
216bb6e1
MM
7543 PR c++/12132
7544 * parser.c (cp_parser_explicit_instantiation): Improve error
7545 recovery.
7546 (cp_parser_require): Improve indication of the error location.
7547
88081599
MM
7548 PR c++/13451
7549 * parser.c (cp_parser_class_head): Reorder logic to check for
7550 invalid qualification.
7551
543ebd4a
MM
75522004-01-04 Mark Mitchell <mark@codesourcery.com>
7553
7554 PR c++/13157
7555 * name-lookup.c (lookup_using_namespace): Remove spacesp
7556 parameter.
7557 (unqualified_namespace_lookup): Likewise.
7558 (lookup_qualified_name): Adjust accordingly.
7559 (lookup_name_real): Likewise.
7560 (lookup_arg_dependent): Do not eliminate the namespace of the
7561 functions found by unqualified name lookup unless that is the
7562 current namespace.
7563
572c2b17
AP
75642004-01-04 Andrew Pinski <pinskia@physics.uc.edu>
7565
7566 * semantics.c (push_deferring_access_checks): Fix format.
7567 (resume_deferring_access_checks): Likewise.
7568 (stop_deferring_access_checks): Likewise.
7569 (pop_deferring_access_checks): Likewise.
7570 (get_deferred_access_checks): Likewise.
7571 (pop_to_parent_deferring_access_checks): Likewise.
7572 (perform_deferred_access_checks): Likewise.
7573 (perform_or_defer_access_check): Likewise.
7574
88401f73
RH
75752004-01-04 Richard Henderson <rth@redhat.com>
7576
7577 * call.c (build_over_call): Don't create a save_expr of an
7578 aggregate, but rather its address.
7579
4f8163b1
MM
75802004-01-04 Mark Mitchell <mark@codesourcery.com>
7581
955d0234
MM
7582 PR c++/13529
7583 * parser.c (cp_parser_postfix_expression): Allow "." to appear in
7584 an offsetof expression.
7585
643aee72
MM
7586 * parser.c (cp_parser_parameter_declaration): Fix comment.
7587
4f8163b1
MM
7588 PR c++/12226
7589 * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
7590 (reference_binding): Set it when appropriate.
7591 (build_temp): New function, split out from ...
7592 (convert_like_real): ... here. Honor CHECK_COPY_CONSTRUCTOR_P.
7593 (initialize_reference): Likewise.
7594
7595 PR c++/13536
7596 * parser.c (cp_parser): Add in_type_id_in_expr_p.
7597 (cp_parser_new): Initialize it.
7598 (cp_parser_postfix_expression): Set it.
7599 (cp_parser_sizeof_operand): Likewise.
7600 (cp_parser_parameteR_declaration): Do not commit early to tenative
7601 parsers when in_type_id_in_expr_p is set.
7602
5b4acce1
KL
76032004-01-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7604
7605 PR c++/13094
7606 * parser.c (cp_parser_template_argument): Don't call
7607 make_unbound_class_template directly.
7608 (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
7609 UNBOUND_CLASS_TEMPLATE tree node.
7610
8748dc22
RS
76112004-01-02 Richard Sandiford <rsandifo@redhat.com>
7612
7613 PR target/12729
7614 * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
7615
b0bc6e8e
KL
76162004-01-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
7617
7618 PR c++/13520
7619 * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
7620 (DECL_FUNCTION_TEMPLATE_P): Use it.
7621 (DECL_CLASS_TEMPLATE_P): Likewise.
7622 * parser.c (cp_parser_lookup_name): Add is_template parameter.
7623 (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
7624 (cp_parser_template_name): Likewise.
7625 (cp_parser_elaborated_type_specifier): Likewise.
7626 (cp_parser_namespace_name): Likewise.
7627 (cp_parser_class_name): Likewise.
7628 (cp_parser_lookup_name_simple): Likewise.
58496de1 7629
837b8417 7630See ChangeLog.3 for earlier changes.