OSDN Git Service

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