OSDN Git Service

PR c++/29020
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2006-10-03  Mark Mitchell  <mark@codesourcery.com>
2
3         PR c++/29020
4         * friend.c (do_friend): Improve comments; add assertion.
5         * parser.c (cp_parser_nested_name_specifier_opt): Resolve
6         typenames for qualified names used in declarations, even when
7         caching qualified name lookup.
8
9         PR c++/29138
10         * decl2.c (grokfield): Don't handle access declarations here.
11         * parser.c (cp_parser_using_declaration): Handle access
12         declarations too.
13         (cp_parser_block_declaration): Adjust calls to
14         cp_parser_using_declaration.
15         (cp_parser_member_declaration): Likewise.  Use
16         cp_parser_using_declaration to look for access_declarations.
17
18 2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
19
20         PR c++/29291
21         * init.c (build_new): Check for invalid init.
22
23 2006-10-02  Mark Mitchell  <mark@codesourcery.com>
24
25         PR c++/29226
26         * typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
27         not try to actually evaluate sizeof for a VLA type.
28
29 2006-10-01  Mark Mitchell  <mark@codesourcery.com>
30
31         PR c++/29105
32         * pt.c (tsubst_baselink): Substituteinto the qualifying scope.
33         * semantics.c (baselink_for_fns): Build a baselink, even when
34         processing a template.
35
36         PR c++/29080
37         * parser.c (cp_parser_postfix_dot_deref_expression): Use
38         BASELINK_ACCESS_BINFO as the qualifying scope when calling
39         adjust_result_of_qualified_name_lookup. 
40
41 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
42
43         PR c++/27329
44         PR c++/26938
45         * cp-tree.h (redeclare_class_template): Adjust declaration
46         to return bool instead of void.
47         * pt.c (redeclare_class_template): Update definition.
48         Return false on error.
49         * decl.c (xref_tag): Return error_mark_node if
50         redeclare_class_template returned false.
51
52         PR c++/27667
53         * cp-tree.h (begin_specialization): Return bool 
54         instead of void.
55         * pt.c (check_specialization_scope): Likwise. 
56         Adjust comment. Return false if a specialization 
57         isn't permitted in the current scope.
58         (begin_specialization): Use the return value of  
59         check_specialization_scope.
60         * parser.c (cp_parser_explicit_specialization): If
61         begin_specialization returned false, skip the rest 
62         of the specialization.
63         
64 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
65
66         PR c++/29016
67         * typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
68         BASELINK.
69
70 2006-09-21  Lee Millward  <lee.millward@codesourcery.com>
71
72         PR c++/28861
73         * decl.c (shadow_tag): Return error_mark_node
74         if maybe_process_partial_specialization failed.
75
76         PR c++/28303
77         * decl.c (grokdeclarator): Return error_mark_node on
78         declaration with two or more data types.
79         
80 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
81
82         PR target/27650
83         * class.c (check_for_override): Remove dllimport from virtual
84         methods.
85
86 2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>
87
88         PR c++/29087
89         * parser.c (cp_parser_labeled_statement): Return nothing.  Do
90         not take in_statement_expr and in_compound as arguments.  Rename
91         to cp_parser_label_for_labeled_statement.  Parse only the label,
92         not the statement.
93         (cp_parser_statement): Parse the statement of a labeled-statement
94         from here, using tail recursion.
95
96 2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>
97
98         PR C++/29002
99         * init.c (build_zero_init): If we have an error mark node for
100         the array size, return.
101
102 2006-09-10  Mark Mitchell  <mark@codesourcery.com>
103
104         PR c++/28991
105         * cp-objcp-common.c (cxx_staticp): New function.
106         * cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
107         * cp-tree.h (cxx_staticp): New function.
108
109 2006-09-09  Jason Merrill  <jason@redhat.com>
110
111         PR c++/28996
112         * cvt.c (convert_to_void): Strip COMPONENT_REF to functions.
113
114 2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
115
116         PR c++/28858
117         * parser.c (cp_parser_skip_until_found): Rename to
118         cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
119         parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
120         Reorganize.  Adjust comment.
121         (cp_parser_template_declaration_after_export): Adjust call.
122         (cp_parser_enclosed_template_argument_list): Likewise.
123
124 2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>
125
126         PR C++/28906
127         * init.c (build_new_1): Build a distinct type copy
128         for the array type that was returned from
129         build_cplus_array_type.
130
131 2006-09-07  Jason Merrill  <jason@redhat.com>
132
133         PR c++/27371
134         * cvt.c (convert_to_void): Enable previous change.
135
136         PR c++/26957
137         * method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
138         parms.
139
140 2006-09-07  Simon Martin  <simartin@users.sourceforge.net>
141
142         PR c++/28284
143         * pt.c (fold_non_dependent_expr): Make sure expr is not
144         dereferenced if it is NULL.
145
146 2006-09-06  Zak Kipling  <zak@transversal.com>
147
148         PR c++/26195
149         * decl.c (make_rtl_for_nonlocal_decl),
150         (start_preparsed_function): Don't use lbasename on
151         input_filename when calling get_fileinfo.
152         * semantics.c (begin_class_definition): Likewise.
153         * lex.c (cxx_make_type): Likewise.
154         (handle_pragma_interface): Call get_fileinfo on input_filename,
155         not on the parameter to the directive.
156
157 2006-09-06  Mark Mitchell  <mark@codesourcery.com>
158
159         PR c++/28903
160         * pt.c (tsubst): Use fold_non_dependent_expr to fold array
161         dimensions.
162
163         PR c++/28886
164         * pt.c (unify): Avoid unnecessary calls to fold_build2 for array
165         dimensions.
166
167 2006-09-06  Jason Merrill  <jason@redhat.com>
168
169         PR c++/27371
170         * cvt.c (convert_to_void): Strip useless TARGET_EXPR.
171         * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
172         * tree.c (build_cplus_new): Set it.
173
174         PR c++/26696
175         * cvt.c (convert_to_void): Replace a subexpression with no side 
176         effects with void_zero_node.
177         * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
178         (get_first_fn): Ditto.
179         * decl.c (grokdeclarator): No need to look through COMPONENT_REF.
180
181 2006-09-05  Jason Merrill  <jason@redhat.com>
182
183         PR c++/26571
184         * parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
185         where the name is a type used incorrectly.
186
187         PR c++/26671
188         * typeck.c (maybe_warn_about_returning_address_of_local): Look 
189         through COMPONENT_REF and ARRAY_REF.    
190
191         PR c++/26102
192         * name-lookup.c (do_class_using_decl): Try to find the base even
193         if bases_dependent_p.
194         * pt.c (type_dependent_expression_p): A USING_DECL is dependent.        
195
196         PR c++/19809
197         * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
198
199 2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>
200
201         PR 23287 Revert my 2006-09-01 patch.
202         * parser.c: Reverted.
203         * pt.c: Reverted.
204
205 2006-09-02  Lee Millward  <lee.millward@codesourcery.com>
206
207         PR c++/27670
208         PR c++/27493
209         PR c++/27494
210         PR c++/27397
211         * parser.c (cp_parser_template_parameter_list): Add
212         invalid template parameters to the parameter list as
213         error_mark_node.
214
215 2006-09-02  Jakub Jelinek  <jakub@redhat.com>
216
217         PR c++/28878
218         * except.c (build_throw): Only set current_function_returns_abnormally
219         if cfun is not NULL.
220
221         PR c++/26917
222         * repo.c (repo_file): Remove.
223         (open_repo_file, reopen_repo_file_for_write): Return fopened
224         FILE * instead of setting global repo_file variable.
225         (init_repo): Adjust caller.
226         (finish_repo): Likewise.  Return instead of goto out before
227         reopen_repo_file_for_write has been called.
228
229 2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>
230
231         PR c++/28705
232         * semantics.c (finish_call_expr): Add assert.
233         * name-lookup.c (lookup_arg_dependent): Check we found an overload
234         or an object.
235
236         PR c++/23287
237         * parser.c (cp_parser_id_expression): Add member_p
238         argument. Update all callers.
239         (cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
240         the object's scope, if valid.
241         (cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
242         callers.
243         (cp_parser_postfix_dot_deref_expression): Set object_scope.
244         * pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.
245
246 2006-08-30  Jason Merrill  <jason@redhat.com>
247
248         PR c++/26670
249         * class.c (check_field_decls): Don't unset TYPE_PACKED until all
250         the fields have been processed.
251
252 2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>
253
254         PR C++/28349
255         * call.c (build_x_va_arg): Remove the reference type
256         from the type before creating the pointer type.
257
258 2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>
259
260         PR c++/28139
261         * except.c (expand_start_catch_block): Use correct types for bitwise
262         copy.
263
264 2006-08-28  Jason Merrill  <jason@redhat.com>
265
266         PR c++/26670
267         * class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
268         fields can't be packed.
269
270         PR c++/26577
271         * cvt.c (convert_to_void): Don't automatically load from volatiles 
272         of TREE_ADDRESSABLE type.
273
274 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
275
276         PR c++/28860
277         * cp-tree.h (maybe_process_partial_specialization): Return
278         tree instead of void.
279         * parser.c (cp_parser_class_head): Use return value of
280         maybe_process_partial_specialization.
281         * pt.c (maybe_process_partial_specialization): Return error_mark_node
282         for broken specializations, TYPE otherwise.  Check for template
283         template parameters.
284
285 2006-08-27  Mark Mitchell  <mark@codesourcery.com>
286
287         PR c++/28058
288         * pt.c (register_specialization): Return error_mark_node for
289         specialization-after-instantiation.
290         * decl2.c (mark_used): Mark the main function used when one of its
291         clones is used.
292         
293 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
294
295         PR c++/26573
296         * class.c (check_field_decls): Don't issue error about
297         local classes containing static data members.
298         
299 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
300
301         PR c++/24009
302         * parser.c (struct cp_token): Add input_file_stack_index.
303         (eof_token): Update.
304         (cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
305         (cp_lexer_set_source_position_from_token): Restore input file
306         stack.
307
308 2006-08-26  Lee Millward  <lee.millward@codesourcery.com>
309
310         PR c++/28736
311         PR c++/28737
312         PR c++/28738
313         * pt.c (process_template_parm): Store invalid template
314         parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
315         (push_inline_template_parms_recursive): Check for template
316         parameters having a TREE_VALUE of error_mark_node rather than
317         check the parameter itself.
318         (mangle_class_name_for_template): Likewise.
319         (comp_template_parms): When comparing the individual template
320         parameters, return 1 if either is error_mark_node.
321         (current_template_args): Robustify.
322         (redeclare_class_template): Likewise.
323         
324 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
325
326         PR c++/28588
327         * class.c (resolve_address_of_overloaded_function): Add
328         access_path parameter.  Perform access checks.
329         (instantiate_type): Adjust call to
330         resolve_address_of_overloaded_function.  Remove unnecessary code.
331         * tree.c (is_overloaded_fn): Document.  Return 2 when there are
332         acutally multiple functions.
333         (really_overloaded_fn): Use is_overloaded_fn.
334         * mangle.c (write_expression): Handle BASELINKs.
335         * cp-tree.h (really_overloaded_fn): Return bool.
336         (baselink_for_fns): Declare.
337         * search.c (lookup_member): Check access for single static
338         functions here.
339         * pt.c (convert_nontype_argument_function): Handle BASELINKs.
340         (tsubst_copy_and_build): Generate BASELINKs for template-ids.
341         * semantics.c (finish_call_expr): Use baselink_for_fns.
342         (baselink_for_fns): New function.
343         (finish_id_expression): Use it.
344         * parser.c (cp_parser_template_argument): Don't strip BASELINKs.
345
346         PR c++/28595
347         * pt.c (tsubst): Issue errors about attempts to create VLAs at
348         template-instantiation time.
349
350 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
351
352         PR c++/28853
353         * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
354         template parameters.  Improve error message for template type
355         parameters.
356
357         PR c++/28852
358         * cp-tree.h (grok_op_properties): Return bool instead of void.
359         * decl.c (grokfndecl): Discard invalid operator declarations.
360         (copy_fn_p): Revert change for PR 27547.
361         (grok_op_properties): Return error status (true on success).
362         * pt.c (tsubst_decl): Discard invalid operator declarations.
363
364 2006-08-25  Mark Mitchell  <mark@codesourcery.com>
365
366         PR c++/28056
367         * decl.c (grokdeclarator): Disallow declarations with qualified
368         names in local scopes.
369
370 2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>
371
372         PR c++/27787
373         * decl.c (make_typename_type): Only try and resolve it when
374         context is not dependent.  Refactor.
375         * decl2.c (check_classfn): Push to class scope before looking for
376         the function.
377
378 2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>
379
380         PR driver/28528
381         * g++spec.c (lang_specific_driver): Always check if we need to
382         swallow a space-separated  arg to '-x'.
383         * lang-specs.h: Don't create ouput files for '-xc++-header'
384         if -fsyntax-only.
385
386 2006-08-23  Jason Merrill  <jason@redhat.com>
387
388         PR c++/27714
389         * pt.c (push_template_decl_real): A friend template with class 
390         scope isn't primary.
391
392 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
393
394         PR c++/28687
395         * rtti.c (build_dynamic_cast, build_dynamic_cast_1):
396         Move -fno-rtti check to be more specific.
397
398 2006-08-22  Jason Merrill  <jason@redhat.com>
399
400         PR c++/23372
401         * call.c (build_over_call): Don't make a copy here if build_call 
402         will make one too.
403
404 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
405
406         PR C++/28450
407         * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
408         COMPLEX_TYPEs.
409
410 2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
411
412         PR c++/28420
413         * parser.c (cp_parser_postfix_expression): Make sure that the
414         saved value for parser->type_definition_forbidden_message is
415         restored before returning to avoid an invalid free().
416
417 2006-08-22  Jason Merrill  <jason@redhat.com>
418
419         PR c++/28659
420         * typeck.c (merge_types): If either of the types have the right 
421         attributes, return that one.
422
423         * tree.c (cp_build_type_attribute_variant): Make sure we aren't
424         doing this to class types.
425         * typeck.c (original_type): Deal with type quals properly.
426
427 2006-08-21  Jason Merrill  <jason@redhat.com>
428
429         PR c++/27115
430         * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
431         just leave the expression as it is.
432         (finish_stmt_expr): If the statement-expression has class type,
433         wrap it in a TARGET_EXPR.
434         * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
435         CLEANUP_POINT_EXPR.
436         * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
437
438 2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
439
440         PR c++/26269
441         * decl.c (duplicate_decls): Return early if either
442         newdecl or olddecl is error_mark_node.
443
444          PR c++/28505
445         * decl.c (grokdeclarator): Return early after
446         issuing diagnostic about an incomplete type.
447
448         PR c++/28741
449         * tree.c (decl_anon_ns_mem_p): Robustify.
450         * decl2.c (determine_visibility): Likewise.
451         
452 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
453
454         PR c++/28341
455         * tree.c (cast_valid_in_integral_constant_expression_p): New
456         function.
457         * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
458         * pt.c (tsubst_expr): Add integral_constant_expression_p
459         parameter.
460         (fold_non_dependent_expr): Adjust callers of
461         tsubst_{expr,copy_and_build}.
462         (tsubst_friend_function): Likewise.
463         (tsubst_template_arg): Likewise.
464         (tsubst_default_argument): Likewise.
465         (tsubst_decl): Likewise.
466         (tsubst): Likewise.
467         (tsubst_omp_clasuses): Likewise.
468         (regenerate_decl_fromp_template): Likewise.
469         (instantiate_decl): Likewise.
470         (tsubst_initializer_list): Likewise.
471         (tsubst_enum): Likewise.
472         (tsubst_expr): Use RECUR throughout.
473         (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
474         invalid casts in integral constant expressions.
475         * parser.c (cp_parser_postfix_expression): Use
476         cast_valid_in_integral_constant_expression_p.
477         (cp_parser_cast_expression): Likewise.
478         (cp_parser_functional_cast): Likewise.
479
480         PR c++/28346
481         * pt.c (tsubst_qualified_id): Do not strip references from
482         OFFSET_REFs. 
483
484 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
485
486         PR c++/28606
487         * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
488         Fix formatting.
489         (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
490         for valid type-names.
491         (cp_parser_unqualified_id): Fix error handling for destructors.
492
493         PR c++/28710
494         * decl.c (xref_tag): Improve error message.  Return early on error.
495
496         PR c++/28711
497         * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
498
499 2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
500
501         PR c++/28573
502         * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
503
504 2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
505
506         PR c++/28302
507         * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
508         perform_integral_promotions for non integral type.
509
510 2006-08-16  Jason Merrill  <jason@redhat.com>
511
512         PR c++/28385
513         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
514         if arg is a function.
515
516 2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
517
518         PR c++/28593
519         * init.c (build_new): Return early on invalid placement.
520
521 2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
522
523         PR c++/28594
524         * pt.c (process_template_parm): Robustify.
525         
526 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
527
528         PR c++/28288
529         PR c++/14556
530         * operators.def: Remove <?, ?>, <?=, and >?= operators.
531         * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
532         (cp_parser_warn_min_max): Remove.
533
534 2006-08-11  Jason Merrill  <jason@redhat.com>
535
536         PR c++/28559
537         * parser.c (cp_parser_elaborated_type_specifier): Also ignore
538         attributes applied to a TYPENAME_TYPE.
539
540 2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
541
542         PR c++/28637
543         * pt.c (coerce_template_parms): Copy across the
544         invalid template arguments to the new template inner arguments.
545         (retrieve_specialization): Robustify.
546
547         PR c++/28638
548         * pt.c (coerce_template_template_parms): Robustify.
549
550         PR c++/28639
551         * error.c (dump_template_parms): Robustify.
552
553         PR c++/28640
554         * pt.c (redeclare_class_template): Robustify.
555
556         PR c++/28641
557         * pt.c (type_unification_real): Robustify.
558         
559 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
560
561         PR c++/28347
562         * decl.c (start_decl): Return error_mark_node if a
563         diagnostic was issed for an invalid typedef initialization.
564         
565 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
566
567         PR c++/27508
568         * parser.c (cp_parser_unqualified_id): Check for invalid scopes
569         when parsing destructor names.
570
571         PR c++/28274
572         * decl.c (duplicate_decls): Call check_default_args here.
573         (start_preparsed_function): Do not call check_default_args.
574         * name-lookup.c (pushdecl_maybe_friend): Only call
575         check_default_args if duplicate_decls got bypassed.
576
577 2006-08-02  Richard Guenther  <rguenther@suse.de>
578
579         PR c++/28479
580         Revert
581         2006-07-05  Richard Guenther  <rguenther@suse.de>
582         Andrew Pinski  <pinskia@gcc.gnu.org>
583
584         PR c++/27084
585         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
586         top level qualifiers for pointer type comparisons.
587
588 2006-08-02  Mark Mitchell  <mark@codesourcery.com>
589
590         PR c++/28557
591         * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
592
593 2006-07-31  Mark Mitchell  <mark@codesourcery.com>
594
595         PR c++/28523
596         * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
597         (stabilize_call): Tweak documentation.
598         (stabilize_init): Only call stabilize_call for calls.
599
600 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
601
602         PR c++/28432
603         * decl2.c (check_classfn): Remove early return.
604         * search.c (lookup_member): Return NULL with bad type.
605
606 2006-08-01  Steve Ellcey  <sje@cup.hp.com>
607
608         PR c++/28256
609         * decl.c (check_initializer): Check for 1 initializer on scalar types.
610
611 2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
612
613         PR debug/23336
614         * pt.c (tsubst_copy_and_build): Mark used enum types.
615         * semantics.c (finish_id_expression): Likewise.
616
617 2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
618
619         PR c++/6634
620         * decl.c (grokdeclarator): Check whether "long" or "short" was
621         specified for non-integral types.
622
623 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
624
625         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
626
627 2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
628
629         PR c++/27668
630         PR c++/27962
631         * pt.c (process_template_parm) Store invalid template
632         parameters as error_mark_node in the paramater list.
633         (push_inline_template_parms_recursive): Handle invalid
634         template parameters.
635         (comp_template_parms): Likewise.
636         (check_default_tmpl_arg): Likewise.
637         (coerce_template_template_parms): Likewise.
638         (mangle_class_name_for_template): Likewise.
639         (tsubst_template_parms): Likewise.
640         * error.c (dump_template_argument_list): Likewise.
641         
642 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
643
644         * cp-tree.h: Fix a comment typo.
645
646 2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
647
648         PR c++/27572
649         * decl.c (grokdeclarator): Return error_mark_node after invalid
650         typedef.
651
652 2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
653
654         PR c++/28460
655         * decl.c (grokvardecl): Use FROB_CONTEXT.
656         * pt.c (register_specialization): Likewise.
657
658 2006-07-23  Mark Mitchell  <mark@codesourcery.com>
659
660         PR c++/28025
661         * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
662         * name-lookup.c (unqualified_namespace_lookup): There is no way to
663         have a hidden name in non-namespace scopes.
664         * pt.c (tsubst_friend_class): Look for hidden names.
665         * decl.c (lookup_and_check_tag): Fix typo in comment.
666
667         * semantics.c (finish_compound_literal): Fix typo in comment.
668
669 2006-07-21  Jason Merrill  <jason@redhat.com>
670
671         * decl2.c (determine_visibility): Don't propagate visibility from
672         type to decl.
673         (constrain_class_visibility): Don't warn in system headers.
674         Don't warn about pointer fields.
675
676 2006-07-20  Mike Stump  <mrs@apple.com>
677
678         * decl2.c (determine_visibility_from_class): Don't use hidden
679         visibility for explicit instantiations.
680
681 2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
682
683         PR c++/28250
684         * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
685         valid decls.  Cleanup.
686
687         PR c++/28363
688         * semantics.c (check_template_template_default_arg): Simplify
689         error handling.
690
691 2006-07-20  Jason Merrill  <jason@redhat.com>
692
693         PR c++/28407
694         * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
695         const variables with implicit internal linkage.
696         * tree.c (decl_linkage): Only return lk_external if it's set.
697
698         PR c++/28409
699         * decl2.c (constrain_visibility): Ignore the anonymous namespace 
700         for extern "C" decls.
701         (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
702
703         * decl2.c (constrain_visibility): Remove specified and reason 
704         parameters.  Don't touch decls that already have explicit visibility.
705         (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from 
706         template.
707         (determine_visibility_from_class): Reverse sense of 
708         DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
709         (constrain_class_visibility): Only complain about member visibility
710         if the member type is another class.  Don't change visibility of the
711         current class.
712
713 2006-07-19  Mark Mitchell  <mark@codesourcery.com>
714
715         PR c++/28338
716         * decl.c (layout_var_decl): Don't call push_local_name here.
717         (initialize_artificial_var): Assert artificiality.
718         (cp_finish_decl): Call push_local_name here.
719
720 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
721
722         PR c++/28337
723         * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
724         templates.
725
726 2006-07-18  Mark Mitchell  <mark@codesourcery.com>
727
728         PR c++/28048
729         * semantics.c (check_accessibility_of_qualified_id): Robustify.
730
731         PR c++/28235
732         * pt.c (tsubst_decl): Handling substitutions into a static data
733         member from within the scope of the tempalte itself.
734
735 2006-07-18  Lee Millward  <lee.millward@gmail.com>
736
737         PR c++/28258
738         * method.c (locate_copy): Check for non_reference
739         returning error_mark_node.
740
741         PR c++/28260
742         * decl.c (duplicate_decls): Return error_mark_node
743         on ambiguous declaration.
744         
745 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
746
747         PR c++/27495
748         * search.c (adjust_result_of_qualified_name_lookup): Change
749         assert to part of if statement.
750
751 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
752
753         PR c++/28291
754         * decl.c (reshape_init_class): Return error_mark_node on error.
755
756 2006-07-17  Steve Ellcey  <sje@cup.hp.com>
757
758         PR c++/28304
759         * decl2.c (check_classfn): Return NULL_TREE on error.
760
761 2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
762
763         PR c++/28250
764         * name-lookup.c (pushdecl_maybe_friend): Return early on
765         error_mark_node.
766         * except.c (expand_start_catch_block): Use error_mark_node instead
767         of NULL_TREE for invalid decls.
768         * parser.c (cp_parser_exception_declaration): Return error_mark_node
769         on invalid catch parameter. Simplify.
770
771 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
772
773         PR c++/28370
774         * decl2.c (note_vague_linkage_var): Removed.
775         (finish_static_data_member_decl): Add decl to pending_statics vector
776         directly.  Do it even for non-public decls.
777
778 2006-07-15  Lee Millward  <lee.millward@gmail.com>
779
780         PR c++/28292
781         * decl2.c (acceptable_java_type): Robustify. Use
782         proper Boolean return type instead of return 1.
783         (check_java_method): Don't issue error about
784         type not being an acceptable Java parameter if 
785         it's error_mark_node.
786         
787         PR c++/28269
788         * parser.c (cp_parser_elaborated_type_specifier):
789         Return early if an invalid type was detected.
790         
791 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
792
793         PR c++/28249
794         * parser.c (cp_parser_check_decl_spec): New function.
795         (cp_parser_decl_specifier_seq): Factor out check for repeated
796         decl-specifiers into cp_parser_check_decl_spec. Use it.
797         (cp_parser_type_specifier_seq): Use it.
798
799         PR c++/28294
800         * semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
801         only.
802
803         PR c++/28387
804         * decl2.c (cplus_decl_attributes): Check for invalid decls.
805
806 2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
807
808         PR c++/28343
809         * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
810         * decl2.c (grokfield): Likewise.
811
812 2006-07-12  Geoffrey Keating  <geoffk@apple.com>
813
814         * decl2.c (determine_visibility): Don't change visibility of
815         function locals because of -fvisibility-inlines-hidden.
816
817 2006-07-12  Jason Merrill  <jason@redhat.com>
818
819         PR c++/28217
820         * semantics.c (note_decl_for_pch): Don't premangle templates.
821
822 2006-07-12  Martin Michlmayr  <tbm@cyrius.com>
823
824         * typeck.c (string_conv_p): Remove spurious quotation mark in
825         warning.
826
827 2006-07-07  Lee Millward  <lee.millward@gmail.com>
828             Andrew Pinski  <pinskia@gmail.com>
829
830         PR c++/27820
831         * decl.c (define_label): Return error_mark_node on error.
832         * semantics.c (finish_label_stmt): Don't call
833         add_stmt for invalid labels.
834         
835 2006-07-06  Jason Merrill  <jason@redhat.com>
836
837         PR c++/28279
838         * decl2.c (finish_static_data_member_decl): Don't assert
839         TREE_PUBLIC.
840
841 2006-07-05  Jason Merrill  <jason@redhat.com>
842
843         PR c++/13983
844         PR c++/17519
845         * class.c (check_field_decls): Check TYPE_PACKED after
846         stripping array types.
847         (finish_struct_bits): Don't copy TYPE_SIZE here.
848
849         PR c++/18681
850         * friend.c (is_friend): Fix DR 45 implementation.
851
852 2006-07-05  Richard Guenther  <rguenther@suse.de>
853         Andrew Pinski  <pinskia@gcc.gnu.org>
854
855         PR c++/27084
856         * cp-objcp-common.c (cxx_types_compatible_p): Ignore
857         top level qualifiers for pointer type comparisons.
858
859 2006-07-01  Jason Merrill  <jason@redhat.com>
860
861         PR c++/28215
862         * method.c (make_thunk): Unset DECL_USE_TEMPLATE and 
863         DECL_TEMPLATE_INFO.
864
865 2006-06-30  Jason Merrill  <jason@redhat.com>
866
867         PR c++/26577
868         * call.c (build_new_method_call): Force evaluation of the 
869         instance pointer, not the object.
870
871 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
872
873         * decl2.c: Fix a comment typo.
874
875 2006-06-30  Jason Merrill  <jason@redhat.com>
876
877         PR c++/18698
878         * decl2.c (grokfield): Only try to treat the decl as an access 
879         declaration if the scope is a class.
880
881 2006-06-29  Jason Merrill  <jason@redhat.com>
882
883         PR c++/26905
884         PR c++/26612
885         PR c++/27000
886         PR c++/26984
887         PR c++/19134
888         * decl2.c (determine_visibility): Overhaul.
889         (determine_visibility_from_class): Likewise.
890         (min_vis_r, type_visibility, constrain_visibility): New fns.
891         (constrain_visibility_for_template): Likewise.
892         (constrain_class_visibility): Likewise.
893         * decl.c (cp_finish_decl): Call determine_visibility for function
894         decls, too.
895         * name-lookup.c (pushtag): Call determine_visibility.
896         * decl.c (duplicate_decls): Don't copy visibility from template to
897         specialization.
898         * pt.c (check_explicit_specialization): Likewise.
899         (lookup_template_class, tsubst_decl): Call determine_visibility.
900         * class.c (finish_struct_1): Call constrain_class_visibility.
901
902         PR c++/26905
903         PR c++/21675
904         PR c++/17470
905         * parser.c (cp_parser_explicit_instantiation): Pass the attributes
906         to grokdeclarator.
907         (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
908         (cp_parser_enum_specifier): Likewise.
909         (cp_parser_elaborated_type_specifier): Apply attributes if this
910         declares only the class.
911         (cp_parser_class_specifier): Apply leading attributes immediately.
912         * semantics.c (begin_class_definition): Add attributes parameter,
913         apply them to the type.
914
915         PR c++/21581
916         PR c++/25915
917         * tree.c (decl_anon_ns_mem_p): New function.
918         * cp-tree.h: Declare it.
919         * decl2.c (determine_visibility): Make anonymous namespace
920         members static.
921         (min_vis_r, constrain_visibility): Likewise.
922         * rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
923         pseudo-types.
924         * decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
925         global_namespace.
926         * name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
927         on anonymous namespaces.
928
929 2006-06-28  Jason Merrill  <jason@redhat.com>
930
931         PR c++/27424
932         * pt.c (convert_template_argument): Pass all template arguments 
933         on to coerce_template_template_parms.
934
935 2006-06-25  Lee Millward  <lee.millward@gmail.com>
936             Mark Mitchell <mark@codesuorcery.com>
937
938         PR c++/28054
939         * decl2.c (grokbitfied): Remove check for grokdeclarator
940         returning NULL_TREE, instead check for error_mark_node
941         to indicate failure.
942         * decl.c (grokdeclarator): Adjust block comment.
943         
944 2006-06-25  Lee Millward  <lee.millward@gmail.com>
945
946         PR c++/28051
947         * mangle.c (mangle_conv_op_name_for_type): Check for
948         invalid types.
949         * name-lookup.c (push_class_level_binding): Robustify.
950         (do_class_using_decl): Return early if name is error_mark_node.
951         
952 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
953
954         PR c++/28114
955         * name-lookup.c (pushtag): Return if we have error_mark_node.
956
957 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
958
959         PR c++/27019
960         * typeck2.c (process_init_constructor_array): Set ce->value on errors.
961
962 2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
963
964         PR c++/28112
965         * parser.c (cp_parser_attribute_list): Skip attributes with invalid
966         arguments.  Fix comment.
967
968         PR c++/11468
969         * init.c (build_new_1): Handle error_mark_nodes returned by
970         build_java_class_ref.
971         (build_java_class_ref): Do not abort compilation, but return
972         error_mark_node.  Improve error message.  Fix indentation.
973
974 2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>
975
976         PR target/27789
977         * decl.c (start_decl): Check that dllimports are not initialized.
978
979 2006-06-22  Lee Millward  <lee.millward@gmail.com>
980
981         PR c++/27805
982         * typeck2.c (build_m_component_ref): Use error_operand_p.
983
984         PR c++/27821
985         * decl.c (grokdeclarator): Return error_mark_node on
986         invalid uses of the scope resolution operator.
987         
988 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
989
990         PR c++/28111
991         * pt.c (determine_specialization): Check for invalid decls.
992
993         PR c++/28110
994         * pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
995         parameters.
996
997         PR c++/28109
998         * rtti.c (get_tinfo_decl_dynamic): Robustify.
999
1000 2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1001
1002         PR c++/28052
1003         * init.c (push_base_cleanups): Skip members with invalid types.
1004         * typeck.c (build_class_member_access_expr): Robustify.
1005
1006 2006-06-19  Mark Mitchell  <mark@codesourcery.com>
1007
1008         * pt.c (instantiate_template): Fix typo in comment.
1009
1010 2006-06-19  Richard Guenther  <rguenther@suse.de>
1011
1012         * parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
1013         power-of-two token vector size.
1014
1015 2006-06-16  Mark Mitchell  <mark@codesourcery.com>
1016
1017         PR c++/28016
1018         * decl.c (cp_finsh_decl): Do not emit uninstantiated static data
1019         members.
1020
1021         PR c++/27979
1022         * call.c (standard_conversion): Strip cv-qualifiers from bitfield
1023         types.
1024
1025         PR c++/27884
1026         * decl.c (have_extern_spec): Remove.
1027         (start_decl): Do not check have_extern_spec.
1028         (start_function): Likewise.
1029         * cp-tree.h (have_extern_spec): Remove.
1030         * parser.c (cp_parser_linkage_specification): Don't set
1031         have_extern_spec.
1032         (cp_parser_init_declarator): Likewise.
1033         (cp_parser_parameter_declaration): Do not treat parameters as
1034         within the scope of an unbraced linkage specification.
1035
1036 2006-06-15  Mark Mitchell  <mark@codesourcery.com>
1037
1038         PR c++/27689
1039         * cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
1040         macro.
1041         * pt.c (unify): Use it.
1042
1043         PR c++/27666
1044         * call.c (build_conditional_expr): Robustify.
1045
1046         PR c++/27640
1047         * pt.c (instantiate_template): Set processing_template_decl to
1048         zero while performing substitutions.
1049
1050 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1051
1052         PR c++/27665
1053         * parser.c (cp_parser_unqualified_id): Use constructor_name_p to
1054         identify destructors.
1055         (cp_parser_nested_name_specifier_opt): Remove invalid
1056         optimization.
1057         (cp_parser_template_id): Refine heuristic for determining whether
1058         we are entering a scope.
1059
1060         PR c++/27648
1061         * parser.c (cp_parser_declarator): Robustify.
1062
1063         PR c++/26559
1064         * pt.c (tsubst_expr): Use finish_omp_atomic.
1065         (value_dependent_expression_p): All CALL_EXPRs are dependent.
1066         * semantics.c (finish_omp_atomic): Rework to use standard
1067         paradigms for handling non-dependent expressions.
1068
1069 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1070
1071         * typeck.c (build_modify_expr): Tidy diagnostic message.
1072
1073 2006-06-14  Mark Mitchell  <mark@codesourcery.com>
1074
1075         PR c++/28018
1076         * typeck.c (build_modify_expr): Disallow array assignment.
1077
1078 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1079
1080         * cp-tree.def: Fix typo.
1081
1082 2006-06-13  Mark Mitchell  <mark@codesourcery.com>
1083
1084         PR c++/27227
1085         * decl.c (decls_match): Allow an extern "C" variable declarations
1086         from different namespaces to match.
1087         (duplicate_decls): Disallow redeclaring a variable with a
1088         different linkage specification.
1089
1090 2006-06-13  Jakub Jelinek  <jakub@redhat.com>
1091
1092         PR middle-end/27793
1093         * cp-tree.h (cxx_int_tree_map): New struct.
1094         (struct language_function): Add extern_decl_map field.
1095         * name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
1096         to cp_function_chain->extern_decl_map hash table instead of
1097         copying over DECL_UID.
1098         * cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
1099         functions.
1100         (cp_genericize_r): Remap DECL_EXTERN local decls using
1101         cp_function_chain->extern_decl_map hash table.
1102         * decl.c (finish_function): Clear extern_decl_map.
1103
1104 2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1105
1106         PR c++/27601
1107         * semantics.c (finish_offsetof): Handle pseudo-destructors.
1108
1109         PR c++/27933
1110         * name-lookup.c (lookup_qualified_name): Always return error_mark_node
1111         if lookup fails.
1112
1113         PR c++/27951
1114         * decl2.c (finish_anon_union): Return early if build_anon_union_vars
1115         fails.
1116
1117 2006-06-12  Roger Sayle  <roger@eyesopen.com>
1118
1119         PR c++/21210
1120         * typeck2.c (build_functional_cast): Use cp_convert to construct
1121         non-aggregate initializers instead of the user-level build_c_cast.
1122
1123 2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1124
1125         PR c++/27601
1126         * cp-tree.h (finish_offsetof): Add prototype.
1127         * semantics.c (finish_offsetof): New function.
1128         * parser.c (cp_parser_builtin_offsetof): Call it instead of
1129         fold_offsetof.
1130         * pt.c (tsubst_copy_and_build): Likewise.
1131
1132 2006-06-06  Mark Mitchell  <mark@codesourcery.com>
1133
1134         PR c++/27177
1135         * call.c (standard_conversion): Require that the derived type be
1136         complete when performing a derived-to-base conversion.
1137
1138 2006-06-04  Mark Mitchell  <mark@codesourcery.com>
1139
1140         PR c++/27819
1141         * decl.c (cp_finish_decl): Process initializers for static data
1142         members with non-dependent initializers, even in templates.
1143
1144         PR c++/27722
1145         * decl.c (maybe_deduce_size_from_array_init): If the declaration
1146         is erroneous, give it an erroneous type.
1147         (layout_var_decl): If the type is erroneous, give up.
1148         (check_initializer): Likewise.
1149
1150         PR c++/27807
1151         * cp-tree.h (TYPE_OBJ_P): New macro.
1152         (TYPE_PTROB_P): Use it.
1153         (TYPE_REF_OBJ_P): Likewise.
1154         * semantics.c (finish_compound_literal): Do not permit compound
1155         literals of non-object types.
1156
1157         PR c++/27806
1158         * typeck.c (original_type): Robustify.
1159
1160 2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1161
1162         PR c++/27804
1163         * init.c (constant_value_1): Return decl instead of error_mark_node
1164         for invalid initializers.
1165
1166 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1167
1168         PR c++/27592
1169         * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
1170         on operand of the COND_EXPR for the null pointer check.
1171
1172 2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>
1173
1174         PR c++/26740
1175         * typeck.c (build_unary_op): Mark the function as being used.
1176
1177 2006-06-01  Alexandre Oliva  <aoliva@redhat.com>
1178
1179         PR c++/26660
1180         * parser.c (cp_parser_initial_pragma): Read one more token for
1181         caller after reading PCH file in.
1182
1183 2006-05-31  Mark Mitchell  <mark@codesourcery.com>
1184
1185         PR c++/27801
1186         * call.c (perform_implicit_conversion): Do not actually perform
1187         conversions in templates.
1188
1189         PR c++/26496
1190         * call.c (resolve_args): Check for invalid uses of bound
1191         non-static member functions.
1192         * init.c (build_offset_ref): Return error_mark_node for errors.
1193
1194         PR c++/27385
1195         * decl.c (reshape_init): Robustify.
1196         (reshape_init_array_1): Likewise.
1197
1198 2006-05-30  Mark Mitchell  <mark@codesourcery.com>
1199
1200         PR c++/27808
1201         * parser.c (cp_parser_decl_specifier_seq): Issue errors about
1202         "friend" specifiers that do not appear in class scopes.
1203
1204         PR c++/27803
1205         * class.c (check_bitfield_decl): Ensure that all bitfields have
1206         integral type.
1207
1208 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
1209
1210         * pt.c (convert_nontype_argument): Fix a typo in an error
1211         message.
1212
1213 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
1214
1215         * decl.c, decl2.c, parser.c: Fix comment typos.  Follow
1216         spelling conventions.
1217
1218 2006-05-24  Mark Mitchell  <mark@codesourcery.com>
1219
1220         PR c++/20103
1221         * decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
1222         error_mark_node to indicate an initialization is OK.
1223         (start_decl): Likewise.  Adjust call to start_decl_1.
1224         (start_decl_1): Add initialized parameter.  Simplify.
1225         * except.c (initialize_handler_parm): Adjust call to
1226         setart_decl_1.
1227         (expand_start_catch_block): Let cp_finish_decl initialize catch
1228         parameters.
1229         * cp-tree.h (start_decl_1): Adjust prototype.
1230         * pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
1231         (instantiate_decl): Let cp_finish_decl handle initialization.
1232         * semantics.c (finish_compound_literal): Create a temporary
1233         variable for the literal.
1234         * typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
1235         cases.
1236         * decl2.c (finish_static_data_member_decl): Don't set
1237         DECL_INITIAL.
1238         (grokfield): Do not try to initialize functions.
1239
1240 2006-05-23  Mark Mitchell  <mark@codesourcery.com>
1241
1242         PR c++/20173
1243         * pt.c (determine_specialization): Disallow partial
1244         specializations of templates.
1245
1246 2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1247
1248         PR c++/27716
1249         * typeck.c (build_modify_expr): Test arguments for error_operand_p.
1250
1251         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.
1252
1253 2006-05-21  Mark Mitchell  <mark@codesourcery.com>
1254
1255         PR c++/27210
1256         * cp-tree.h (cp_save_expr): New function.
1257         * init.c (build_new): Correct logic for zero-element array
1258         warning.  Use cp_save_expr.
1259         * tree.c (cp_save_expr): New function.
1260
1261 2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1262
1263         PR c++/27398
1264         * decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
1265         or void_type_node.
1266
1267 2006-05-19  Mike Stump  <mrs@apple.com>
1268
1269         * typeck.c (default_conversion): Remove static.
1270
1271 2006-05-19  Mark Mitchell  <mark@codesourcery.com>
1272
1273         PR c++/26433
1274         * cp-tree.h (begin_function_try_block): Change prototype.
1275         (finish_function_handler_sequence): Likewise.
1276         * parser.c (cp_parser_function_try_block): Adjust calls.
1277         * pt.c (tsubst_expr): Adjust calls.
1278         * semantics.c (begin_function_try_block): Create an artificial
1279         outer scope.
1280         (finish_function_handler_sequence): Close it.
1281
1282 2006-05-18  Mark Mitchell  <mark@codesourcery.com>
1283
1284         PR c++/27471
1285         PR c++/27506
1286         * typeck.c (decay_conversion): Convert bitfields to their declared
1287         types here.  Improve documentation.  Avoid use of cp_convert.
1288         (default_conversion): Make it static.  Perform integral promotions
1289         before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
1290         conversions.
1291         * init.c (build_init): Remove.
1292         (expand_default_init): Do not call rvalue.
1293         * call.c (null_ptr_cst_p): Robustify.
1294         (build_conditional_expr): Tidy.
1295         * except.c (build_throw): Do not perform lvalue-to-rvalue
1296         conversion on operand before initializing temporary.
1297         * tree.c (convert.h): Include it.
1298         (convert_bitfield_to_declared_type): Use convert_to_integer, not
1299         cp_convert.
1300         (rvalue): Don't convert bitfields to their declared type here.
1301         * cp-tree.h (build_init): Remove.
1302         (default_conversion): Likewise.
1303         * typeck2.c (build_m_component_ref): Do not perform
1304         lvalue-to-rvalue, function-to-pointer, or array-to-pointer
1305         conversions here.  Correct error message.
1306
1307 2006-05-17  Mark Mitchell  <mark@codesourcery.com>
1308
1309         PR c++/26122
1310         * decl2.c (check_member_template): Remove checks for virtual
1311         functions.
1312         * parser.c (cp_parser_function_specifier_opt): Complain about
1313         virtual templates.
1314         (cp_parser_pure_specifier): Likewise.
1315
1316         PR c++/26068
1317         * parser.c (cp_parser_set_storage_class): Check for
1318         invalid uses of storage classes on unbraced linkage
1319         specifications.
1320         (cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
1321         to cp_parser_set_storage_class.
1322
1323 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
1324
1325         PR c++/27491
1326         * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
1327         on CONSTRUCTORs.
1328
1329         PR middle-end/27415
1330         * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
1331         on combined parallel workshare constructs.
1332         * pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.
1333
1334 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1335
1336         PR driver/26885
1337         * Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).
1338
1339 2006-05-15  Mark Mitchell  <mark@codesourcery.com>
1340
1341         PR c++/27339
1342         * cp-tree.h (perform_access_checks): New function.
1343         * semantics.c (perform_access_checks): New function.
1344         (perform_deferred_access_checks): Use it.
1345         * parser.c (cp_parser_simple_declaration): Adjust call to
1346         cp_parser_init_declarator.
1347         (cp_parser_type_parameter): Do not defer checks in default
1348         arguments.
1349         (cp_parser_explicit_specialization): Adjust call to
1350         cp_parser_single_declaration.
1351         (cp_parser_init_declarator): Perform template-parameter access
1352         checks.
1353         (cp_parser_parameter_declaration): Do not defer checks for
1354         template parameter default arguments.
1355         (cp_parser_template_declaration_after_export): Gather access
1356         checks for template parameters, and pass them to
1357         cp_parser_single_declaration.
1358         (cp_parser_template_parameter_access_checks): New function.
1359         (cp_parser_single_declaration): Add checks parameter.
1360
1361         PR c++/27505
1362         * call.c (convert_like_real): Convert bitfields to their declared
1363         types when forming an rvalue.
1364         * tree.c (convert_bitfield_to_declared_type): New function.
1365         (rvalue): Use it.
1366         * cp-tree.h (convert_bitfield_to_declare_type): Declare it.
1367
1368 2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1369
1370         PR c++/27582
1371         * pt.c (any_dependent_template_arguments_p): Return early on invalid
1372         argument list.
1373
1374         PR c++/27581
1375         * search.c (adjust_result_of_qualified_name_lookup): Skip on
1376         invalid context_class.
1377
1378         PR c++/27315
1379         * pt.c (do_decl_instantiation): Return early on invalid decl.
1380
1381         PR c++/27559
1382         * pt.c (push_template_decl_real): Return error_mark_node instead
1383         of broken decl.
1384
1385         PR c++/27496
1386         * pt.c (tsubst_friend_class): Return early on invalid friend
1387         declarations.
1388
1389 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
1390
1391         * Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
1392         (cp/decl2.o): Likewise.
1393         (cp/typeck.o): Likewise.
1394         (cp/cvt.o): Likewise.
1395         (cp/parser.o): Likewise.
1396         (cp/call.o): Replace target.h with $(TARGET_H).
1397
1398 2006-05-14  Alexandre Oliva  <aoliva@redhat.com>
1399
1400         * pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
1401         COMPONENT_REF alone.
1402
1403 2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1404
1405         PR c++/27547
1406         * decl.c (copy_fn_p): Return early on non-member functions.
1407
1408 2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1409
1410         PR c++/27447
1411         * decl2.c (build_memfn_type): Skip invalid functions and class types.
1412
1413 2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1414
1415         PR c++/27427
1416         * pt.c (convert_nontype_argument): Return early on invalid arguments.
1417
1418         * pt.c (process_template_parm): Remove superfluous temporary.
1419
1420         PR c++/27430
1421         * pt.c (process_template_parm): Handle erroneous non-type parameters.
1422
1423         PR c++/27423
1424         * typeck.c (convert_for_initialization): Skip erroneous types.
1425
1426         PR c++/27422
1427         * typeck.c (convert_arguments): Return early on args with
1428         invalid types.
1429
1430 2006-05-03  Aldy Hernandez  <aldyh@redhat.com>
1431
1432         PR/21391
1433         * typeck.c (build_static_cast_1): Save casted types in used types
1434         hash table.
1435         (build_reinterpret_cast_1): Same.
1436         * rtti.c (build_dynamic_cast_1): Same.
1437
1438 2006-05-04  Jakub Jelinek  <jakub@redhat.com>
1439
1440         PR c++/27359
1441         * parser.c (cp_parser_omp_for_loop): Only call
1442         cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
1443         called.
1444
1445 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
1446
1447         PR c++/27102
1448         * decl.c (grokdeclarator): Robustify checks for defining members
1449         of incomplete types.
1450
1451         PR c++/27309
1452         * class.c (add_method): Call grok_special_member_properties.
1453         * decl.c (grokdeclarator): Don't call it here.
1454         (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
1455         assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
1456         constructor.
1457         (start_method): Don't call grok_special_member_properties.
1458         * method.c (implicitly_declare_fn): Likewise.
1459         * pt.c (instantiate_class_template): Likewise.
1460         * decl2.c (grokfield): Likewise.
1461
1462 2006-05-02  Jakub Jelinek  <jakub@redhat.com>
1463
1464         PR middle-end/27337
1465         * cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
1466         * cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
1467         * cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.
1468
1469 2006-04-30  Mark Mitchell  <mark@codesourcery.com>
1470
1471         PR c++/27094
1472         * pt.c (tsubst_default_argument): Increment function_depth around
1473         call to tsubst_expr.
1474         * parser.c (cp_parser_parameter_declaration): Likewise.
1475         * decl2.c (mark_used): Tidy.
1476
1477 2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1478
1479         PR c++/27278
1480         * decl.c (grok_op_properties): Skip operators with invalid args
1481         when checking for class-type or enum-type args.
1482
1483 2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1484
1485         PR c++/27279
1486         * decl.c (copy_fn_p): Skip functions with invalid first arg.
1487
1488 2006-04-27  Mark Mitchell  <mark@codesourcery.com>
1489
1490         PR c++/27292
1491         * tree.c (rvalue): Convert bitfields to their declared types.
1492
1493         PR c++/27102
1494         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
1495         TYPENAME_TYPE.
1496
1497 2006-04-24  Mark Mitchell  <mark@codesourcery.com>
1498
1499         PR c++/27292
1500         * typeck.c (decay_conversion): Don't adjust bitfield types.
1501         (perform_integral_promotions): Treat bitfield enums as enums, not
1502         as short integer types.
1503         * tree.c (rvalue): Convert bitfields to their correct types.
1504
1505 2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1506
1507         PR c++/19963
1508         * class.c (layout_class_type): Skip fields with invalid types.
1509
1510 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
1511
1512         PR c++/26912
1513         * cp-tree.h (build_this_parm): Declare.
1514         (grok_method_quals): Remove.
1515         (build_memfn_type): Declare.
1516         (build_artificial_parm): Declare.
1517         (do_friend): Remove quals parameter.
1518         * decl.c (build_this_parm): New function.
1519         (grokfndecl): Use it.  Do not pass quals to grokclassfn.
1520         (grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
1521         unnecessary TYPE_DECLs.  Correct qualification of member function
1522         types.  Tidy.
1523         * method.c (implicitly_declare_fn): Use build_this_parm.
1524         * friend.c (do_friend): Remove quals parameter.
1525         * decl2.c (grok_method_quals): Remove.
1526         (build_memfn_type): New function.
1527         (build_artificial_parm): Give it external linkage.
1528         (grokclassfn): Remove quals parameter.  Do not build "this"
1529         PARM_DECL here.
1530
1531         PR c++/26534
1532         * cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
1533         * typeck.c (is_bitfield_expr_with_lowered_type): New function.
1534         (decay_conversion): Convert bitfield expressions to the correct
1535         type.
1536         (build_modify_expr): Remove spurious conversions.
1537         * class.c (layout_class_type): Modify the type of bitfields to
1538         indicate a limited range.
1539         * call.c (standard_conversion): Adjust the type of bitfield
1540         expressions used in an rvalue context.
1541         (build_conditional_expr): Likewise.
1542
1543 2006-04-22  Kazu Hirata  <kazu@codesourcery.com>
1544
1545         * decl.c: Fix comment typos.
1546
1547 2006-04-21  Eric Christopher  <echristo@apple.com>
1548
1549         * decl.c: Fix typo in function name.
1550
1551 2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1552
1553         PR c++/26558
1554         * parser.c (cp_parser_class_name): Check for invalid typenames.
1555         Rearrange code.
1556
1557         PR c++/26739
1558         * pt.c (tsubst_friend_function): Return early if
1559         pushdecl_namespace_level fails.
1560
1561         PR c++/26036
1562         * typeck.c (convert_arguments): Return error_mark_node instead of
1563         error_mark_list.
1564         * cp-tree.h (error_mark_list): Remove declaration.
1565         * decl.c (error_mark_list): Remove definition.
1566         (cxx_init_decl_processing): Do not initialize error_mark_list.
1567
1568         PR c++/10385
1569         * rtti.c (build_dynamic_cast_1): Check for invalid conversions
1570         before calling convert_to_reference.
1571         * cvt.c (convert_to_reference): Assert that reftype is a
1572         REFERENCE_TYPE.
1573
1574 2006-04-19  Mark Mitchell  <mark@codesourcery.com>
1575
1576         PR c++/27102
1577         * class.c (currently_open_class): Tidy.
1578         * decl.c (grokdeclarator): If we encounter an erroneous
1579         declarator, assume that we have already issued an error message
1580         and return.  Return error_mark_node instead of NULL_TREE in more
1581         places.  Issue errors about function definitions that do not have
1582         a function declarator.  Check for complete types for all function
1583         definitions.
1584         * cp-tree.h (cp_error_declarator): Remove.
1585         (currently_open_class): Change return type.
1586         * parser.c (cp_parser_id_expression): Add optional_p parameter.
1587         (cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
1588         (cp_parser_id_expression): Likewise.
1589         (cp_parser_unqualified_id): If the name is optional, return
1590         NULL_TREE.
1591         (cp_parser_postfix_dot_deref_expression): Adjust calls.
1592         (cp_parser_type_parameter): Likewise.
1593         (cp_parser_unqualified_id): Likewise.
1594         (cp_parser_direct_declarator): Likewise.
1595         (cp_parser_declarator_id): Add optional_p parameter.
1596         (cp_parser_function_definition_from_specifiers_and_declarator):
1597         Assume that start_function indicates failure only if it has issued
1598         an error.
1599         (cp_parser_omp_var_list_no_open): Adjust calls.
1600
1601 2006-04-17  Janis Johnson  <janis187@us.ibm.com>
1602
1603         PR c++/26114, c++/26115
1604         * typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
1605         * class.c (check_field_decls): Ditto.
1606
1607 2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1608
1609         * init.c (build_offset_ref): Remove superfluous temporary.
1610
1611 2006-04-16  Mark Mitchell  <mark@codesourcery.com>
1612
1613         PR c++/26365
1614         * typeck.c (finish_class_member_access_expr): Robustify
1615
1616 2006-04-15  Kazu Hirata  <kazu@codesourcery.com>
1617
1618         * Make-lang.in (cp/pt.o): Depend on vecprim.h.
1619         * pt.c: Include vecprim.h.
1620         (inline_parm_levels): Change the type to VEC(int,heap) *.
1621         (inline_parm_levels_used): Remove.
1622         (maybe_begin_member_template_processing,
1623         maybe_end_member_template_processing): Use VEC instead of
1624         VARRAY.
1625
1626         * cp/call.c: Fix comment typos.
1627
1628 2006-04-12  Mark Mitchell  <mark@codesourcery.com>
1629
1630         * parser.c (cp_parser_init_declarator): Initialize local variables
1631         aggressively.
1632
1633 2006-04-12  Roger Sayle  <roger@eyesopen.com>
1634
1635         * parser.c (cp_parser_init_declarator): Initialise
1636         is_parenthesized_init to false to avoid compiler warning.
1637
1638 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
1639
1640         * cp-tree.h (build_operator_new_call): Adjust prototype.
1641         (build_new_method_call): Likewise.
1642         (build_op_delete_call): Likewise.
1643         * init.c (build_raw_new_expr): New function.
1644         (build_new_1): Pass information as parameters, rather than
1645         bundling it into a NEW_EXPR.
1646         (build_new): Adjust accordingly.
1647         (build_vec_delete_1): Adjust for changes to build_op_delete_call.
1648         (build_delete): Likewise.
1649         * decl.c (finish_destructor_body): Likewise.
1650         * call.c (build_operator_new_call): Return the allocation function
1651         used.
1652         (build_op_delete_call): Take allocation function as parameter.
1653         (build_special_member_call): Adjust call to build_new_method_call.
1654         (build_new_method_call): Return function called.
1655         * pt.c (tsubst_copy_and_build): Adjust call to
1656         build_new_method_call.
1657         * semantics.c (finish_call_expr): Likewise.
1658         * parser.c (cp_parser_postfix_expression): Likewise.
1659         * typeck2.c (cxx_incomplete_type_diagnostic): Refer to
1660         "incomplete", not "undefined", types.
1661
1662         PR c++/26295
1663         * decl.c (grokdeclarator): Remove namespace-handling code for
1664         pointers-to-members.
1665         * parser.c (cp_parser_ptr_operator): Check for qualified names
1666         using namespaces.
1667
1668         PR c++/26122
1669         * parser.c (cp_parser_init_declarator): Adjust logic for deciding
1670         whether or not to look for a pure-specifier.
1671         (cp_parser_member_declaration): Likewise.
1672
1673 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
1674
1675         * decl2.c, pt.c, semantics.c: Fix comment typos.
1676
1677 2006-04-06  Roger Sayle  <roger@eyesopen.com>
1678
1679         * call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.
1680
1681 2006-04-05  Jason Merrill  <jason@redhat.com>
1682
1683         * name-lookup.c (push_namespace_with_attribs): Temporarily disable
1684         default hidden visibility for anonymous namespace.
1685
1686 2006-03-29  Roger Sayle  <roger@eyesopen.com>
1687
1688         PR c++/22494
1689         * init.c (build_vec_delete_1): Convert BASE pointer's type to
1690         the base pointer type to avoid a type mismatch in the EQ_EXPR.
1691
1692 2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>
1693
1694         * search.c (maybe_suppress_debug_info): If
1695         flag_emit_class_debug_always then don't suppress.
1696
1697 2006-03-22  Jason Merrill  <jason@redhat.com>
1698
1699         * name-lookup.c (push_namespace_with_attribs): Only apply hidden
1700         visibility to anonymous namespaces if HAVE_GAS_HIDDEN.
1701
1702 2006-03-21  Jakub Jelinek  <jakub@redhat.com>
1703
1704         PR c++/26691
1705         * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.
1706
1707 2006-03-21  Jason Merrill  <jason@redhat.com>
1708
1709         PR c++/21581
1710         * parser.c (cp_parser_declaration): Support attributes on
1711         anonymous namespaces.
1712         * name-lookup.c (push_namespace_with_attribs): Anonymous
1713         namespaces default to hidden visibility.
1714
1715 2006-03-20  Jason Merrill  <jason@redhat.com>
1716
1717         PR c++/21764, c++/19238
1718         * decl.c (cp_finish_decl): Call determine_visibility later.
1719         (start_preparsed_function): Likewise.
1720         * cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
1721         (TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
1722         * name-lookup.h (struct cp_binding_level): Add has_visibility
1723         bitfield.
1724         * name-lookup.c: Include c-pragma.h.
1725         (push_namespace_with_attribs): Split out from push_namespace.
1726         Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
1727         (leave_scope): Pop visibility if appropriate.
1728         * decl2.c (determine_visibility_from_class): Split out from...
1729         (determine_visibility): ...here.  Handle function scope and
1730         nested classes.
1731         (import_export_decl): Move visibility handling to
1732         determine_visibility_from_class.
1733         * parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
1734         attributes on namespace declarations.
1735
1736 2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1737
1738         PR c++/6634
1739         * decl.c (grokdeclarator): Do not accept long long double.
1740         Reorganize checks for invalid (combinations of) type modifiers.
1741         Quote modifiers in messages.
1742
1743 2006-03-09  Jason Merrill  <jason@redhat.com>
1744
1745         PR c++/16387, c++/16389
1746         * typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
1747         (cxx_sizeof_or_alignof_expr): Split out from here.
1748
1749 2006-03-09  Diego Novillo  <dnovillo@redhat.com>
1750
1751         Merge from gomp-20050608-branch
1752
1753         2006-02-02  Diego Novillo  <dnovillo@redhat.com>
1754
1755                 * decl.c (pop_labels_1): Use appropriate pointer casting.
1756                 (poplevel_named_label_1): Likewise.
1757                 (named_label_entry_hash): Likewise.
1758                 (named_label_entry_eq): Likewise.
1759                 (check_goto): Likewise.
1760                 (define_label): Likewise.
1761
1762         2006-01-26  Diego Novillo  <dnovillo@redhat.com>
1763
1764                 * cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
1765                 of TREE_BLOCK.
1766                 * pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
1767                 instead of TREE_CODE/TREE_OPERAND.
1768                 * semantics.c: Likewise.
1769                 * parser.c: Likewise.
1770
1771         2005-11-10  Diego Novillo  <dnovillo@redhat.com>
1772
1773                 * parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
1774                 target does not support TLS.
1775
1776         2005-11-09  Jakub Jelinek  <jakub@redhat.com>
1777
1778                 * decl.c (redeclaration_error_message): Don't error about
1779                 DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
1780                 (olddecl).
1781
1782         2005-11-08  Jakub Jelinek  <jakub@redhat.com>
1783
1784                 PR c++/24735
1785                 * semantics.c (finish_omp_barrier, finish_omp_flush): New
1786                   functions.
1787                 * parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
1788                 (cp_parser_omp_flush): Call finish_omp_flush.
1789                 * cp-tree.h (finish_omp_barrier, finish_omp_flush): New
1790                   prototypes.
1791
1792                 PR c++/24734
1793                 * pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.
1794
1795         2005-11-03  Jakub Jelinek  <jakub@redhat.com>
1796
1797                 * semantics.c (finish_omp_threadprivate): Error on class-scope
1798                 variables.
1799
1800         2005-11-02  Jakub Jelinek  <jakub@redhat.com>
1801
1802                 * parser.c (cp_parser_omp_all_clauses): If some clause
1803                 type is not allowed, don't remove just one of the
1804                 clauses, but all clauses added in that loop round.
1805
1806                 * semantics.c (finish_omp_clauses): Fix function
1807                 comment. Don't handle non-const or mutable specially,
1808                 as const and not mutable is predetermined shared and
1809                 that leads to double error. Don't ICE if copyin var is
1810                 PARM_DECL.
1811
1812                 PR c++/24613
1813                 * parser.c (cp_parser_pragma): Diagnose
1814                 PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
1815                 construct.
1816
1817                 * semantics.c (finish_omp_threadprivate): Error if V
1818                   is automatic variable or has incomplete type.
1819
1820         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
1821
1822                 * parser.c (cp_parser_omp_all_clauses): Use
1823                 OMP_CLAUSE_CHAIN instead of TREE_CHAIN.
1824
1825         2005-11-01  Diego Novillo  <dnovillo@redhat.com>
1826
1827                 * parser.c (cp_parser_omp_all_clauses): When emitting an
1828                 error message, remove the invalid clause from the list.
1829
1830         2005-10-31  Diego Novillo  <dnovillo@redhat.com>
1831
1832                 * parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
1833                 combined parallel+workshare directives.
1834
1835         2005-10-31  Richard Henderson  <rth@redhat.com>
1836
1837                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
1838                 Use cxx_omp_clause_dtor.
1839                 * cp-tree.h (CP_OMP_CLAUSE_INFO): New.
1840                 (cxx_omp_clause_dtor): New.
1841                 * cp-gimplify.c (cxx_omp_clause_apply_fn): New.
1842                 (cxx_omp_clause_default_ctor): Use it.
1843                 (cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
1844                 Likewise.
1845                 (cxx_omp_clause_dtor): New.
1846                 * semantics.c (finish_omp_clauses): Rewrite cdtor
1847                 checking to fill in CP_OMP_CLAUSE_INFO.  Don't
1848                 specialcase LASTPRIVATE for removal.
1849                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
1850                 cxx_omp_clause_assign_op): Move to cp-gimplify.c.
1851
1852         2005-10-28  Jakub Jelinek  <jakub@redhat.com>
1853
1854                 * semantics.c (finish_omp_threadprivate): If
1855                   DECL_RTL_SET_P, call make_decl_rtl again so that
1856                   encode_section_info can update SYMBOL_REF's flags.
1857
1858         2005-10-26  Jakub Jelinek  <jakub@redhat.com>
1859
1860                 * semantics.c (finish_omp_for): Don't segfault if COND
1861                 or INCR is NULL.  If not calling c_finish_omp_for
1862                 right away and one of COND and INCR is NULL, issue
1863                 error and don't expand anything.
1864
1865                 PR c++/24512
1866                 * cp-tree.h (finish_omp_for): Add PRE_BODY argument.
1867                 * semantics.c (finish_omp_for): Likewise.  Set
1868                 OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
1869                 into the current statement list if not processing
1870                 template decl or pass it to c_finish_omp_for.
1871
1872                 * parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
1873                 into PRE_BODY statement list.  Pass it to finish_omp_for.
1874                 * pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
1875                 OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
1876                 finish_omp_for.  Put all the statements into sk_omp
1877                 scope.
1878
1879         2005-10-25  Jakub Jelinek  <jakub@redhat.com>
1880
1881                 PR c++/24516
1882                 * parser.c (struct cp_parser): Rename in_iteration_statement
1883                 field to in_statement.
1884                 (IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
1885                 (IN_OMP_BLOCK, IN_OMP_FOR): Change values.
1886                 (cp_parser_new, cp_parser_begin_omp_structured_block,
1887                 cp_parser_end_omp_structured_block,
1888                 cp_parser_omp_for_loop): Adjust for
1889                 in_iteration_statement renaming.
1890                 (cp_parser_selection_statement): Save
1891                 parser->in_iteration, or it temporarily with
1892                 IN_SWITCH_STMT for the
1893                 cp_parser_implicitly_scoped_statement call.
1894                 (cp_parser_iteration_statement): Adjust for
1895                 in_iteration_statement renaming.  Use
1896                 IN_ITERATION_STMT rather than true.
1897                 (cp_parser_jump_statement): Adjust for
1898                 in_iteration_statement renaming and new values.  Don't
1899                 error on break in a switch statement within OMP_FOR or
1900                 OpenMP structured block.
1901
1902                 PR c++/24513
1903                 * parser.c (cp_parser_cache_group): Don't stop if next
1904                 token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
1905                 well.  If current token is CPP_PRAGMA, consume
1906                 everything until CPP_PRAGMA_EOL inclusive.
1907
1908         2005-10-24  Jakub Jelinek  <jakub@redhat.com>
1909
1910                 PR c++/24502
1911                 * semantics.c (finish_omp_for): Handle MODOP_EXPR in
1912                 addition to MODIFY_EXPR.
1913
1914         2005-10-23  Richard Henderson  <rth@redhat.com>
1915
1916                 * cp-gimplify.c (struct cp_gimplify_ctx): Remove.
1917                 (bc_label): New.
1918                 (begin_bc_block, finish_bc_block): Use it.
1919                 (push_context, pop_context): Remove.
1920                 (cp_genericize): Don't use them.  Assert bc_label is null.
1921                 * semantics.c (finish_omp_clauses): Create a fake data
1922                 element of TYPE for probing ctors.
1923
1924         2005-10-23  Richard Henderson  <rth@redhat.com>
1925
1926                 * cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
1927                 (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
1928                 (LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
1929                 (LANG_HOOKS_OMP_CLAUSE_DTOR): New.
1930                 * semantics.c (finish_omp_clauses): Look through
1931                 arrays when looking up special member calls.  Also
1932                 remove FIRSTPRIVATE when LASTPRIVATE fails.
1933                 (cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
1934                 (cxx_omp_clause_assign_op): New.
1935                 * cp-tree.h: Declare them.
1936
1937         2005-10-21  Richard Henderson  <rth@redhat.com>
1938
1939                 * decl.c (check_previous_goto_1): Return false if error.
1940                 (check_switch_goto): Likewise.
1941                 (finish_case_label): Don't emit the case label on error.
1942                 * parser.c (struct cp_parser): Revert
1943                 in_switch_statement_p changes.
1944                 (cp_parser_labeled_statement,
1945                 cp_parser_selection_statement): Likewise.
1946                 (cp_parser_begin_omp_structured_block): Don't save...
1947                 (cp_parser_end_omp_structured_block): or restore
1948                 in_switch_statement_p.
1949
1950         2005-10-21  Richard Henderson  <rth@redhat.com>
1951
1952                 * semantics.c (finish_omp_threadprivate): Set
1953                 decl_flags.u2sel when necessary.
1954
1955         2005-10-21  Richard Henderson  <rth@redhat.com>
1956
1957                 * decl.c (poplevel_named_label_1): Restore creation of the
1958                 bad_decls list.
1959                 (decl_jump_unsafe): Check for error_mark_node types.
1960                 (check_goto): Don't check cdtor_label.  Don't use identify_goto.
1961                 * semantics.c (finish_return_stmt): Do check_omp_return before
1962                 converting to cdtor_label goto.
1963
1964         2005-10-21  Richard Henderson  <rth@redhat.com>
1965
1966                 PR c++/24451
1967                 * decl.c (check_omp_return): Return false on error.
1968                 * cp-tree.h (check_omp_return): Update decl.
1969                 * semantics.c (finish_return_stmt): Avoid adding
1970                 return on error.
1971
1972         2005-10-21  Richard Henderson  <rth@redhat.com>
1973
1974                 * cp-tree.h (struct language_function): Remove
1975                 x_named_label_uses.
1976                 Change x_named_labels to a hashtable.
1977                 (check_omp_return): Declare.
1978                 * decl.c (struct named_label_use_entry): Rename from
1979                 named_label_use_list.  Remove label_decl.
1980                 (struct named_label_entry): Rename from
1981                 named_label_list.  Remove old_value and next.  Change
1982                 in_try_scope and in_catch_scope to bool. Add
1983                 in_omp_scope.
1984                 (pop_labels_1): New.
1985                 (pop_labels): Use it.
1986                 (pop_local_label, poplevel_named_label_1): New.
1987                 (poplevel): Use them.
1988                 (named_label_entry_hash, named_label_entry_eq): New.
1989                 (make_label_decl): Create named_labels.  Move label
1990                 creation bits from lookup_label.
1991                 (declare_local_label): Tidy.
1992                 (identify_goto): Split out from ...
1993                 (check_previous_goto_1): Add exited_omp argument.
1994                 Handle omp scopes.
1995
1996                 (use_label): Merge into...
1997                 (check_goto): ... here.  Handle omp scopes.
1998                 (check_omp_return): New.
1999                 (check_previous_gotos): Merge into...
2000                 (define_label): ... here.
2001                 (save_function_data): Remove x_named_label_uses reference.
2002                 (finish_function): Likewise.
2003                 * name-lookup.h (sk_omp): New.
2004                 * name-lookup.c (begin_scope): Handle it.
2005                 * parser.c (cp_parser_omp_for): Don't create extra
2006                 compound stmt.
2007
2008                 (cp_parser_omp_sections): Likewise.
2009                 * semantics.c (finish_return_stmt): Call check_omp_return.
2010                 (begin_omp_structured_block): Use sk_omp.
2011                 (finish_omp_structured_block): Use do_poplevel.  Don't build a
2012                 MUST_NOT_THROW expression here.
2013                 (begin_omp_parallel, finish_omp_parallel): Don't create extra
2014                 compound statements.
2015
2016         2005-10-21  Diego Novillo  <dnovillo@redhat.com>
2017
2018                 PR 24455
2019                 * cp/cp-tree.h (struct lang_decl_flags): Add field
2020                 threadprivate_p.
2021                 (CP_DECL_IS_THREADPRIVATE): Define.
2022                 * cp/semantics.c (finish_omp_threadprivate): Set.  Do
2023                 not error out if CP_DECL_IS_THREADPRIVATE is set
2024                 already.
2025                 * cp/decl.c (duplicate_decls): Merge
2026                 CP_DECL_THREADPRIVATE_P.
2027
2028         2005-10-20  Richard Henderson  <rth@redhat.com>
2029
2030                 * cp-gimplify.c (cp_gimplify_omp_for): New.
2031                 (cp_gimplify_expr): Call it.
2032                 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
2033                 * parser.c (struct cp_parser): Rename
2034                 in_iteration_statement_p to in_iteration_statement and
2035                 change to unsigned char.  Similarly with
2036                 in_switch_statement.  Update all users.
2037                 (IN_OMP_BLOCK, IN_OMP_FOR): New.
2038                 (cp_parser_labeled_statement): Diagnose case labels
2039                 binding closer to an openmp block nested than the
2040                 switch.
2041                 (cp_parser_jump_statement): Diagnose break and
2042                 continue labels binding closer to an openmp block than
2043                 an iteration or switch.
2044                 (cp_parser_omp_for_loop): Mark in_iteration_statement
2045                 for an omp for.
2046                 (cp_parser_begin_omp_structured_block): New.
2047                 (cp_parser_end_omp_structured_block): New.
2048                 (cp_parser_omp_structured_block): Use them.
2049                 (cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
2050                 (cp_parser_omp_parallel): Likewise.
2051
2052         2005-10-20  Richard Henderson  <rth@redhat.com>
2053
2054                 * semantics.c (begin_omp_structured_block): New.
2055                 (finish_omp_structured_block): New.
2056                 (begin_omp_parallel, finish_omp_parallel): Use them.
2057                 * parser.c (cp_parser_omp_structured_block): Likewise.
2058                 (cp_parser_omp_for): Likewise.
2059                 (cp_parser_omp_sections_scope): Likewise.
2060                 * cp-tree.h: Declare them.
2061
2062         2005-10-20  Richard Henderson  <rth@redhat.com>
2063
2064                 * parser.c (cp_parser_omp_master): Return the statement.
2065                 (cp_parser_omp_ordered): Likewise.
2066                 (cp_parser_omp_construct): Set the locus for them.
2067
2068         2005-10-19  Richard Henderson  <rth@redhat.com>
2069
2070                 * semantics.c (finish_omp_atomic): Revert to
2071                 uses_template_parms.
2072
2073         2005-10-19  Richard Henderson  <rth@redhat.com>
2074
2075                 * semantics.c (finish_omp_clauses): Avoid
2076                 DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
2077                 stub asserts guaranteed to fail.
2078
2079         2005-10-19  Richard Henderson  <rth@redhat.com>
2080
2081                 * cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
2082                 (finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
2083                 * parser.c (cp_parser_omp_clause_copyin): Remove.
2084                 (cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
2085                 Call finish_omp_clauses.
2086                 (cp_parser_omp_clause_if): Don't do error checking here.
2087                 (cp_parser_omp_clause_num_threads): Likewise.
2088                 (cp_parser_omp_clause_schedule): Likewise.
2089                 (cp_parser_omp_atomic): Use finish_omp_atomic.
2090                 (cp_parser_omp_for_loop): Don't discard DECL_EXPR.
2091                 Don't decompose assignment statment here.  Use
2092                 finish_omp_for.
2093
2094                 * pt.c (tsubst_omp_clauses): New.
2095                 (tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2096                 OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
2097                 * semantics.c (finish_omp_clauses): New.
2098                 (begin_omp_parallel, finish_omp_parallel): Know Less about the
2099                 internals of the stmt_list stack.
2100                 (finish_omp_for, finish_omp_atomic): New.
2101
2102         2005-10-18  Jakub Jelinek  <jakub@redhat.com>
2103
2104                 * semantics.c (cxx_omp_predetermined_sharing): New function.
2105                 * cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
2106                 * cp-objcp-common.h
2107                 (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2108
2109         2005-10-18  Richard Henderson  <rth@redhat.com>
2110
2111                 * parser.c (cp_parser_omp_single): Use make_node and accessors
2112                 instead of build.
2113
2114         2005-10-17  Richard Henderson  <rth@redhat.com>
2115
2116                 * parser.c (cp_parser_omp_for_loop): Handle declarations.
2117
2118         2005-10-12  Richard Henderson  <rth@redhat.com>
2119
2120                 * Make-lang.in (CXX_C_OBJS): Add c-omp.o.
2121                 * cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
2122                 (finish_omp_threadprivate): Declare.
2123                 * parser.c (struct cp_lexer): Add in_pragma.
2124                 (cp_lexer_consume_token): Don't consume a PRAGMA_EOL
2125                 when in_pragma.
2126                 (cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
2127                 (cp_parser_skip_to_end_of_statement): Likewise.
2128                 (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2129                 (cp_parser_skip_to_closing_brace): Likewise.
2130                 (cp_parser_skip_to_pragma_eol): Reset in_pragma.
2131                 (cp_parser_require_pragma_eol): New.
2132                 (cp_parser_statement): Add in_compound argument;
2133                 update all callers.
2134                 Restart if a non-statement pragma seen outside a
2135                 compound.
2136                 (cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
2137                 (cp_parser_declaration_seq_opt): Likewise.
2138                 (cp_parser_member_specification_opt): Likewise.
2139                 (cp_parser_function_definition_after_decl): Likewise.
2140                 (cp_parser_skip_until_found): Likewise.
2141                 (cp_parser_cache_group): Likewise.
2142                 (enum pragma_omp_clause, cp_parser_omp_clause_name,
2143                 check_no_duplicate_clause,
2144                 cp_parser_omp_var_list_no_open,
2145                 cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
2146                 cp_parser_omp_clause_default, cp_parser_omp_clause_if,
2147                 cp_parser_omp_clause_nowait,
2148                 cp_parser_omp_clause_num_threads,
2149                 cp_parser_omp_clause_ordered,
2150                 cp_parser_omp_clause_reduction,
2151                 cp_parser_omp_clause_schedule,
2152                 cp_parser_omp_all_clauses,
2153                 cp_parser_omp_structured_block, cp_parser_omp_atomic,
2154                 cp_parser_omp_barrier, cp_parser_omp_critical,
2155                 cp_parser_omp_flush, cp_parser_omp_for_loop,
2156                 cp_parser_omp_for, cp_parser_omp_master,
2157                 cp_parser_omp_ordered, cp_parser_omp_sections_scope,
2158                 cp_parser_omp_sections, cp_parser_omp_parallel,
2159                 cp_parser_omp_single, cp_parser_omp_threadprivate,
2160                 cp_parser_omp_construct): New.
2161                 (cp_parser_pragma): Handle OpenMP pragmas.
2162                 * semantics.c (finish_omp_threadprivate): New.
2163                 (begin_omp_parallel, finish_omp_parallel): New.
2164
2165         2005-10-11  Richard Henderson  <rth@redhat.com>
2166
2167                 * parser.c (struct cp_token): Add pragma_kind.
2168                 (eof_token): Initialize it.
2169                 (cp_lexer_handle_pragma): Remove.
2170                 (cp_parser_initial_pragma): New.
2171                 (cp_lexer_new_main): Use it.
2172                 (cp_lexer_get_preprocessor_token): Initialize pragma_kind.
2173                 (cp_lexer_print_token): Don't handle CPP_PRAGMA.
2174                 (cp_parser_skip_to_pragma_eol): New.
2175                 (cp_parser_error): Use it.
2176                 (pragma_lex): New.
2177
2178         2005-10-09  Richard Henderson  <rth@redhat.com>
2179
2180                 * lex.c (parse_strconst_pragma): Update for c_lex name change.
2181                 (handle_pragma_java_exceptions): Likewise.
2182                 * parser.c (cp_lexer_new_main): Likewise.
2183
2184         2005-10-06  Richard Henderson  <rth@redhat.com>
2185
2186                 * parser.c (cp_lexer_new_main): Comment out defer_pragmas.
2187                 (cp_lexer_handle_pragma): Comment out
2188                 cpp_handle_deferred_pragma.
2189
2190         2005-10-01  Richard Henderson  <rth@redhat.com>
2191
2192                 * name-lookup.c (lookup_name): Remove prefer_type argument.
2193                 (lookup_name_prefer_type): New function.
2194                 * name-lookup.h (lookup_name_prefer_type): Declare it.
2195                 * decl.c (lookup_and_check_tag): Use it.
2196                 * pt.c (tsubst_friend_class): Likewise. Update for
2197                 lookup_name change.
2198                 (lookup_template_class, tsubst_copy_and_build): Likewise.
2199
2200 2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2201
2202         PR c++/15759
2203         * tree.c (bot_manip): Don't call mark_used.
2204
2205 2006-03-02  Mike Stump  <mrs@apple.com>
2206
2207         * decl2.c (import_export_decl): Remove redundant call to
2208         targetm.cxx.key_method_may_be_inline ().
2209
2210 2006-03-02  Richard Sandiford  <richard@codesourcery.com>
2211
2212         * decl.c (start_decl): Use have_global_bss_p when deciding
2213         whether to make the decl common.
2214
2215 2006-03-01  Mike Stump  <mrs@apple.com>
2216
2217         PR darwin/25908
2218         * decl2.c (import_export_decl): Fix ABI breakage on darwin.
2219
2220 2006-02-24  Geoffrey Keating  <geoffk@apple.com>
2221
2222         * except.c (expand_start_catch_block): Handle
2223         flag_use_cxa_get_exception_ptr.
2224
2225 2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2226
2227         PR c++/26291
2228         * decl.c (grok_op_properties): Check for ellipsis in arguments of
2229         operators.
2230
2231 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2232
2233         * Make-lang.in (C++): Remove.
2234         (.PHONY): Remove C++.
2235
2236 2006-02-18  Mark Mitchell  <mark@codesourcery.com>
2237
2238         PR c++/26266
2239         * cp-tree.h (cp_finish_decl): Adjust declaration.
2240         (grokbitfield): Likewise.
2241         (finish_static_data_member_decl): Likewise.
2242         * init.c (constant_value_1): Ensure processing_template_decl when
2243         folding non-dependent initializers for static data members of
2244         dependent types.  Return error_mark_node for erroneous
2245         initailizers.
2246         * class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
2247         * decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
2248         (cp_finish_decl): Add init_const_expr_p parameter.  Set
2249         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
2250         (finish_decl): Adjust call to cp_finish_decl.
2251         (compute_array_index_type): Robustify.
2252         (start_method): Use finish_decl, not cp_finish_decl.
2253         * rtti.c (emit_tinfo_decl): Likewise.
2254         * except.c (initialize_handler_parm): Adjust call to
2255         cp_finish_decl.
2256         (expand_start_catch_block): Likewise.
2257         * cvt.c (build_up_reference): Adjust call to cp_finish_decl.
2258         * pt.c (instantiate_class_template): Adjust call to
2259         finish_static_data_member_decl.
2260         (tsubst_expr): Use finish_decl, not cp_finish_decl.
2261         (instantiate_decl): Adjust call to cp_finish_decl.
2262         * name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
2263         cp_finish_decl.
2264         * decl2.c (finish_static_data_member_decl): Add init_const_expr_p
2265         parameter.
2266         (grokfield): Likewise.
2267         * parser.c (cp_parser_condition): Check for constant initializers.
2268         (cp_parser_init_declarator): Adjust calls to grokfield and
2269         cp_finish_decl.  Don't set
2270         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
2271         (cp_parser_member_declaration): Likewise.
2272         (cp_parser_objc_class_ivars): Likewise.
2273
2274 2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2275
2276         * call.c (standard_conversion): Return NULL instead of 0.
2277         (build_user_type_conversion_1): Likewise.
2278         (tourney): Likewise.
2279         * decl.c (redeclaration_error_message): Likewise.
2280         * error.c (language_to_string): Likewise.
2281
2282 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2283
2284         * cp-tree.h (warn_hidden): Remove prototype.
2285         * class.c (warn_hidden): Make static.
2286
2287         * cp-tree.h (build_type_conversion): Remove prototype.
2288         * cvt.c (build_type_conversion): Add prototype, make static.
2289
2290         * cp-tree.h (push_tinst_level): Remove prototype.
2291         (pop_tinst_level): Likewise.
2292         * pt.c (push_tinst_level): Add prototype, make static.
2293         (pop_tinst_level): Likewise.
2294
2295 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2296
2297         * decl.c (grokdeclarator): Return NULL_TREE instead of 0.
2298         * typeck.c (unary_complex_lvalue): Likewise.
2299
2300 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2301
2302         * lex.c (parse_strconst_pragma): Return error_mark_node instead of
2303         "(tree)-1" to indicate failure.  Simplify.
2304         (handle_pragma_interface): Test for error_mark_node instead of
2305         "(tree)-1".
2306         (handle_pragma_implementation): Likewise.
2307
2308 2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2309
2310         PR c++/26151
2311         * parser.c (cp_parser_decl_specifier_seq): Check for duplicate
2312         decl-specifiers.  Remove extra check for duplicate 'friend'.
2313         * decl.c (grokdeclarator): Remove check for duplicate
2314         decl-specifiers.  Set longlong together with long_p.
2315
2316 2006-02-12  Jason Merrill  <jason@redhat.com>
2317
2318         PR c++/24996
2319         * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
2320         TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.
2321
2322 2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2323
2324         * class.c (debug_class): Remove extern.
2325         (debug_thunks): Likewise.
2326
2327 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2328
2329         * typeck.c (string_conv_p): Don't test for flag_const_strings.
2330
2331 2006-02-08  Jason Merrill  <jason@redhat.com>
2332
2333         PR c++/25979
2334         * cp-gimplify.c (cp_gimplify_expr): Don't call
2335         cp_gimplify_init_expr for MODIFY_EXPRs.
2336         * typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.
2337
2338 2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2339
2340         PR c++/26071
2341         * decl.c (grokdeclarator): Set dname also for destructor.
2342
2343         PR c++/26070
2344         * decl.c (grokdeclarator): Clear storage_class together with staticp.
2345
2346 2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2347
2348         * cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
2349         (cp_build_qualified_type): Propogate renaming.
2350         * call.c (convert_like_real): Likewise.
2351         * cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
2352         * decl.c (make_typename_type, grokdeclarator): Likewise.
2353         * pt.c (tsubst_friend_function, instantiate_class_template,
2354         tsubst_default_argument, instantiate_decl,
2355         tsubst_initializer_list, tsubst_enum): Likewise.
2356         * semantics.c (finish_template_type): Likewise.
2357         * typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.
2358
2359 2006-02-07  Dirk Mueller  <dmueller@suse.com>
2360
2361         * typeck.c (build_binary_op): Annotate div-by-zero
2362         warnings to make -Wno-div-by-zero have an effect.
2363
2364 2006-02-07  Mark Mitchell  <mark@codesourcery.com>
2365
2366         PR c++/9737
2367         * pt.c (coerce_template_template_parms): Do not templates with
2368         excess default arguments to match template template parameters
2369         with fewer parameters.
2370         (coerce_template_parms): Add use_default_args parameter; use
2371         default arguments only when true.
2372         (lookup_template_class): Adjust call to coerce_template_parms.
2373         (fn_type_unification): Likewise.
2374         (unify): Likewise.
2375         (get_bindings): Likewise.
2376         (dependent_type_p): Add assertions.
2377
2378 2006-02-06  Roger Sayle  <roger@eyesopen.com>
2379
2380         * decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
2381         * rtti.c (typeinfo_in_lib_p): Likewise.
2382         * cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
2383         * name-lookup.c (arg_assoc_type): Likewise.
2384
2385 2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2386
2387         * cp-tree.h (tf_warn_or_error): New substituion flag.
2388         (cp_build_qualified_type): Use it.
2389         * call.c (convert_like_real): Likewise.
2390         * cvt.c (cp_convert_to_pointer): Likewise.
2391         (convert_to_reference): Likewise.
2392         * decl.c (make_typename_type): Likewise.
2393         (grokdeclarator): Likewise.
2394         * pt.c (tsubst_friend_function): Likewise.
2395         (tsubst_friend_class): Likewise.
2396         (instantiate_class_template): Likewise.
2397         (tsubst_default_argument): Likewise.
2398         (instantiate_decl): Likewise.
2399         (tsubst_initializer_list): Likewise.
2400         (tsubst_enum): Likewise.
2401         * semantics.c (finish_template_type): Likewise.
2402         * typeck.c (build_ptrmemfunc): Likewise.
2403         (convert_for_assignment): Likewise.
2404
2405 2006-02-03  Lee Millward  <lee.millward@gmail.com>
2406
2407         * typeck.c (string_conv_p): Pass appropiate
2408         OPT_Wxxxx values when calling warning().
2409         (build_array_ref, cxx_mark_addressable): Likewise.
2410         (check_return_expr): Likewise.
2411
2412         * init.c (perform_member_init): Likewise.
2413         (sort_mem_initializers, emit_mem_initializers): Likewise.
2414
2415         * class.c (check_field_decls): Likewise.
2416         (warn_about_ambiguous_bases): Likewise.
2417
2418         * decl.c (pop_label, poplevel): Likewise.
2419         (duplicate_decls, grok_op_properties): Likewise.
2420         (start_preparsed_function, finish_function): Likewise.
2421
2422         * name-lookup.c (pushdecl_maybe_friend): Likewise.
2423         (pushdecl_maybe_friend): Likewise.
2424
2425         * parser.c (cp_parser_warn_min_max): Likewise.
2426         (cp_parser_cast_expression): Likewise.
2427
2428         * method.c (lazily_declare_fn): Likewise.
2429         * cvt.c (convert_to_void): Likewise.
2430         * mangle.c (finish_mangling): Likewise.
2431         * cp-gimplify.c (gimplify_expr_stmt): Likewise.
2432
2433 2006-02-03  Mark Mitchell  <mark@codesourcery.com>
2434
2435         * name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
2436         not IDENTIFIER_OPNAME_P.
2437
2438 2006-01-31  Mark Mitchell  <mark@codesourcery.com>
2439
2440         PR c++/25342
2441         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
2442         documentation.
2443         * pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
2444         not TREE_VALUE.
2445         (instantiate_class_template): Simplify.
2446         (verify_class_unification): Remove.
2447         (unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
2448         permit multiple levels of template arguments.
2449         (more_specialized_class): Simplify.
2450         (get_class_bindings): Pass full arguments to unify.  Fold
2451         verify_class_unification into this function.  Return full
2452         arguments.
2453         (most_specialized_class): Adjust for changes to
2454         get_class_bindings.  Issue errors here for ambiguity.  Return the
2455         fully deduced arguments for the most specialized class, in
2456         addition to the partial specialization.
2457
2458 2006-01-31  Ben Elliston  <bje@au.ibm.com>
2459
2460         * mangle.c: Comment fix.
2461
2462 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2463
2464         * Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
2465         * repo.c (extract_string, afgets): Use cast when converting from
2466         void *.
2467
2468 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2469
2470         * call.c (alloc_conversion): Use cast when converting from void *.
2471         (alloc_conversions): Likewise.
2472         (add_candidate): Likewise.
2473         (print_z_candidates): Likewise.
2474         (add_warning): Likewise.
2475         * pt.c (retrieve_local_specialization): Likewise.
2476         (process_partial_specialization): Likewise.
2477         (mangle_class_name_for_template): Likewise.
2478         (tsubst_template_args): Likewise.
2479         * typeck2.c (pat_calc_hash): Likewise.
2480         (pat_compare): Likewise.
2481         (abstract_virtuals_error): Likewise.
2482         * class.c (method_name_cmp): Likewise.
2483         (resort_method_name_cmp): Likewise.
2484         (get_vfield_name): Likewise.
2485         * decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
2486         * lex.c (init_reswords): Likewise.
2487         * rtti.c (create_pseudo_type_info): Likewise.
2488         * search.c (dfs_lookup_base): Likewise.
2489         (dfs_dcast_hint_pre): Likewise.
2490         (dfs_dcast_hint_post): Likewise.
2491         * tree.c (hash_tree_cons): Likewise.
2492         * repo.c (extract_string): Likewise.
2493         (afgets): Likewise.
2494         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
2495         * g++spec.c (lang_specific_driver): Likewise.
2496
2497 2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2498
2499         * call.c (joust): Pass option code to warning.  Use inform for
2500         explanation.
2501         * class.c (check_bases): Likewise.
2502         (maybe_warn_about_overly_private_class): Likewise.
2503         (check_field_decls): Likewise.
2504         (layout_empty_base): Likewise.
2505         (layout_virtual_bases): Likewise.
2506         (layout_class_type): Likewise.
2507
2508 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
2509
2510         PR c++/25999
2511         * decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
2512         here, not ...
2513         (start_function): ... here.
2514
2515 2006-01-28  Mark Mitchell  <mark@codesourcery.com>
2516
2517         PR c++/25855
2518         * class.c (resolve_address_of_overloaded_function): Adjust use of
2519         return value from most_specialized_instantiation.
2520         * pt.c (determine_specialization): Avoid multiple calls to
2521         get_bindings.
2522         (most_specialized_instantiation): When a tie occurs, set the
2523         current presumed champion to the next template.  Return the
2524         TREE_LIST node containing the template, rather than the template
2525         itself.
2526         (most_specialized): Remove.
2527         * name-lookup.c (push_overloaded_decl): When duplicate_decls
2528         indicates a failed redeclaration, report that to callers.
2529
2530 2006-01-26  Jason Merrill  <jason@redhat.com>
2531
2532         PR c++/16021
2533         * name-lookup.c (parse_using_directive): Require strong using to
2534         name a nested namespace.
2535
2536 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2537
2538         Revert:
2539         * cp-tree.h (do_poplevel): Remove prototype.
2540         * semantics.c (do_poplevel): Add prototype.  Make static.
2541
2542         Revert:
2543         * cp-tree.h (default_conversion): Remove prototype.
2544         * typeck.c (default_conversion): Make static.
2545
2546 2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2547
2548         * cp-tree.h (get_primary_binfo): Remove prototype.
2549         (push_using_decl): Likewise.
2550         (current_template_args): Likewise.
2551         (more_specialized_class): Likewise.
2552         (mark_class_instantiated): Likewise.
2553         (default_conversion): Likewise.
2554         (pfn_from_ptrmemfunc): Likewise.
2555         * class.c (get_primary_binfo): Add prototype, make static, simplify.
2556         * name-lookup.c (push_using_decl): Make static.
2557         * pt.c (current_template_args): Likewise.
2558         (more_specialized_class): Likewise.
2559         (mark_class_instantiated): Likewise.
2560         * typeck.c (default_conversion): Make static.
2561         (pfn_from_ptrmemfunc): Add prototype, make static.
2562
2563 2006-01-24  Dirk Mueller  <dmueller@suse.de>
2564
2565         * typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().
2566
2567 2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2568
2569         PR c++/25552
2570         * parser.c (cp_parser_unqualified_id): Check that destructor name
2571         and scope match.
2572         * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
2573         Adjust comment.  Return early if possible.
2574         Use same_type_p to compare types.
2575         * typeck.c (lookup_destructor): Adjust call to check_dtor_name.
2576
2577 2006-01-24  Mark Mitchell  <mark@codesourcery.com>
2578
2579         * semantics.c: Remove outdated comment.
2580
2581 2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2582
2583         * cp-tree.h (do_poplevel): Remove prototype.
2584         * semantics.c (do_poplevel): Add prototype.  Make static.
2585
2586         * cp-tree.h (original_type): Remove prototype.
2587         * typeck.c (original_type): Make static.
2588
2589         * cp-tree.h (declare_global_var): Remove prototype.
2590         * decl.c (declare_global_var): Make static.
2591
2592         * cp-tree.h (implicitly_declare_fn): Remove prototype.
2593         * method.c (implicitly_declare_fn): Make static.
2594
2595         * cp-tree.h (fold_decl_constant_value): Remove prototype.
2596         * pt.c (fold_decl_constant_value): Make static.
2597
2598         * cp-tree.h (build_x_delete): Remove prototype.
2599         * init.c (build_vec_delete_1): Call build_op_delete_call directly
2600         and not via build_x_delete.
2601         (build_x_delete): Remove.
2602
2603         * cp-tree.h (get_vtt_name): Remove prototype.
2604         * class.c (get_vtt_name): Remove.
2605         (build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.
2606
2607 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2608
2609         * rtti.c (build_dynamic_cast): Fix comment.
2610
2611 2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2612
2613         PR c++/10891
2614         * rtti.c (build_dynamic_cast): Reject dynamic_cast use if
2615         -fno-rtti.
2616
2617 2006-01-21  Mark Mitchell  <mark@codesourcery.com>
2618
2619         PR c++/25895
2620         * class.c (build_base_path): Generate a NOP_EXPR instead of a
2621         COMPONENT_REF if the base and derived classes are at the same
2622         address.
2623
2624         PR c++/25856
2625         * decl.c (begin_destructor_body): Robustify.
2626
2627         PR c++/25858
2628         * parser.c (cp_parser_direct_declarator): Robustify.
2629
2630 2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2631
2632         * parser.c (cp_lexer_next_token_is_keyword): Simplify.
2633
2634         * parser.c (clear_decl_specs): Remove prototype.
2635
2636         * parser.c (cp_parser_expression_fn): Remove.
2637
2638         * call.c (add_builtin_candidates): Remove superfluous return.
2639         * name-lookup.c (do_toplevel_using_decl): Likewise.
2640         * parser.c (cp_parser_type_specifier_seq): Likewise.
2641         (cp_parser_save_default_args): Likewise.
2642
2643 2006-01-20  Dirk Mueller  <dmueller@suse.com>
2644
2645         PR c++/5520
2646         * semantics.c (finish_if_stmt): Call empty_body_warning.
2647         * parser.c (cp_parser_implicitly_scoped_statement):
2648         Mark empty statement with an empty stmt.
2649
2650 2006-01-19  Mark Mitchell  <mark@codesourcery.com>
2651
2652         PR c++/22136
2653         * name-lookup.c (do_class_using_decl): Don't try to look up base
2654         classes in templates with dependent base types.
2655
2656 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2657
2658         PR c++/25854
2659         * pt.c (maybe_process_partial_specialization): Return early on
2660         error_mark_node.
2661
2662 2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2663
2664         PR c++/16829
2665         * decl.c (start_preparsed_function): Check default arguments
2666         unconditionally.
2667         * name-lookup.c (pushdecl_maybe_friend): Check default arguments
2668         of all functions and function templates.
2669         * parser.c (cp_parser_late_parsing_default_args): Check default
2670         arguments.
2671         * decl2.c (check_default_args): Set missing default arguments to
2672         error_mark_node.
2673
2674 2006-01-18  Mark Mitchell  <mark@codesourcery.com>
2675
2676         PR c++/25836
2677         * cp-tree.h (push_class_stack): New function.
2678         (pop_class_stack): Likewise.
2679         * class.c (class_stack_node): Add hidden field.
2680         (pushclass): Clear it.
2681         (push_class_stack): New function.
2682         (pop_class_stack): Likewise.
2683         (currently_open_class): Ignore hidden classes.
2684         (currently_open_derived_class): Likewise.
2685         * name-lookup.c (push_to_top_level): Call push_class_stack.
2686         (pop_from_top_level): Call pop_class_stack.
2687
2688 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
2689
2690         * tree.c (find_tree_t, find_tree): Remove.
2691         * cp-tree.h: Remove the prototype for find_tree.
2692
2693 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
2694
2695         * search.c (lookup_conversions_r): Fix a pasto.
2696
2697 2006-01-17  Eric Christopher  <echristo@apple.com>
2698
2699         * call.c (convert_like_real): When issuing conversion
2700         warnings, depend on OPT_Wconversion.
2701         * cvt.c (build_expr_type_conversion): Ditto.
2702
2703 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
2704
2705         * name-lookup.c (lookup_namespace_name): Remove.
2706         * name-lookup.h: Remove the prototype for
2707         lookup_namespace_name.
2708
2709 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
2710
2711         PR c/25682
2712         * decl.c (compute_array_index_type): After issuing not an integral
2713         constant-expression error, set size to 1 to avoid ICEs later on.
2714
2715 2006-01-16  Ian Lance Taylor  <ian@airs.com>
2716
2717         * parser.c: Include "cgraph.h".
2718         (cp_parser_asm_definition): Call cgraph_add_asm_node rather than
2719         assemble_asm.
2720
2721 2006-01-16  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
2722
2723         * g++spec.c (lang_specific_spec_functions): Remove.
2724
2725 2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2726
2727         * decl.c (check_initializer): Fix thinko.
2728
2729 2006-01-14  Mark Mitchell  <mark@codesourcery.com>
2730
2731         PR c++/25663
2732         * parser.c (cp_parser_direct_declarator): Use cp_parser_error
2733         instead of error.
2734
2735 2006-01-13  Jason Merrill  <jason@redhat.com>
2736
2737         * pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.
2738
2739         * name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
2740         * pt.c (check_explicit_specialization): Likewise.
2741
2742 2006-01-12  Jason Merrill  <jason@redhat.com>
2743
2744         PR libstdc++/24660
2745         * pt.c (check_explicit_specialization): Handle namespace
2746         association.
2747         * name-lookup.c (set_decl_namespace): Likewise.
2748
2749 2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>
2750
2751         PR c++/24824
2752         * class.c (handle_using_decl): Pass correct scope to
2753         cp_emit_debug_info_for_using.
2754
2755 2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>
2756
2757         PR c++/25386
2758         * tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
2759         packedness.
2760
2761 2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>
2762
2763         * parser.c (cp_parser_primary_expression): Document the grammar
2764         for the built-in offsetof, a GNU extension.
2765
2766 2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>
2767
2768         PR c++/25632
2769         * init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
2770         in condition.
2771
2772 2006-01-04  Chris Lattner  <sabre@gnu.org>
2773
2774         * typeck2.c: update copyright to 2006
2775         (split_nonconstant_init_1):  Set TREE_CONSTANT to true.
2776
2777 2006-01-04  Mark Mitchell  <mark@codesourcery.com>
2778
2779         PR c++/24782
2780         * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
2781         checks, even when parsing tentatively.
2782
2783 2006-01-04  Richard Henderson  <rth@redhat.com>
2784
2785         Merge from gomp branch.
2786         * lex.c (handle_pragma_java_exceptions): Fix whitespace.
2787         * parser.c (struct cp_token): Add pragma_kind.
2788         (eof_token): Update to match.
2789         (struct cp_lexer): Add in_pragma; rearrange next for better packing.
2790         (cp_parser_initial_pragma): New.
2791         (cp_lexer_new_main): Use it.  Don't bother clearing
2792         c_lex_return_raw_strings.
2793         (cp_lexer_get_preprocessor_token): Always initialize keyword
2794         and pragma_kind fields.  Handle CPP_PRAGMA.
2795         (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
2796         in_pragma is set.
2797         (cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
2798         (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
2799         (cp_parser_skip_to_pragma_eol): New.
2800         (cp_parser_error): Use it.
2801         (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
2802         rearrange with switch statement.
2803         (cp_parser_skip_to_end_of_statement): Likewise.
2804         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
2805         (cp_parser_skip_to_closing_brace): Likewise.
2806         (cp_parser_skip_until_found): Likewise.
2807         (cp_parser_statement): Add in_compound argument; update callers.
2808         Use it to decide how to handle pragma parsing.
2809         (cp_parser_labeled_statement): Add in_compound argument; pass
2810         it on to cp_parser_statement.
2811         (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
2812         (cp_parser_declaration_seq_opt): Likewise.
2813         (cp_parser_parameter_declaration): Likewise.
2814         (cp_parser_member_specification_opt): Likewise.
2815         (cp_parser_function_definition_after_decl): Likewise.
2816         (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
2817         (cp_parser_pragma): New.
2818         (pragma_lex): New.
2819
2820 2006-01-04  Dirk Mueller <dmueller@suse.com>
2821
2822         * decl.c (finish_constructor_body): create simple
2823         compound stmt instead of a if(1) { } construct.
2824
2825 2006-01-03  Mark Mitchell  <mark@codesourcery.com>
2826
2827         PR c++/25492
2828         * name-lookup.c (push_class_level_binding): When a derived class
2829         provides a type binding, eliminate any type binding from a base
2830         class.
2831
2832         PR c++/25625
2833         * repo.c (repo_emit_p): Always instantiate static data members
2834         initialized by constant expressions, so that there values are
2835         available.
2836
2837 2006-01-02  Mark Mitchell  <mark@codesourcery.com>
2838
2839         PR c++/25635
2840         * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
2841         conversion operator.
2842         * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
2843
2844         PR c++/25638
2845         * class.c (add_method): Never associate more than one destructor
2846         with a single class.
2847
2848         PR c++/25637
2849         * cp-tree.h (do_friend): Adjust prototype.
2850         * decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
2851         (grokdeclarator): Likewise.  Refine check for invalid
2852         declarations/definitions of member functions outside of their own
2853         class.
2854         * friend.c (do_friend): Make funcdef_flag a bool, not an int.
2855
2856         PR c++/25633
2857         * parser.c (cp_parser_mem_initializer_list): Check result of
2858         cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
2859         (cp_parser_mem_initializer): Return error_mark_node for failure.
2860
2861         PR c++/25634
2862         * parser.c (cp_parser_template_parameter_list): Call
2863         begin_template_parm_list and end_template_parm_list here.
2864         (cp_parser_type_parameter): Not here.
2865         (cp_parser_template_declaration_after_export): Or here.
2866         (cp_parser_elaborated_type_specifier): Call
2867         cp_parser_check_template_parameters.
2868
2869         * tree.c (build_target_expr_with_type): Use force_target_expr.
2870
2871         * decl2.c (mark_used): Fix typo in comment.
2872
2873 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2874
2875         * parser.c (cp_parser_using_declaration): Skip name-lookup on
2876         invalid scope.
2877
2878 2005-12-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2879
2880         * cxx-pretty-print.c (pp_cxx_constant): New.  Print
2881         string-literal in parens if input program says so.
2882         (pp_cxx_primary_expression): Hand off constant printing to
2883         pp_cxx_constant.
2884         (pp_cxx_pretty_printer_init): Set pp->c_base.constant.
2885         (pp_cxx_expression): Use pp_cxx_constant for literals.
2886         * error.c (dump_expr): Use pp_constant for literals.
2887
2888 2005-12-29  Nathan Sidwell  <nathan@codesourcery.com>
2889
2890         * method.c (make_thunk): Don't set comdat_linkage here.
2891         (use_thunk): Make thunk one only here, if thunk target is
2892         DECL_ONE_ONLY.
2893
2894 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
2895
2896         PR c++/25439
2897         * decl.c (grokdeclarator): Remove dead code.
2898         * ptree.c (cxx_print_xnode): Handle BASELINK.
2899         * parser.c (make_id_declarator): Add sfk parameter.
2900         (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
2901         make_id_declarator.
2902         (cp_parser_declarator_id): Simplify BASELINKs here.
2903         (cp_parser_member_declaration): Adjust calls to
2904         make_id_declarator.
2905
2906 2005-12-26  Mark Mitchell  <mark@codesourcery.com>
2907
2908         PR c++/23171, c++/23172, c++/25417.
2909         * typeck.c (build_unary_op): Create temporary variables for
2910         compound literals whose addresses are taken.
2911         * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
2912         * decl.c (reshape_init_vector): Likewise.
2913         (reshape_init): Give it external linkage.
2914         (check_initializer): Use COMPOUND_LITERAL_P.
2915         (initialize_artificial_var): Allow the initializer to be a
2916         CONSTRUCTOR.
2917         * call.c (make_temporary_var_for_ref_to_temp): Use
2918         create_temporary_var.
2919         * cp-tree.h (COMPOUND_LITERAL_P): New macro.
2920         (rehape_init): Declare.
2921         * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
2922         * semantics.c (finish_compound_literal): Use reshape_init.
2923
2924 2005-12-23  Mark Mitchell  <mark@codesourcery.com>
2925
2926         PR c++/24671
2927         * pt.c (instantiate_template): Handle SFINAE.
2928
2929 2005-12-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2930
2931         * decl.c (grokdeclarator): Improve diagnostic for friend
2932         declarations of class members.
2933
2934 2005-12-22  Mark Mitchell  <mark@codesourcery.com>
2935
2936         PR c++/25369
2937         * tree.c (really_overloaded_fn): Tweak comment.
2938         * pt.c (tsubst_call_declarator_parms): Remove.
2939         (tsubst_copy): Call mark_used on the member referenced by an
2940         OFFSET_REF.
2941         * semantics.c (finish_qualified_id_expr): Simplify.
2942         * decl2.c (mark_used): Accept BASELINKs.
2943
2944         PR c++/25364
2945         * typeck.c (build_unary_op): Pass DECLs not names to
2946         build_offset_refs.
2947         * init.c (build_offset_ref): Do not do name lookup.  Do not call
2948         mark_used.
2949         * call.c (build_call): Simplify and tidy.
2950         * semantics.c (finish_qualified_id_expr): Call mark_used.
2951
2952 2005-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2953
2954         PR c++/23333
2955         * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
2956         identify a single '0'.
2957
2958 2005-12-20  Mark Mitchell  <mark@codesourcery.com>
2959
2960         PR c++/21228
2961         * decl.c (use_eh_spec_block): New function.
2962         (store_parm_decls): Use it.
2963         (finish_function): Likewise.
2964
2965 2005-12-19  Mark Mitchell  <mark@codesourcery.com>
2966
2967         PR c++/24278
2968         * init.c (expand_member_init): Print messages about baseclasses
2969         using %T rather than %D.
2970
2971         PR c++/24915
2972         * class.c (add_method): Do not treat templates as identical unless
2973         their return types are the same.
2974
2975 2005-12-12  Mark Mitchell  <mark@codesourcery.com>
2976
2977         PR c++/25300
2978         * tree.c (build_qualified_name): Return error_mark_node for
2979         erroneous input.
2980
2981 2005-12-10  Mark Mitchell  <mark@codesourcery.com>
2982
2983         PR c++/25337
2984         * pt.c (tsubst_copy_and_build): Permit dependent types for the
2985         object in a class member access expression.
2986
2987 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
2988
2989         PR java/9861
2990         * mangle.c (write_bare_function_type): Mangle return type for
2991         methods of Java classes
2992
2993 2005-12-08  Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
2994
2995         * call.c (build_conditional_expr): Print types in error messages.
2996
2997 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2998
2999         * expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.
3000
3001 2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3002
3003         * cp-gimplify.c (gimplify_cp_loop): Use fold_build3.
3004
3005 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3006
3007         * Make-lang.in (c++.all.build, c++.install-normal): Remove.
3008
3009 2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>
3010
3011         * Make-lang.in: Remove all dependencies on s-gtype.
3012
3013 2005-12-06  Aldy Hernandez  <aldyh@redhat.com>
3014
3015         PR C++/24138
3016         * decl.c (reshape_init_array_1): Handle max_index of -1.
3017
3018 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3019
3020         * typeck.c (build_binary_op): Issue warning if either operand of a
3021         comparison operator is a string literal, except for testing equality
3022         or inequality against NULL.
3023
3024 2005-12-06  Roger Sayle  <roger@eyesopen.com>
3025
3026         PR c++/25263
3027         * decl.c (compute_array_index_type): Check that itype is an
3028         INTEGER_CST node before testing/clearing TREE_OVERFLOW.
3029
3030 2005-12-05  Daniel Berlin  <dberlin@dberlin.org>
3031
3032         * ptree.c (cxx_print_decl): Update to check for decl_common
3033         structure.
3034
3035 2005-12-02  Mark Mitchell  <mark@codesourcery.com>
3036
3037         PR c++/24173
3038         * decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
3039         clobbering newdecl.
3040
3041 2005-12-02  Richard Guenther  <rguenther@suse.de>
3042
3043         * semantics.c (simplify_aggr_init_expr): Use buildN instead
3044         of build.
3045
3046 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3047
3048         * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
3049         ggc_realloc.
3050         (cp_parser_template_argument_list): Use XRESIZEVEC instead of
3051         xrealloc.
3052         * class.c (pushclass): Likewise.
3053
3054 2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3055
3056         * decl2.c (get_priority_info): Use XNEW, not xmalloc.
3057         * decl.c (push_switch): Likewise.
3058         * lex.c (handle_pragma_implementation): Likewise.
3059         * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
3060         not ggc_alloc.
3061         (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
3062         * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
3063         * g++spec.c (lang_specific_driver): Likewise.
3064         * mangle.c (save_partially_mangled_name): Likewise.
3065         * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
3066         (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
3067         (cp_parser_sizeof_operand): Likewise.
3068         * repo.c (open_repo_file, open_repo_file): Likewise.
3069
3070 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3071
3072         * parser.c (cp_parser_make_typename_type): Call make_typename_type
3073         with tf_none instead of magic value 0.
3074         (cp_parser_explicit_instantiation): Call do_type_instantiation
3075         with tf_error instead of magic value 1.
3076         (cp_parser_elaborated_type_specifier): Call make_typename_type
3077         with tf_error instead of magic value 1.
3078         (cp_parser_class_name): Likewise.
3079         (cp_parser_lookup_name): Likewise.
3080
3081 2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3082
3083         * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
3084         not RID_MAX.
3085
3086 2005-11-30  Jason Merrill  <jason@redhat.com>
3087
3088         PR c++/21123
3089         * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
3090         parms in a thunk.
3091
3092 2005-11-30  Ben Elliston  <bje@au.ibm.com>
3093
3094         * typeck.c (build_x_unary_op): Correct spelling in error message.
3095
3096 2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>
3097
3098         PR c++/21166
3099         * class.c (check_field_decls): Only set DECL_PACKED on a field
3100         when its natural alignment is > BITS_PER_UNIT.
3101
3102 2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3103
3104         PR c++/24979
3105         * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
3106
3107 2005-11-26  Richard Henderson  <rth@redhat.com>
3108
3109         * lex.c: Update for pragma_lex rename.
3110         * parser.c: Likewise.
3111
3112 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3113
3114         PR c++/9278
3115         * decl.c (grokparms): Do not allow typedef-names in a '(void)'
3116         parmlist.
3117
3118 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3119
3120         * typeck2.c (process_init_constructor_union): Remove check for
3121         unnamed union members.
3122
3123 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3124
3125         * name-lookup.c (lookup_name_real): Merge two if's.
3126
3127 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3128
3129         * pt.c (instantiate_class_template): Clean-up.
3130
3131 2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3132
3133         * pt.c (template_class_depth_real): Remove. Move functionality to ...
3134         (template_class_depth): ... here, replacing count_specializations
3135         with 0.  Adjust comment.
3136
3137 2005-11-24  Richard Guenther  <rguenther@suse.de>
3138         Dirk Mueller <dmueller@suse.de>
3139
3140         PR c++/14024
3141         * typeck.c (build_reinterpret_cast_1): Use
3142         strict_aliasing_warning.
3143
3144 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3145
3146         PR c++/24235
3147         * pt.c (check_instantiated_args): Reword diagnostic message about
3148         template argument involving local types.
3149
3150 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3151
3152         PR c++/21667
3153         * typeck.c (build_array_ref): Avoid code duplicate.  Use common
3154         C/C++ diagnostic function warn_array_subscript_with_type_char.
3155
3156 2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3157
3158         PR c++/22238
3159         * error.c (resolve_virtual_fun_from_obj_type_ref): New.
3160         (dump_expr): Use it in <case CALL_EXPR>.
3161
3162 2005-11-21  Richard Henderson  <rth@redhat.com>
3163
3164         * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
3165
3166         * name-lookup.c (lookup_name): Remove prefer_type argument.
3167         (lookup_name_prefer_type): New.
3168         * decl.c (lookup_and_check_tag): Use them.
3169         * pt.c (tsubst_friend_class): Likewise.
3170         (lookup_template_class): Likewise.
3171         (tsubst_copy_and_build): Likewise.
3172         * name-lookup.h (lookup_name_prefer_type): New.
3173         (lookup_name): Remove declaration.
3174
3175 2005-11-18  Mark Mitchell  <mark@codesourcery.com>
3176
3177         PR c++/8355
3178         * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
3179         set_decl_namespace.
3180         * name-lookup.c (set_decl_namespace):
3181
3182 2005-11-18  Mike Stump  <mrs@apple.com>
3183
3184         * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
3185         * name-lookup.c (lookup_name_two): Remove.
3186         (lookup_name_one): Add.
3187         * name-lookup.h (lookup_name_two): Remove.
3188         (lookup_name_one): Add.
3189
3190 2005-11-15  Jason Merrill  <jason@redhat.com>
3191
3192         PR c++/24580
3193         * method.c (locate_copy): Also use skip_artificial_parms here.
3194         (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
3195         for RECORD_TYPE.
3196         (locate_ctor): Abort if we fail to find a default constructor.
3197
3198 2005-11-15  Mike Stump  <mrs@apple.com>
3199
3200         * name-lookup.c (lookup_name_two): Add.
3201         * name-lookup.h: Likewise.
3202
3203 2005-11-15  Mark Mitchell  <mark@codesourcery.com>
3204
3205         PR c++/24667
3206         * typeck.c (check_for_casting_away_constness): Use the diag_fn.
3207         (build_const_cast_1): Call it, for C-style casts.
3208
3209 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
3210
3211         PR c++/24687
3212         * pt.c (check_explicit_specialization): Don't check for C linkage.
3213         (push_template_decl_real): Likewise.
3214         * parser.c (cp_parser_explicit_specialization): Check here.
3215         (cp_parser_template_declaration_after_export): And here.
3216
3217         * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
3218         field.
3219
3220 2005-11-14  Jason Merrill  <jason@redhat.com>
3221
3222         PR c++/24580
3223         * method.c (locate_ctor): Skip all artificial parms, not just
3224         'this'.
3225
3226 2005-11-14  Mark Mitchell  <mark@codesourcery.com>
3227
3228         * parser.c (eof_token): Add initializer for ambiguous_p.
3229
3230 2005-11-13  Mark Mitchell  <mark@codesourcery.com>
3231
3232         PR c++/24817
3233         * decl.c (check_redeclaration_exception_specification): New
3234         function.
3235         (duplicate_decls): Use it.
3236         * error.c (fndecl_to_string): Print the template parameter list.
3237
3238         PR c++/20293
3239         * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
3240         for namespaces.
3241         (pp_cxx_original_namespace_definition): Likewise.
3242         * name-lookup.c (ambiguous_decl): Don't issue error messages;
3243         instead return lists of ambiguous candidates.
3244         (select_decl): Handle ambiguous namespace lookups.
3245         * parser.c (cp_token): Add ambiguous_p.
3246         (cp_lexer_get_preprocessor_token): Set it.
3247         (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
3248         when a qualified name uses an invalid scope.
3249         (cp_parser_primary_expression): Print ambiguous candidates.
3250         (cp_parser_type_parameter): Adjust comment to reflect new
3251         parameter name for cp_parser_lookup_name.
3252         (cp_parser_template_argument): Likewise.
3253         (cp_parser_elaborated_type_specifier): Likewise.
3254         (cp_parser_namespace_name): Likewise.
3255         (cp_parser_class_name): Print ambiguous candidates.
3256         (cp_parser_lookup_name): Rename ambiguous_p parameter to
3257         ambiguous_decls.  Use it to return a list of ambiguous candiates
3258         when a lookup is ambiguous.
3259         (cp_parser_lookup_name_simple): Adjust comment to reflect new
3260         parameter name for cp_parser_lookup_name.
3261
3262 2005-11-12  Jakub Jelinek  <jakub@redhat.com>
3263
3264         PR c++/24780
3265         * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
3266         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
3267         of array type.
3268
3269         PR c++/24761
3270         * pt.c (tsubst_copy_asm_operands): New function.
3271         (tsubst_expr) <case ASM_EXPR>: Use it.
3272
3273 2005-11-08  Jakub Jelinek  <jakub@redhat.com>
3274
3275         PR c++/19450
3276         * decl.c (redeclaration_error_message): Issue diagnostics about
3277         olddecl and newdecl disagreement on __thread property.
3278         (grokdeclarator): Set DECL_TLS_MODEL on class static variables.
3279
3280 2005-11-08  Jason Merrill  <jason@redhat.com>
3281
3282         PR c++/21123
3283         * method.c (use_thunk): Use build_cplus_new instead of
3284         force_target_expr.
3285
3286 2005-11-06  Jason Merrill  <jason@redhat.com>
3287             James A. Morrison <phython@gcc.gnu.org>
3288
3289         PR c++/17256
3290         * decl2.c (cp_finish_file): Fix conditions for undefined warning.
3291         Set TREE_NO_WARNING instead of TREE_PUBLIC.
3292         * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
3293         a warning on a function we didn't instantiate because of excessive
3294         recursion.
3295
3296 2005-11-06  Mark Mitchell  <mark@codesourcery.com>
3297
3298         * class.c (record_subobject_offsets): Don't record offsets past
3299         biggest empty class for non-empty base classes.
3300         (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
3301         keeping track of the size of emptyclasses.
3302
3303         PR c++/21308
3304         * class.c (sizeof_biggest_empty_class): New variable.
3305         (record_subobject_offsets): Don't record offsets past biggest
3306         empty class for data members.  Replace vbases_p parameter with
3307         is_data_member parameter.
3308         (build_base_field): Adjust call.
3309         (layout_class_type): Likewise.  Maintain
3310         sizeof_biggest_empty_class.
3311
3312 2005-11-05  Kazu Hirata  <kazu@codesourcery.com>
3313
3314         * decl2.c, init.c, typeck.c: Fix comment typos.
3315
3316 2005-11-04  Richard Guenther  <rguenther@suse.de>
3317
3318         PR c++/22487
3319         * init.c (build_vec_init): Build comparison of matching
3320         types.
3321
3322 2005-11-03  Josh Conner  <jconner@apple.com>
3323
3324         PR c++/19989
3325         pt.c (tsubst): Accept zero-length array if tf_error is set
3326         in complain flags.  Change error message for negative-
3327         length array.
3328
3329 2005-11-04  Joseph S. Myers  <joseph@codesourcery.com>
3330
3331         * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
3332         parameter.
3333
3334 2005-11-03  Joseph S. Myers  <joseph@codesourcery.com>
3335
3336         PR c++/17964
3337         * error.c (cp_cpp_error): New function.
3338         * cp-tree.h (cp_cpp_error): Declare.
3339         * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
3340         and error callback after lexing.
3341
3342 2005-11-03  Mark Mitchell  <mark@codesourcery.com>
3343
3344         PR c++/21627
3345         * pt.c (register_specialization): Update inline flags on clones.y
3346
3347 2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>
3348
3349         PR c++/24582
3350         * decl.c (declare_local_label): Return 0 for variables
3351         with error_mark_node as their types.
3352
3353 2005-11-02  Mark Mitchell  <mark@codesourcery.com>
3354
3355         PR c++/22434
3356         * call.c (build_conditional_expr): Do bad conversions, if there's
3357         no other choice.
3358
3359         PR c++/24560
3360         * parser.c (cp_parser_postfix_dot_deref_expression): Improve error
3361         message for use of overloaded functions on LHS of "." operator.
3362
3363         PR c++/19253
3364         * parser.c (cp_parser_postfix_expression): Use
3365         cp_parser_elaborated_type_specifier to handle typename-types in
3366         functional casts.
3367         (cp_parser_enclosed_argument_list): Skip ahead to the end of the
3368         template argument list if the closing ">" is not found.
3369
3370         PR c++/24569
3371         * pt.c (instantiate_decl): Use cp_finish_decl, not
3372         finish_static_data_member_decl.
3373
3374 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
3375
3376         * decl.c (grokfndecl): Remove the setting
3377         of the return type of the function type
3378         of main after erroring about must returning
3379         int.
3380
3381 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
3382
3383         PR C++/23229
3384         * decl.c (grokfndecl): Create a new function type
3385         after erroring out about main not returning int.
3386
3387 2005-10-28  Josh Conner  <jconner@apple.com>
3388
3389         PR c++/22153
3390         * parser.c (cp_parser_member_declaration): Detect and handle
3391         a template specialization.
3392
3393 2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
3394
3395         PR C++/23426
3396         * decl.c (start_decl): Check that the decl is an
3397         error_mark_node before getting the type.
3398         Remove the check for the decl's type being an
3399         error_mark_node.
3400
3401 2005-10-21  Mark Mitchell  <mark@codesourcery.com>
3402
3403         PR c++/24260
3404         * parser.c (cp_parser_init_declarator): Pass attributes to
3405         grokfield.
3406
3407 2005-10-20  Mark Mitchell  <mark@codesourcery.com>
3408
3409         PR c++/22618
3410         * search.c (accessible_p): Check access in the outermost set of
3411         template parameters.
3412
3413 2005-10-20  Richard Guenther  <rguenther@suse.de>
3414
3415         * decl.c (grokdeclarator): Fix ambiguous pedwarn message.
3416
3417 2005-10-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3418
3419         PR c++/22293
3420         * decl.c (grokdeclarator): Reject unqualified destructors in
3421         friend declarations.
3422
3423 2005-10-18  Mark Mitchell  <mark@codesourcery.com>
3424
3425         PR c++/23293
3426         * pt.c (convert_template_argument): Use canonical type variants in
3427         template specializations.
3428
3429 2005-10-18  Nathan Sidwell  <nathan@codesourcery.com>
3430
3431         PR c++/21383
3432         * name-lookup.c (arg_assoc): Template args can be null in a
3433         template-id-expr.
3434
3435         PR c++/22604
3436         * class.c (update_vtable_entry_for_fn): Don't process invalid
3437         covariant overriders.
3438
3439         PR c++/23118
3440         * cp-tree.h (add_method): Add return value.
3441         * class.c (add_method): Return success indicator.
3442         * semantics.c (finish_member_declaration): Don't add an invalid
3443         method to the method list.
3444
3445 2005-10-17  Mark Mitchell  <mark@codesourcery.com>
3446
3447         PR c++/21908
3448         * call.c (build_new_method_call): Do not show VTT parameters to
3449         the user.