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