OSDN Git Service

PR c++/34965
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
2
3         PR c++/34965
4         * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
5         and TRUTH_XOR_EXPR.
6
7 2008-01-26  Richard Guenther  <rguenther@suse.de>
8
9         PR c++/34235
10         * typeck.c (build_binary_op): Remove code to shorten compares.
11
12 2008-01-25  Richard Guenther  <rguenther@suse.de>
13
14         PR c++/33887
15         * decl.c (record_builtin_java_type): Make __java_boolean
16         a variant of bool.
17         * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
18         after TYPE_MAIN_VARIANT check.
19
20 2008-01-25  Jason Merrill  <jason@redhat.com>
21
22         PR c++/27177
23         * class.c (build_base_path): Don't mess with virtual access if
24         skip_evaluation.
25         * call.c (standard_conversion): Don't check whether source type
26         is complete.
27
28         * decl2.c (is_late_template_attribute): Don't defer attribute
29         visibility just because the type is dependent.
30
31 2008-01-25  Jason Merrill  <jason@redhat.com>
32             Mark Mitchell  <mark@codesourcery.com>
33
34         PR c++/31780
35         * call.c (standard_conversion): Allow conversion from integer/real
36         to complex.
37         (compare_ics): Such a conversion is worse than a normal arithmetic
38         conversion.
39         
40 2008-01-25  Richard Guenther  <rguenther@suse.de>
41
42         PR c++/33887
43         * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
44         to true.
45
46 2008-01-24  Paolo Carlini  <pcarlini@suse.de>
47
48         PR c++/34603
49         * pt.c (push_template_decl_real): Return error_mark_node in case
50         of template definition of non-template.
51
52 2008-01-24  Jason Merrill  <jason@redhat.com>
53
54         PR c++/34913
55         * decl2.c (is_late_template_attribute): Defer any attribute with 
56         dependent args.  Also defer type attributes if the type is dependent.
57
58 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
59             Alexandre Oliva  <aoliva@redhat.com>
60
61         PR c++/33984
62         * call.c (reference_binding): For bitfields use the declared bitfield
63         type.
64         (add_builtin_candidates): Likewise.
65         * class.c (layout_class_type): For bitfields copy over the
66         original type quals.
67
68 2008-01-22  Jason Merrill  <jason@redhat.com>
69
70         PR c++/28560
71         * decl.c (groktypename): Also ignore attributes on dependent 
72         possibly-class types.
73
74         PR c++/34912
75         * friend.c (do_friend): Check for prior declaration of a friend 
76         function of a local class.
77         * name-lookup.c (lookup_name_innermost_nonclass_level): 
78         No longer static.
79         * name-lookup.h: Declare it.
80
81 2008-01-22  Tom Tromey  <tromey@redhat.com>
82
83         PR c++/34829:
84         * init.c (build_new_1): Only disallow Java aggregates.
85
86 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
87
88         PR c++/34607
89         * semantics.c (finish_omp_for): Don't call c_finish_omp_for
90         if decl or init is error_mark_node.
91
92         PR c++/34918
93         * error.c (dump_expr): Handle VECTOR_CST.
94
95 2008-01-21  Jason Merrill  <jason@redhat.com>
96
97         PR c++/33959
98         * pt.c (tsubst_aggr_type): Make sure our context is complete.
99
100         PR c++/34573
101         * pt.c (retrieve_local_specialization): Robustify.
102         (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
103
104         PR c++/34846
105         * pt.c (tsubst): Only call retrieve_local_specialization if the
106         original typedef was in a function template.
107
108         PR c++/34196
109         * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
110
111 2008-01-21  Richard Guenther  <rguenther@suse.de>
112
113         PR c++/34850
114         * error.c (cp_print_error_function): Deal with recursive
115         BLOCK trees.
116
117 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
118
119         PR c++/34891
120         * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
121
122 2008-01-20  Paolo Carlini  <pcarlini@suse.de>
123
124         PR c++/34776
125         PR c++/34486
126         * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
127         on non-IS_AGGR_TYPE scope.
128         (constructor_name_p): Assert IS_AGGR_TYPE.
129
130 2008-01-18  Ian Lance Taylor  <iant@google.com>
131
132         PR c++/33407
133         * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
134         (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
135         DECL_IS_OPERATOR_NEW flag.
136
137 2008-01-16  Richard Guenther  <rguenther@suse.de>
138
139         PR c++/33819
140         * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
141         for conversions to type variants.
142
143 2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>
144
145         * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
146         declaration and code.  Update copyright year.
147
148 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
149
150         PR c++/34399
151         * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
152         know we have a class type.
153
154 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
155
156         PR c++/34751
157         * pt.c (coerce_template_parameter_pack): When substituting into
158         the type of a non-type template parameter pack. use the
159         deduced/substituted arguments.
160         * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
161         can be a parameter pack with the ellipsis following it.  When we
162         have an erroneous declaration, allow it to be a parameter pack.
163         (cp_parser_template_parameter): Complain about default
164         arguments on non-type template parameter packs, and parse them
165         using the new cp_parser_default_argument.
166         (cp_parser_parameter_declaration): Complain about parameter packs
167         with default arguments. Move parsing of default arguments into a
168         new function, cp_parser_default_argument.
169         (cp_parser_default_argument): New; extracted from
170         cp_parser_parameter_declaration.
171
172 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
173
174         PR c++/34051
175         PR c++/34055
176         PR c++/34102
177         PR c++/34103
178         * typeck.c (check_return_expr): If there are bare parameter packs
179         in the return value, set it to error_mark_node.
180         * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
181         * pt.c (find_parameter_packs_r): Look at the type of
182         IDENTIFIER_NODEs (e.g., for user-defined conversions).
183         (check_for_bare_parameter_packs): Flip the result: now returns
184         TRUE when there were bare parameter packs, FALSE otherwise.
185         (push_template_decl_real): Deal with flipped result of
186         check_for_bare_parameter_packs.
187         * semantics.c (finish_cond): If there are bare parameter packs in
188         the conditional, set it to error_mark_node.
189         (finish_expr_stmt): If there are bare parameter packs in the
190         expression, set it to error_mark_node.
191         (finish_for_expr): Ditto.
192         (finish_switch_cond): If there are bare parameter packs in
193         the conditional, set it to error_mark_node.
194         (finish_mem_initializers): If there are bare parameter packs in
195         the member initializer, set it to error_mark_node.
196         (finish_member_declaration): Check the attributes of the
197         declaration for bare parameter packs, and remove the attributes if
198         any have bare parameter packs.
199         * parser.c (cp_parser_using_declaration): Check the using
200         declaration for bare parameter packs.
201         (cp_parser_base_clause): If there are bare parameter packs in a
202         base specifier, don't add it to the chain.
203
204 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
205
206        PR c++/34314
207        * error.c (dump_simple_decl): Display ellipsis for template
208        non-type parameter packs.
209        (dump_decl): Display ellipsis for template type parameter packs.
210        (dump_template_decl): Display ellipsis for template template
211        parameter packs.
212        * pt.c (redeclare_class_template): When redeclaring a class
213        template, check for collisions between template parameters and
214        template parameter packs.
215
216 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
217
218        PR c++/33964
219        * pt.c (process_partial_specialization): Don't mark template
220        parameters that occur in non-deduced contexts.
221        (struct pair_fn_data): Add include_nondeduced_p.
222        (for_each_template_parm_r): Only visit non-deduced contexts if
223        include_nondeduced_p is set.
224        (for_each_template_parm): Added parameter include_nondeduced_p,
225        which states whether template parameters found in non-deduced
226        contexts should be visited.
227        (uses_template_parms): Visit all template parameters, even those
228        in non-deduced contexts.
229
230 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
231
232        PR c++/34052
233        * pt.c (check_default_tmpl_args): Check for parameter packs that
234        aren't at the end of a primary template.
235        (push_template_decl_real): Remove check for parameter packs that
236        aren't at the end of a primary template; that now happens in
237        check_default_tmpl_args.
238        * semantics.c (finish_template_template_parm): Use
239        check_default_tmpl_args to check for errors in the template
240        parameter list.
241         
242 2008-01-12  Doug Kwan  <dougkwan@google.com>
243
244         * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
245         instead of OPT_Wreturn_type in warning due to ignored return type
246         qualifiers.
247         * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
248         instead of OPT_Wreturn_type in warning due to ignored return type
249         qualifiers.
250
251 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
252
253         PR c++/33890
254         * semantics.c (finish_omp_for): Don't call
255         fold_build_cleanup_point_expr if processing_template_decl.
256
257 2008-01-04  Paolo Carlini  <pcarlini@suse.de>
258             Jakub Jelinek  <jakub@redhat.com>
259
260         PR c++/34611
261         * error.c (dump_template_argument): Deal with TREE_LIST.
262
263 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
264
265        * parser.c (cp_parser_check_decl_spec): Don't warn about "long
266        long" in C++0x mode; change the warning to note that "long long"
267        is only unsupported in C++98 mode.
268
269 2007-12-20  Jason Merrill  <jason@redhat.com>
270
271         PR c++/34111
272         * call.c (standard_conversion): Derived-to-base is considered a
273         standard conversion.
274
275 2007-12-19  Jakub Jelinek  <jakub@redhat.com>
276
277         PR c++/34513
278         * parser.c (cp_parser_omp_parallel): For non-combined parallel
279         call cp_parser_statement rather than
280         cp_parser_already_scoped_statement.
281
282 2007-12-18  Jason Merrill  <jason@redhat.com>
283
284         PR c++/34206
285         * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't 
286         use template parms.
287         (dependent_type_p_r): Handle the domain of an array.
288
289 2007-12-18  Douglas Gregor  <doug.gregor@gmail.com>
290             Jakub Jelinek  <jakub@redhat.com>
291         
292         PR c++/32565
293         PR c++/33943
294         PR c++/33965
295         * pt.c (template_template_parm_bindings_ok_p): New; verifies
296         bindings of template template parameters after all template
297         arguments have been deduced.
298         (coerce_template_parms): Don't complain when COMPLAIN doesn't
299         include tf_error.
300         (fn_type_unification): Use template_template_parm_bindings_ok_p. 
301         (unify): Deal with variadic, bound template template parameters. 
302         (get_class_bindings): Use template_template_parm_bindings_ok_p. 
303
304 2007-12-18  Jakub Jelinek  <jakub@redhat.com>
305
306         PR c++/34488
307         * decl.c (grokdeclarator): Reject friend sfk_constructor
308         FUNCTION_TYPE.
309
310 2007-12-17  Jakub Jelinek  <jakub@redhat.com>
311
312         PR c/34506
313         * parser.c (cp_parser_omp_all_clauses): Accept optional comma
314         in between clauses.
315
316 2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
317
318         PR debug/7081
319         * cp-lang.c (cp_classify_record): New.
320         (LANG_HOOKS_CLASSIFY_RECORD): Override.
321
322 2007-12-11  Jakub Jelinek  <jakub@redhat.com>
323
324         PR c++/34238
325         * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
326
327         PR c++/34364
328         * rtti.c (build_dynamic_cast): Call convert_from_reference even for
329         dynamic_cast in a template.
330
331 2007-12-10  Simon Martin  <simartin@users.sourceforge.net>
332
333         PR c++/34059
334         * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
335         MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
336
337 2007-12-10  Jakub Jelinek  <jakub@redhat.com>
338
339         PR c++/34395
340         * error.c (dump_type_prefix, dump_type_suffix): Handle
341         TYPE_PACK_EXPANSION.
342
343         PR c++/34394
344         * error.c (dump_expr): Handle ABS_EXPR.
345
346 2007-12-09  Jakub Jelinek  <jakub@redhat.com>
347
348         PR c++/34178
349         PR c++/34340
350         * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
351         in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
352         Return 2 also if DECL_EXPLICIT_INSTANTIATION.
353         * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
354         flag_use_repository and repo_emit_p returned 2.
355
356 2007-12-06  Jakub Jelinek  <jakub@redhat.com>
357
358         PR c++/34336
359         * tree.c (stabilize_call, stabilize_init): Do nothing if
360         processing_template_decl.
361
362 2007-12-05  Jakub Jelinek  <jakub@redhat.com>
363
364         PR c++/34271
365         * semantics.c (finish_decltype_type): For SCOPE_REF issue an
366         error instead of assertion failure.
367         * parser.c (cp_parser_decltype): If closing paren is not found,
368         return error_mark_node.
369
370 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
371
372        PR c++/34101
373        * name-lookup.c (arg_assoc_template_arg): Recurse on argument
374        packs.
375        (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
376        since arg_assoc_template_arg will deal with them (better).
377
378 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
379
380        PR c++/33509
381        * pt.c (tsubst_exception_specification): Handle substitutions into
382        member templates, where tsubst_pack_expansion returns a
383        TYPE_PACK_EXPANSION.
384
385 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
386
387        PR c++/33091
388        * pt.c (unify_pack_expansion): If we didn't deduce any actual
389        bindings for the template parameter pack, don't try to keep the
390        empty deduced arguments.
391        (unify): If a parameter is a template-id whose template argument
392        list contains a pack expansion that is not at the end, then we
393        cannot unify against that template-id.
394
395 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
396
397         PR c++/34061
398         * pt.c (current_template_args): Use error_operand_p.
399
400 2007-12-02  Paolo Carlini  <pcarlini@suse.de>
401
402         PR c++/34273
403         * error.c (dump_decl): Handle TREE_BINFO.
404
405 2007-12-01  Ollie Wild  <aaw@google.com>
406
407         PR c++/8171
408         * typeck.c (build_binary_op): Add conversion of pointers to function
409         members appearing as operands to the equality operators.
410
411 2007-11-30  Jakub Jelinek  <jakub@redhat.com>
412
413         PR c++/34275
414         * error.c (dump_expr): Handle OBJ_TYPE_REF.
415
416 2007-11-29  Jakub Jelinek  <jakub@redhat.com>
417
418         PR c++/34270
419         * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
420         in templates.
421         * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
422         Likewise.
423
424         PR c++/34267
425         PR c++/34268
426         * parser.c (cp_parser_decltype): Don't call finish_id_expression
427         on ~type.
428         * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
429         and ~type early.
430
431 2007-11-27  Jakub Jelinek  <jakub@redhat.com>
432
433         PR tree-optimization/34181
434         * method.c (use_thunk): Don't inline the call in the thunk.
435
436         PR c++/34213
437         * tree.c (decl_linkage): Static data members and static member
438         functions in anonymous ns classes are lk_external.
439
440 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
441
442         PR c++/34081
443         * decl.c (start_preparsed_function): Pass 
444         processing_template_decl for the new allocate_struct_function
445         parameter.
446
447 2007-11-25  Richard Guenther  <rguenther@suse.de>
448
449         * decl.c (poplevel): Use BLOCK_CHAIN.
450
451 2007-11-24  Ollie Wild  <aaw@google.com>
452
453         * typeck.c (delta_from_ptrmemfunc): New function.
454         (get_member_function_from_ptrfunc): Call delta_from_ptrmemfunc.
455         (build_binary_op): Call delta_from_ptrmemfunc.
456
457 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
458
459         PR c++/30293
460         PR c++/30294
461         * decl.c (cp_finish_decl): Disallow variable or field
462         definitions if extern "Java" aggregates.
463         (grokparms): Disallow parameters with extern "Java"
464         aggregates.
465         (check_function_type): Disallow function return values
466         with extern "Java" aggregates.
467         * init.c (build_new_1): Disallow placement new with
468         extern "Java" aggregates.
469
470 2007-11-23  Mark Mitchell  <mark@codesourcery.com>
471             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
472         
473         PR c++/5310
474         * call.c (convert_like_real): Build a zero constant when __null is
475         converted to an integer type.
476         
477 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
478
479         PR c++/34094
480         * decl2.c (cp_write_global_declarations): Issue error about static
481         data members in anonymous namespace which are declared and used,
482         but not defined.
483
484 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
485
486         PR c++/34089
487         * parser.c (cp_parser_class_head): Reject function template ids.
488
489         PR c++/28879
490         * tree.c (build_cplus_array_type_1): Don't pass any VLA types
491         when processing_template_decl to build_array_type.
492
493         PR c++/33962
494         * pt.c (more_specialized_fn): Don't segfault if one or
495         both argument list end with ellipsis.
496
497 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
498
499         PR c++/30988
500         * semantics.c (finish_call_expr): Set
501         current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
502         or OVERLOAD with all noreturn functions.
503
504 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
505
506         PR c++/34100
507         * pt.c (apply_late_template_attributes): Do nothing if decl's type is
508         error_mark_node.
509
510 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
511
512         PR c++/34054
513         PR c++/34056
514         PR c++/34057
515         PR c++/34058
516         PR c++/34060
517         * pt.c (find_parameter_packs_r): If ppd->set_packs_to_error,
518         set to error_mark_node the outermost POINTER_TYPE to the pack if
519         it is seen in a POINTER_TYPE.
520         (push_template_decl_real): If check_for_bare_parameter_packs
521         fails for function return type, set the return type to
522         integer_type_node.  If check_for_bare_parameter_packs failed
523         for non-function, return error_mark_node.
524
525         PR c++/29225
526         * call.c (build_new_op): Call resolve_args before calling
527         build_over_call.
528
529 2007-11-11  Tom Tromey  <tromey@redhat.com>
530
531         PR c++/17577:
532         * lex.c (handle_pragma_implementation): Use cpp_included_before.
533
534 2007-11-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
535
536         PR c++/8570
537         * pt.c (redeclare_class_template): Update error message. Use a
538         note to show the previous declaration.
539         (tsubst_friend_class): Use the location of the friend template as
540         the input location before calling redeclare_class_template.
541
542 2007-11-11  Jakub Jelinek  <jakub@redhat.com>
543
544         PR c++/34068
545         * semantics.c (finish_pseudo_destructor_expr): Handle
546         object == error_mark_node.
547
548 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
549
550         PR c++/32241
551         * pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
552         is not scalar type, let finish_class_member_access_expr handle
553         diagnostics.  Pass BIT_NOT_EXPR argument to
554         finish_pseudo_destructor_expr.  Handle SCOPE_REF properly.
555
556 2007-11-09  Douglas Gregor  <doug.gregor@gmail.com>
557
558         PR c++/33510
559         * decl.c (cp_complete_array_type): If any of the initializer
560         elements are pack expansions, don't compute the array size yet.
561
562 2007-11-08  Andrew Pinski  <pinskia@gmail.com>
563
564         PR c++/30297:
565         * tree.c (decl_linkage): Fields have no linkage.
566
567 2007-11-08  Daniel Jacobowitz  <dan@codesourcery.com>
568
569         * class.c (build_ctor_vtbl_group): Lay out the new type and decl.
570
571 2007-11-07  Douglas Gregor  <doug.gregor@gmail.com>
572
573         PR c++/33045
574         PR c++/33837
575         PR c++/33838
576         * semantics.c (finish_decltype_type): See through INDIRECT_REFs.
577         Be careful with ERROR_MARK_NODEs.
578         * parser.c (cp_parser_check_access_in_redeclaration): Handle NULL
579         argument.
580
581 2007-11-07  Jakub Jelinek  <jakub@redhat.com>
582
583         PR c++/33501
584         * call.c (build_over_call): Don't check TREE_ADDRESSABLE
585         on incomplete type.
586
587 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
588
589         PR c++/33977
590         PR c++/33886
591         * tree.c (c_build_qualified_type): Define bridge to
592         cp_build_qualified_type.
593
594 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
595
596         PR c++/31439
597         PR c++/32114
598         PR c++/32115
599         PR c++/32125
600         PR c++/32126
601         PR c++/32127
602         PR c++/32128
603         PR c++/32253
604         PR c++/32566
605         * typeck.c (check_return_expr): Pass address of retval to
606         check_for_bare_parameter_packs.
607         * class.c (build_base_field): Tolerate bases that have no layout
608         due to errors.
609         (end_of_base): Ditto.
610         * tree.c (canonical_type_variant): Be careful with
611         ERROR_MARK_NODE.
612         * cp-tree.h (check_for_bare_parameter_packs): Now accepts a
613         tree*.
614         * pt.c (find_parameter_pack_data): Add set_packs_to_error field,
615         which states whether parameter packs should be replaced with
616         ERROR_MARK_NODE.
617         (find_parameter_packs_r): Pass addresses to cp_walk_tree wherever
618         possible. If set_packs_to_error is set true, replace the parameter
619         pack with ERROR_MARK_NODE. Manage our own pointer sets.
620         (uses_parameter_packs): Don't set parameter packs to
621         ERROR_MARK_NODE.
622         (check_for_bare_parameter_packs): Now takes a pointer to a tree,
623         which may be modified (if it is a parameter pack). Instructs
624         find_parameter_packs_r to replace parameter packs with
625         ERROR_MARK_NODE (so that they won't cause errors later on).
626         (process_template_parm): Pass pointer to
627         check_for_bare_parameter_packs.
628         (process_partial_specialization): Replace pack expansions before
629         the end of the template argument list with ERROR_MARK_NODE.
630         (push_template_decl_real): Pass pointer to
631         check_for_bare_parameter_packs. Replace parameter packs not at the
632         end of the template parameter list with ERROR_MARK_NODE.
633         (convert_template_argument): Be more careful about using DECL_NAME
634         on only declarations.
635         (unify): Can't unify against ERROR_MARK_NODE.
636         * semantics.c (finish_cond): Pass pointer to
637         check_for_bare_parameter_packs.
638         (finish_expr_stmt): Ditto.
639         (finish_for_expr): Ditto.
640         (finish_switch_cond): Pass pointer to
641         check_for_bare_parameter_packs, and call it before we put the
642         condition into the statement.
643         (finish_mem_initializers): Pass pointer to
644         check_for_bare_parameter_packs.
645         (finish_member_declaration): Ditto.
646         * parser.c (cp_parser_base_clause): Ditto.
647         
648 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
649
650         PR target/33168
651         * decl.c (cp_finish_decl): Call make_rtl_for_nonlocal_decl already
652         with the final TREE_READONLY flag in place.  processing_template_decl
653         is known to be 0 in this part of function.
654
655         PR c++/33894
656         * cp-tree.h: Update comment - TYPE_LANG_FLAG_0 is not
657         OMP_ATOMIC_DEPENDENT_P in OMP_ATOMIC.
658         * pt.c (tsubst_expr): Assert OMP_ATOMIC_DEPENDENT_P.
659         * semantics.c (finish_omp_atomic): Revert most of the
660         2007-02-05 changes, just keep the new representation of
661         OMP_ATOMIC_DEPENDENT_P OMP_ATOMIC.
662
663 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
664
665         PR c++/33871
666         * decl2.c (constrain_visibility): Clear DECL_ONE_ONLY if marked
667         local.
668
669 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
670
671         PR c++/33996
672         PR c++/33235
673         PR c++/33930
674         * typeck.c (merge_types): Don't lose rvalue references when
675         merging types.
676         * call.c (build_over_call): Don't elide move constructors just
677         because the copy constructor is trivial (!).
678         (compare_ics): If comparing cv-qualifiers fails, we can still order
679         based on binding lvalues vs. rvalues.
680
681 2007-11-05  Douglas Gregor  <doug.gregor@gmail.com>
682
683         PR c++/33939
684         * pt.c (unify_pack_expansion): bring handling of function call
685         arguments into line with type_unification_real. 
686
687 2007-11-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
688
689         * typeck.c (build_binary_op): Use pedwarn instead of error for
690         consistency.
691
692 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
693
694         PR c++/33836
695         * parser.c (cp_parser_unary_expression): For &&label call
696         cp_parser_non_integral_constant_expression and return error_mark_node
697         if it returned true.
698
699         PR c++/33969
700         * decl.c (grokdeclarator): Don't call build_memfn_type if type
701         is neither FUNCTION_TYPE nor METHOD_TYPE.
702
703 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
704
705         PR c++/33516
706         * parser.c (cp_parser_nested_name_specifier_opt): Use
707         TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
708         typedef of currently open class.
709
710 2007-11-02  Paolo Carlini  <pcarlini@suse.de>
711
712         PR c++/33495
713         * error.c (dump_expr): Deal specially with statements.
714
715 2007-11-01  Jason Merrill  <jason@redhat.com>
716
717         PR c++/30897
718         * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
719         template parms.
720         (lookup_template_class): Use it to get the outer template args
721         for instantiating one.
722
723         PR c++/29236
724         * pt.c (reduce_template_parm_level): tsubst the parameters
725         of a template template parm.
726
727 2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>
728
729         PR c++/33955
730         * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
731
732 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
733
734         PR c++/32384
735         * parser.c (cp_parser_postfix_dot_deref_expression): If
736         POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
737         first and if that succeeds and type is SCALAR_TYPE_P, create
738         PSEUDO_DTOR_EXPR.
739
740         PR c++/32260
741         * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
742         (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
743         as for std::type_info.
744
745 2007-10-31  Paolo Carlini  <pcarlini@suse.de>
746
747         PR c++/33494
748         * cxx-pretty-print.c (pp_cxx_typeid_expression,
749         pp_cxx_delete_expression): Change to static linkage.
750         * cxx-pretty-print.h: Adjust declarations.
751         * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
752         MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
753         MODOP_EXPR): Forward to pp_expression.
754
755         * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
756         Fix typo.
757
758 2007-10-31 Christian Bruel  <christian.bruel@st.com>
759            Mark Mitchell  <mark@codesourcery.com>
760
761         PR c++/19531
762         * typeck.c (check_return_expr): Don't set named_return_value_okay_p
763         if retval is volatile. 
764         
765 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
766
767         PR c++/33616
768         * decl2.c (build_offset_ref_call_from_tree): Call
769         build_non_dependent_expr on object prior to building ADDR_EXPR from it
770         if FN is DOTSTAR_EXPR.
771
772 2007-10-30  Douglas Gregor  <doug.gregor@gmail.com>
773
774         PR c++/31993
775         PR c++/32252
776         * pt.c (find_parameter_packs_r): Fix typo in comment.
777         (convert_template_argument): Look at the pattern of a pack
778         expansion to determine what kind of entity we're converting.
779         (coerce_template_parameter_pack): When we have coerced a non-type
780         template parameter pack, substitute into the type of that pack.
781         (tsubst_pack_expansion): When our substitution of a parameter pack
782         is a "trivial" substitution of itself, just substitute into the
783         pack expansion rather than actually expanding.
784
785 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
786
787         PR c++/33841
788         * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
789         for non-integral type bitfields.  Return true if bitfield is correct, false
790         error has been diagnosed.
791         (check_field_decls): If check_bitfield_decl returned false, call also
792         check_field_decl.
793
794 2007-10-28  Paolo Carlini  <pcarlini@suse.de>
795             Mark Mitchell  <mark@codesourcery.com>
796
797         PR c++/30659
798         * pt.c (do_decl_instantiation): If the VAR_DECL is not a
799         class member error out and return.
800
801 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
802
803         * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
804         to current_function_decl rather than 0.
805
806         PR c++/33844
807         * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
808         ->* rather than .*.
809         * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
810
811 2007-10-27  Jason Merrill  <jason@redhat.com>
812
813         PR c++/5247
814         * call.c (convert_default_arg): Detect recursion.
815
816 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
817
818         PR c++/33842
819         * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
820         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
821         OFFSETOF_EXPR.
822         (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
823         functions.
824         * error.c (dump_expr): Handle OFFSETOF_EXPR.
825
826 2007-10-26  Jason Merrill  <jason@redhat.com>
827
828         PR c++/24791
829         * pt.c (get_template_info): New fn.
830         (template_class_depth): Use it.
831         (push_template_decl_real): Check that the template args of the 
832         definition match the args of the previous declaration.
833
834 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
835
836         PR c++/31988
837         * decl2.c (coerce_new_type): Do not allow a default argument for
838         the first parameter.
839
840 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
841
842         PR c++/33839
843         * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
844         don't see the leading '('. Only lookup names if we get an
845         IDENTIFIER_NODE.
846
847 2007-10-26  Jakub Jelinek  <jakub@redhat.com>
848
849         PR c++/33744
850         * parser.c (cp_parser_parenthesized_expression_list): Set
851         greater_than_is_operator_p to true in between the parens.
852
853 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
854
855         PR c++/31747
856         * decl.c (grokdeclarator): In case of conflicting specifiers
857         just return error_mark_node.
858
859 2007-10-26  Ollie Wild  <aaw@google.com>
860
861         * expr.c (cxx_expand_expr): Removed.
862         * cp-tree.h (exx_expand_expr): Removed.
863         * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
864         with c_expand_expr.
865
866 2007-10-25  Paolo Carlini  <pcarlini@suse.de>
867
868         PR c++/33843
869         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
870
871 2007-10-23  Jason Merrill  <jason@redhat.com>
872
873         PR c++/25950 (DR 391)
874         * call.c (struct conversion): Remove check_copy_constructor_p.
875         (reference_binding): Always bind a reference directly to a 
876         compatible class rvalue.  Pass down LOOKUP_NO_TEMP_BIND during 
877         temporary creation.
878         (check_constructor_callable): Remove.
879         (convert_like_real): Don't call it.
880         (initialize_reference): Don't call check_constructor_callable.
881         (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
882         LOOKUP_CONSTRUCTOR_CALLABLE.  Don't require a temporary for base
883         conversions if LOOKUP_NO_TEMP_BIND.
884         (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
885         (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
886         second conversion.
887         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
888
889 2007-10-22  Jakub Jelinek  <jakub@redhat.com>
890
891         PR c++/33372
892         * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
893         before checking if its type is integral.
894
895 2007-10-22  Jason Merrill  <jason@redhat.com>
896
897         PR c++/33620
898         * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
899         * pt.c (apply_late_template_attributes): Splice out dependent
900         attributes from DECL_ATTRIBUTES.
901
902         * decl.c (cxx_maybe_build_cleanup): Use build_address.
903
904 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
905
906         * typeck.c (build_binary_op) : Use appropriate warning option
907         instead of unnamed warning.
908
909 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
910
911         PR c++/31446
912         * pt.c (current_template_args): Do not change TREE_LIST elements
913         with a TREE_VALUE of error_mark_node.
914
915 2007-10-16  Mark Mitchell  <mark@codesourcery.com>
916
917         * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
918         * decl.c (start_decl): Tidy.
919         (start_decl_1): Call cp_apply_type_quals_to_decl after completing
920         the type.
921         (grokdeclarator): Clarify comment.
922
923 2007-10-14  Andrew Pinski  <pinskia@gmail.com>
924
925         PR c++/30303
926         * decl.c (grokfndecl): Return NULL after the "definition of
927         implicitly-declared" error happened.
928
929 2007-10-12  Simon Martin  <simartin@users.sourceforge.net>
930
931         PR c++/26698
932         * call.c (build_user_type_conversion_1): Do not consider conversion
933         functions to convert a (possibly cv-qualified) object to the (possibly
934         cv-qualified) same object type (or a reference to it), to a (possibly
935         cv-qualified) base class of that type (or a reference to it).
936
937 2007-10-12  Paolo Carlini  <pcarlini@suse.de>
938
939         * pt.c (tsubst): Use template_parm_level_and_index.
940
941 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
942
943         PR c++/32121
944         * parser.c (cp_parser_compound_statement): Handle label-declarations
945         at the beginning of the compound statement.
946         (cp_parser_block_declaration): Issue diagnostics about __label__
947         not at the beginning of a block.
948
949 2007-10-11  Paolo Carlini  <pcarlini@suse.de>
950
951         PR c++/33461
952         * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
953         to convert_template_argument.
954         (coerce_template_parms): Return error_mark_node after fixed-length
955         error.
956         (tsubst_decl): Check for error_mark_node the return value of the
957         first tsubst in 'case VAR_DECL'.
958
959 2007-10-08  Ollie Wild  <aaw@google.com>
960
961         * typeck2.c (digest_init): Call cplus_expand_constant after
962         convert_for_initialization.
963         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
964         * expr.c (cplus_expand_constant): Updated function description.
965
966 2007-10-04  Jason Merrill  <jason@redhat.com>
967
968         PR c++/20416
969         * call.c (initialize_reference): Handle local static reference
970         temps properly.
971
972 2007-10-03  Jason Merrill  <jason@redhat.com>
973
974         PR c++/32470
975         * name-lookup.c (push_namespace_with_attrs): Fold back into...
976         (push_namespace): Here.
977         (handle_namespace_attrs): New fn for the attr code.
978         (leave_scope): Don't pop_visibility.
979         * name-lookup.h (struct cp_binding_level): Remove has_visibility.
980         * parser.c (cp_parser_namespace_definition): Call
981         handle_namespace_attrs and pop_visibility as appropriate. 
982
983         PR c++/11756
984         * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
985
986 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
987
988         * decl.c (duplicate_decls): Preserve linkage flags for mere
989         redeclarations of gnu_inline definitions.
990
991 2007-10-03  Jason Merrill  <jason@redhat.com>
992
993         PR c++/15764
994         * decl.c (wrap_cleanups_r): New fn.
995         (wrap_temporary_cleanups): New fn.
996         (initialize_local_var): Call it.
997
998 2007-09-29  Jason Merrill  <jason@redhat.com>
999
1000         PR c++/33094
1001         * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member 
1002         constant to not have DECL_EXTERNAL if it's file-local.
1003
1004 2007-09-28  Ollie Wild  <aaw@google.com>
1005
1006         Revert
1007         2007-09-27  Ollie Wild  <aaw@google.com>
1008
1009         * typeck2.c (digest_init): Call cplus_expand_constant after
1010         convert_for_initialization.
1011         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1012         * expr.c (cplus_expand_constant): Updated function description.
1013
1014 2007-09-28  Jason Merrill  <jason@redhat.com>
1015
1016         PR c++/10179
1017         * class.c (layout_empty_base): Take rli parameter, update
1018         rli->record_align if empty base has user-specified alignment.
1019         (build_base_field): Pass rli to it.
1020
1021 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
1022
1023         PR c++/33213
1024         * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
1025
1026 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
1027
1028         PR c++/33118
1029         * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
1030         (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
1031         (dump_parameters): Just call dump_type for argument packs too.
1032
1033 2007-09-28  Jakub Jelinek  <jakub@redhat.com>
1034
1035         PR c++/31434
1036         * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
1037         qualification by creating qualified PACK_EXPANSION_PATTERN and
1038         then calling make_pack_expansion on it.
1039
1040 2007-09-27  Ollie Wild  <aaw@google.com>
1041
1042         * typeck2.c (digest_init): Call cplus_expand_constant after
1043         convert_for_initialization.
1044         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1045         * expr.c (cplus_expand_constant): Updated function description.
1046
1047 2007-09-27  Jason Merrill  <jason@redhat.com>
1048
1049         PR c++/33571
1050         * decl2.c (is_late_template_attribute): Don't crash on unknown
1051         attribute.
1052
1053 2007-09-27  Paolo Carlini  <pcarlini@suse.de>
1054
1055         PR c++/33493
1056         * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
1057         * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
1058         spaces in the formatting.
1059         * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
1060
1061 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
1062
1063         * error.c (cxx_print_error_function): Add third argument, pass
1064         it over to lhd_print_error_function.
1065         (cp_print_error_function): If diagnostic->abstract_origin, print
1066         virtual backtrace.
1067         * cp-tree.h (struct diagnostic_info): New forward decl.
1068         (cxx_print_error_function): Add third argument.
1069
1070 2007-09-25  Simon Martin  <simartin@users.sourceforge.net>
1071
1072         PR c++/33207
1073         * name-lookup.c (pushtag): Do not create an implicit typedef before
1074         the associated type declaration is known to be valid.
1075
1076 2007-09-25  Jakub Jelinek  <jakub@redhat.com>
1077
1078         * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
1079         rather than pointers.
1080
1081 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
1082
1083         PR c++/14688
1084         * search.c (check_final_overrider): Fail if
1085         targetm.comp_type_attributes returns 0.
1086
1087 2007-09-24  Jason Merrill  <jason@redhat.com>
1088
1089         PR c++/33239
1090         * pt.c (resolve_typename_type): Don't look things up in the original
1091         template if it would mean losing template arguments.    
1092
1093 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
1094
1095         PR c++/33506
1096         * cp-tree.h (cxx_type_hash_eq): New prototype.
1097         * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
1098         * tree.c (cxx_type_hash_eq): New function.
1099
1100 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
1101
1102         PR c++/33185    
1103         * tree.c (cp_build_qualified_type_real): Build a canonical
1104         ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
1105         
1106 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
1107
1108         PR c++/33112
1109         PR c++/33185    
1110         * tree.c (cplus_array_compare): Compare pointers, not types.
1111         (build_cplus_array_type_1): Store new array type into the hash
1112         table before building the canonical type; build the canonical type
1113         correctly.
1114         (cp_build_qualified_type_real): Put all of the array types with
1115         cv-qualified element types into the C++ array hash table, built as 
1116         variants of the unqualified versions.
1117         
1118 2007-09-23  Jason Merrill  <jason@redhat.com>
1119
1120         PR c++/16370
1121         * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
1122         for deprecation warnings.
1123
1124 2007-09-22  Jason Merrill  <jason@redhat.com>
1125
1126         PR c++/15269
1127         * call.c (build_over_call): Warn about deprecated virtuals.
1128
1129         PR c++/19407
1130         * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
1131         (MAYBE_TAGGED_TYPE_P): Remove.
1132         * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
1133         instead of calling is_late_template_attribute again.
1134         (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
1135         (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
1136         Don't crash on typedefs from non-template classes.
1137         * decl2.c (grokfield): Don't sorry about attrs on template parms.
1138         (is_late_template_attribute): All attributes applied to template
1139         parms or typename types are dependent.  Static.
1140         (splice_template_attributes): Pass decl through.
1141         (save_template_attributes): Likewise.
1142
1143 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
1144
1145         PR c++/33496
1146         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
1147         returned from tsubst_pack_expansion.
1148         (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
1149         (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
1150
1151 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
1152
1153         PR c++/33460
1154         * semantics.c (finish_id_expression): Use consistently
1155         context_for_name_lookup.
1156         * decl.c (fixup_anonymous_aggr): Fix error message for
1157         anonymous struct (vs union).
1158
1159 2007-09-19  Jason Merrill  <jason@redhat.com>
1160
1161         PR c++/7586
1162         * pt.c (tsubst): Handle typedefs by looking for the specialization.
1163         (retrieve_specialization): Only tagged types use 
1164         DECL_TEMPLATE_INSTANTIATIONS.
1165         (instantiate_class_template): Push nested classes too.
1166         (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
1167         tagged types.
1168         * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
1169         * init.c (is_aggr_type): Remove redundant tests.
1170         * class.c (push_nested_class): Use CLASS_TYPE_P.
1171
1172 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
1173
1174         PR c++/33459
1175         * init.c (build_zero_init): If, recursively, build_zero_init
1176         returns a NULL_TREE, do not append it to the VEC of constructors.
1177
1178 2007-09-18  Jason Merrill  <jason@redhat.com>
1179
1180         PR c++/17743
1181         * pt.c (apply_late_template_attributes): Set processing_template_decl.
1182         (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
1183         ATTR_FLAG_TYPE_IN_PLACE.
1184         (tsubst): Do unqualified lookup to find typedefs from current class.
1185         [ARRAY_TYPE]: Propagate alignment info.
1186         * decl2.c (is_late_template_attribute): Only defer handling of
1187         attribute aligned if the expression is dependent.
1188         (save_template_attributes): If we're deferring any attributes,
1189         make this a naming typedef.
1190
1191 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
1192
1193         PR c++/33462 (again)
1194         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
1195         va_arg instead of __builtin_va_arg.
1196
1197 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
1198
1199         PR c++/33462
1200         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
1201         (pp_cxx_primary_expression): Use it.
1202         * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
1203         * error.c (dump_expr): Use it.
1204
1205 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
1206
1207         PR c++/33463
1208         * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
1209         out case TYPEID_EXPR to...
1210         (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
1211         and pp_cxx_right_paren.
1212         * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
1213         * error.c (dump_expr): Use it.
1214
1215 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
1216
1217         PR c++/33464
1218         * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
1219         (pp_cxx_primary_expression): Use it.
1220         * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
1221         * error.c (dump_expr): Use it.
1222
1223 2007-09-16  Paolo Carlini  <pcarlini@suse.de>
1224
1225         PR c++/33124
1226         * init.c (build_new): Remove warning for zero-element
1227         allocations.
1228
1229 2007-09-16  Nathan Sidwell  <nathan@codesourcery.com>
1230
1231         PR c++/32756
1232         * call.c (maybe_handle_implicit_object): Set this_p, clear
1233         rvaluedness_matches_p.
1234         (compare_ics): Do not compare rvaluedness matching when one of the
1235         operands is an implicit object.
1236
1237 2007-09-14  Jason Merrill  <jason@redhat.com>
1238
1239         PR c++/17743, c++/19163
1240         * decl2.c (is_late_template_attribute): New fn.
1241         (splice_template_attributes, save_template_attributes): New fns.
1242         (cplus_decl_attributes): Call save_template_attributes.
1243         * pt.c (apply_late_template_attributes): New fn.
1244         (instantiate_class_template, tsubst_decl): Use it.
1245         * cp-tree.h: Declare is_late_template_attribute.
1246
1247 2007-09-13  Tom Tromey  <tromey@redhat.com>
1248
1249         * parser.c (cp_lexer_new_main): Don't use
1250         c_lex_return_raw_strings.
1251         (cp_lexer_get_preprocessor_token): Update.  Add special case when
1252         lexer is NULL.
1253
1254 2007-09-11  Jan Hubicka <jh@suse.cz>
1255
1256         * method.c (use_thunk): Use tree_rest_of_compilation
1257         * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
1258         (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
1259         * cp-tree.h (expand_body): Kill.
1260         (emit_associated_thunks): Declare.
1261         * semantics.c (emit_associated_thunks): Export.
1262         (expand_body): Kill.
1263
1264 2007-09-09  David Daney  <ddaney@avtrex.com>
1265
1266         PR c++/33324
1267         * init.c (build_new_1):  Use POINTER_PLUS_EXPR instead of MINUS_EXPR
1268         to calculate cookie_ptr.
1269
1270 2007-09-08  Jason Merrill  <jason@redhat.com>
1271
1272         PR c++/33342
1273         * pt.c (most_specialized_class): Set processing_template_decl
1274         while tsubsting partial spec args.
1275
1276 2007-09-06  Jason Merrill  <jason@redhat.com>
1277
1278         * decl2.c (get_guard): Copy visibility from the guarded variable.
1279
1280 2007-09-06  Jan Hubicka  <jh@suse.cz>
1281
1282         * semantics.c (expand_body): Do not mark arguments of clones used.
1283
1284 2007-09-06  Paolo Carlini  <pcarlini@suse.de>
1285
1286         PR c++/32674
1287         * decl.c (cp_finish_decl): When processing_template_decl,
1288         deal correctly with init as TREE_LIST.
1289
1290 2007-09-06  Tom Tromey  <tromey@redhat.com>
1291
1292         * decl.c (finish_function): Put return's location on line zero of
1293         file.
1294
1295 2007-09-05  Jason Merrill  <jason@redhat.com>
1296
1297         PR c++/15745
1298         * except.c (prepare_eh_type): Use type_decays_to.
1299
1300         PR c++/15097
1301         * init.c (build_delete): Use build_headof to get the address of the
1302         complete object if we aren't using the deleting destructor.
1303         * rtti.c (build_headof): No longer static.
1304         * cp-tree.h: Declare it.
1305
1306 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
1307
1308         * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
1309         decl if a prototype for XX is provided with throw().
1310
1311         PR c++/33289
1312         * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
1313         on __*_chk non-__builtin_* decls.
1314
1315 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
1316
1317         PR c++/30302
1318         * semantics.c (finish_id_expression): Use context_for_name_lookup
1319         insted of DECL_CONTEXT, to see through anonymous structs and unions.
1320         * class.c (finish_struct_anon): Deal correctly with anonymous
1321         structs (vs unions, as GNU extension) in error messages.
1322
1323 2007-09-05  Jan Hubicka  <jh@suse.cz>
1324
1325         * cp/sematics.c (expand_body): Remove unnecesary import_export_decl
1326         call, DECL_EXTERNAL checks and current_function_decl saving.
1327
1328 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
1329
1330         PR c++/29731 (again)
1331         * parser.c (cp_parser_primary_expression): Return error_mark_node
1332         when a statement-expression is found in a template-argument list.
1333
1334 2007-09-04  Jason Merrill  <jason@redhat.com>
1335
1336         * except.c (initialize_handler_parm): Use
1337         fold_build_cleanup_point_expr.
1338
1339         PR c++/31419
1340         * call.c (reference_binding): Don't look for user-defined conversions
1341         to the same type.
1342
1343         PR c++/31411
1344         * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
1345         the MUST_NOT_THROW_EXPR.
1346
1347 2007-09-04  Richard Sandiford  <richard@codesourcery.com>
1348
1349         * decl.c (cp_finish_decl): Call determine_visibility before
1350         make_rtl_for_nonlocal_decl.
1351
1352 2007-09-04  Jason Merrill  <jason@redhat.com>
1353
1354         PR c++/14032
1355         * pt.c (most_specialized_class): Substitute outer template
1356         arguments into the arguments of a member template partial
1357         specialization.
1358         (strip_innermost_template_args): New fn.
1359
1360 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
1361
1362         * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
1363
1364 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1365
1366         * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
1367         * decl.c (cp_make_fname_decl): Likewise,
1368         * parser.c (cp_parser_string_literal): Likewise,
1369         * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
1370         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1371         Likewise,
1372
1373 2007-09-02  Paolo Carlini  <pcarlini@suse.de>
1374
1375         PR c++/33208
1376         * typeck.c (build_unary_op): Fix error message for
1377         Boolean expression as operand to operator--.
1378
1379 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1380
1381         * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
1382         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
1383         Likewise.
1384
1385 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
1386
1387         PR c++/32597
1388         * init.c (build_default_init): Make extern.
1389         * cp-tree.h (build_default_init): Declare here.
1390         * pt.c (tsubst_expr): When the instantiation of the initializer of
1391         a variable results in an empty list, default-initialize the
1392         variable.
1393         (tsubst_copy_and_build): When the instantiation of the initializer
1394         in a new expression results in an empty initializer list,
1395         default-initialize it.
1396
1397 2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>
1398
1399         * mangle.c (write_type): Change mangling of rvalue reference from
1400         `RR' to `O'. 
1401
1402 2007-08-31  Jakub Jelinek  <jakub@redhat.com>
1403
1404         * decl.c (duplicate_decls): Remove duplicated line.
1405
1406 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
1407
1408         PR c++/33210
1409         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
1410         BOUND_TEMPLATE_TEMPLATE_PARM.
1411
1412 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
1413
1414         PR c++/32113
1415         * search.c (lookup_member): Check the name argument for
1416         error_mark_node.
1417
1418 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
1419
1420         PR c++/33212
1421         * parser.c (cp_parser_trait_expr): Check rerurn value of
1422         cp_parser_type_id.
1423
1424 2007-08-30  Ollie Wild  <aaw@google.com>
1425
1426         * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
1427         convert_ptrmem for pointer to member conversions.
1428         (convert_to_pointer_force): Update cp_convert_to_pointer call.
1429         (ocp_convert): Update cp_convert_to_pointer call.
1430         * typeck.c (convert_ptrmem): Add conditional for null pointers to
1431         members.
1432         (build_static_cast_1): Check can_convert for conversions in either
1433         direction.
1434         (get_delta_difference_1): New function.
1435         (get_delta_difference): Refactor to call get_delta_difference_1.
1436
1437 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
1438
1439         * decl.c (start_preparsed_function): Set
1440         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
1441
1442 2007-08-28  Paolo Carlini  <pcarlini@suse.de>
1443
1444         PR c++/33209
1445         * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
1446         BOUND_TEMPLATE_TEMPLATE_PARM.
1447
1448 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
1449
1450         PR c++/32596
1451         PR c++/32400
1452         * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
1453         and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
1454
1455 2007-08-27  Jason Merrill  <jason@redhat.com>
1456
1457         PR c++/29000
1458         * pt.c (build_non_dependent_expr, type_dependent_expression_p): 
1459         Look inside STMT_EXPR.
1460         * semantics.c (stmt_expr_value_expr): New fn.
1461         * cp-tree.h: Declare it.
1462
1463         PR c++/28558
1464         * decl.c (groktypename): Ignore attributes applied to class type.
1465
1466 2007-08-28  Richard Guenther  <rguenther@suse.de>
1467
1468         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
1469
1470 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1471         
1472         * error.c (dump_expr): Handle COMPLEX_CST.
1473         * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
1474         (pp_cxx_expression): Likewise.
1475
1476 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
1477
1478         * decl.c (GNU_INLINE_P): New.
1479         (duplicate_decls): Handle gnu_inline.  Merge attributes and
1480         some flags in overriding definitions.
1481         (redeclaration_error_message): Handle gnu_inline.
1482         (start_preparsed_function): Likewise.
1483
1484 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1485
1486         * call.c (sufficient_parms_p): Constify.
1487         * class.c (same_signature_p): Likewise.
1488         * cp-gimplify.c (is_invisiref_parm,
1489         cxx_omp_privatize_by_reference): Likewise.
1490         * cp-objcp-common.c (has_c_linkage): Likewise.
1491         * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
1492         sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
1493         grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
1494         num_artificial_parms_for, comp_template_parms,
1495         template_parameter_pack_p, any_dependent_template_arguments_p,
1496         any_type_dependent_arguments_p, any_value_dependent_elements_p,
1497         repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
1498         zero_init_p, member_p, cp_lvalue_kind,
1499         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1500         varargs_function_p, is_dummy_object, special_function_kind,
1501         string_conv_p, type_unknown_p, comp_except_specs, compparms,
1502         comp_cv_qualification, is_bitfield_expr_with_lowered_type,
1503         unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
1504         cp_has_mutable_p, at_least_as_qualified_p,
1505         invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
1506         * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
1507         * except.c (nothrow_libfn_p): Likewise.
1508         * method.c (skip_artificial_parms_for, num_artificial_parms_for):
1509         Likewise.
1510         * pt.c (comp_template_parms, template_parameter_pack_p,
1511         any_type_dependent_arguments_p, any_value_dependent_elements_p,
1512         any_dependent_template_arguments_p): Likewise.
1513         * repo.c (repo_export_class_p): Likewise.
1514         * semantics.c (anon_aggr_type_p): Likewise.
1515         * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
1516         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
1517         varargs_function_p, member_p, is_dummy_object, pod_type_p,
1518         zero_init_p, special_function_p): Likewise.
1519         * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
1520         comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
1521         compparms, invalid_nonstatic_memfn_p,
1522         is_bitfield_expr_with_lowered_type, unlowered_expr_type,
1523         string_conv_p, ptr_reasonably_similar, cp_type_readonly,
1524         cp_has_mutable_p, lvalue_or_else): Likewise.
1525
1526 2007-08-25  Paolo Bonzini  <bonzini@gnu.org>
1527
1528         * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
1529         * cp-objcp-common.c (cp_tree_size): Ditto.
1530         * tree.c (cp_walk_subtrees): Ditto
1531         * cp-tree.def (TINST_LEVEL): Go away.
1532         * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
1533         move together with other non-tree structs.
1534         (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
1535         (union lang_tree_node): Eliminate tinst_level field.
1536         (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
1537         (current_instantiation, outermost_tinst_level): Return
1538         a "struct tinst_level *".
1539
1540         * error.c (print_instantiation_partial_context): Change second
1541         parameter to a "struct tinst_level *".  Replace accessor macros
1542         with field access.
1543         (print_instantiation_full_context): Likewise.
1544         * lex.c (in_main_input_context): Likewise.
1545
1546         * pt.c (struct pending_templates): New.
1547         (pending_templates, last_pending_template): Use it as a type.
1548         (current_tinst_level): Change typo to "struct tinst_level *"
1549         (reopen_tinst_level): Accept "struct tinst_level *", return decl.
1550         (add_pending_template): Construct a "struct pending_template".
1551         Replace TINST_LEVEL accessor macros with field access.
1552         (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
1553         (pop_tinst_level): Likewise.
1554         (instantiate_pending_templates): Likewise.  Factor common code used
1555         when an instantiation has been done.
1556         (outermost_tinst_level): Replace tree_last with loop.
1557         (current_instantiation): Return a "struct tinst_level *".
1558
1559 2007-08-24  Ollie Wild  <aaw@google.com>
1560
1561         * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
1562         * name-lookup.h (cp_binding_level): Remove vtables member.
1563
1564 2007-08-24  Richard Guenther  <rguenther@suse.de>
1565
1566         * tree.c (cp_cannot_inline_tree_fn): Remove.
1567         * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
1568         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
1569         Remove define.
1570
1571 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
1572
1573         PR c++/32567
1574         * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
1575         error_mark_node right away if build_expr_type_conversion
1576         returned it.
1577
1578         PR c++/32898
1579         * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
1580         is error_mark_node rather than NULL_TREE.
1581         * pt.c (check_explicit_specialization): Likewise.
1582
1583         PR c++/31941
1584         * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
1585         TARGET_VTABLE_USES_DESCRIPTORS targets properly.
1586
1587 2007-08-22  Jason Merrill  <jason@redhat.com>
1588
1589         PR c++/29365
1590         * pt.c (outermost_tinst_level): New function.
1591         * lex.c (in_main_input_context): New function.
1592         * cp-tree.h: Declare it.
1593         * decl2.c (constrain_class_visibility): Use it to avoid warning
1594         about uses of the anonymous namespace in the main input file.
1595
1596 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1597
1598         * init.c (build_new_1): Use get_target_expr instead of save_expr.
1599
1600 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
1601
1602         PR c++/7302
1603         * class.c (finish_struct_1): Warn when a class has virtual
1604         functions and accessible non-virtual destructor.
1605
1606 2007-08-20  Richard Guenther  <rguenther@suse.de>
1607
1608         PR c++/22369
1609         PR c++/22451
1610         * call.c (build_new_method_call): Convert initializer to
1611         the basetype.
1612         * init.c (build_aggr_init): Do not fiddle with types.
1613         (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
1614         * except.c (build_throw): Do not drop qualifiers for the
1615         pointer type.
1616         * typeck.c (get_member_function_from_ptrfunc): Do not
1617         fiddle with types, instead convert.
1618         (build_ptrmemfunc1): Convert to the target type for
1619         initialization.
1620         (gfc_trans_allocate): Convert result to target type.
1621         * cp-objcp-common.c (cxx_get_alias_set): Pointers to
1622         pointer-to-member structures shall have alias set zero as well.
1623
1624 2007-08-20  Richard Guenther  <rguenther@suse.de>
1625
1626         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
1627         Remove.
1628         * cp-tree.h (cp_auto_var_in_fn_p): Remove.
1629         (nonstatic_local_decl_p): Likewise.
1630         * tree.c (cp_auto_var_in_fn_p): Remove.
1631         * decl.c (nonstatic_local_decl_p): Remove.
1632
1633 2007-08-20  Richard Guenther  <rguenther@suse.de>
1634
1635         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
1636         Remove define.
1637         * tree.h (cp_walk_tree): New define to walk_tree_1 with
1638         cp_walk_subtrees lh parameter.
1639         (cp_walk_tree_without_duplicates): New define to
1640         walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
1641         * tree.c (count_trees): Call
1642         cp_walk_tree_without_duplicates.
1643         (verify_stmt_tree): Call cp_walk_tree.
1644         (break_out_target_exprs): Likewise.
1645         (WALK_SUBTREE): Likewise.
1646         * cp-gimplify.c (cp_genericize): Likewise.
1647         * cp-pt.c (find_parameter_packs_r): Likewise.
1648         (uses_parameter_packs): Likewise.
1649         (make_pack_expansion): Likewise.
1650         (check_for_bare_parameter_packs): Likewise.
1651         (for_each_template_parm): Likewise.
1652         * decl.c (check_default_argument): Call
1653         cp_walk_tree_without_duplicates.
1654         * except.c (build_throw): Likewise.
1655         * decl2.c (type_visibility): Likewise.
1656         * semantics.c (expand_or_defer_fn): Likewise.
1657         (finalize_nrv): Call cp_walk_tree.
1658
1659 2007-08-20  Jakub Jelinek  <jakub@redhat.com>
1660
1661         PR c++/33025
1662         * init.c (build_new_1): Rename placement_var variable to placement_expr.
1663         Initialize it with save_expr rather than get_temp_regvar.
1664
1665 2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1666
1667         PR c++/28989
1668         * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
1669         lvalues.
1670
1671 2007-08-17  Ollie Wild  <aaw@google.com>
1672
1673         PR c++/31749
1674         * name-lookup.c (do_nonmember_using_decl): Shift implicit type
1675         declarations into appropriate slots for comparison.  Fix type
1676         comparison.
1677
1678 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
1679
1680         PR c++/32112
1681         * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
1682         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1683
1684 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
1685
1686         PR c++/32870
1687         * parser.c (cp_parser_class_head): Improve error message.
1688
1689 2007-08-16  Seongbae Park  <seongbae.park@gmail.com>
1690
1691         * pt.c (instantiate_decl): Set input_location
1692         for the function end.
1693
1694 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1695
1696         * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
1697         Constify.
1698         * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
1699         class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
1700         cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
1701         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
1702         * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
1703         * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
1704         * typeck.c (cp_type_quals): Likewise.
1705         * typeck2.c (cxx_incomplete_type_diagnostic,
1706         cxx_incomplete_type_error): Likewise.
1707
1708 2007-08-16  Paolo Carlini  <pcarlini@suse.de>
1709
1710         PR c++/31132
1711         * pt.c (tsubst_friend_function): When check_classfn
1712         returns error_mark_node likewise return it.
1713
1714 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
1715
1716         PR c++/32992
1717         * typeck.c (check_return_expr): Don't NRV optimize vars in
1718         anonymous unions.
1719         * decl.c (finish_function): Comment fix.
1720
1721 2007-08-15  Paolo Carlini  <pcarlini@suse.de>
1722
1723         PR c++/33035
1724         * pt.c (push_template_decl_real): Depending on TYPE_P
1725         use either TYPE_CONTEXT or DECL_CONTEXT.
1726
1727 2007-08-14  Mark Mitchell  <mark@codesourcery.com>
1728
1729         * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
1730         constructors and destructors return this.
1731
1732 2007-08-14  Paolo Carlini  <pcarlini@suse.de>
1733
1734         PR c++/27211
1735         * decl2.c (check_classfn): Return error_mark_node in case of error;
1736         in that case, do not call add_method.
1737         * decl.c (start_decl): Deal with check_classfn returning
1738         error_mark_node.
1739         (grokfndecl): Likewise.
1740         * pt.c (tsubst_friend_function): Likewise.
1741
1742 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
1743
1744         PR c++/30428
1745         * typeck.c (build_binary_op): Disallow vector float types with
1746         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
1747
1748 2007-08-11  Ian Lance Taylor  <iant@google.com>
1749
1750         * cp-objcp-common.c (cxx_get_alias_set): Change return type to
1751         alias_set_type.
1752         * cp/cp-tree.h (cxx_get_alias_set): Update declaration.
1753
1754 2007-08-10  Ollie Wild  <aaw@google.com>
1755
1756         * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
1757         type lookups.
1758         (ambiguous_decl): Construct tree of ambiguous types.  Remove extaneous
1759         function parameter.
1760         (unqualified_namespace_lookup): Fix ambiguous_decl call.
1761         (lookup_using_namespace): Fix ambiguous_decl call.
1762         (qualified_lookup_using_namespace): Fix ambiguous_decl call.
1763
1764 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1765
1766         * call.c (name_as_c_string): Use CONST_CAST.
1767         * decl.c (build_decl): Likewise.
1768         * parser.c (cp_parser_string_literal): Likewise.
1769
1770 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
1771
1772         PR c++/17763
1773         * error.c (dump_expr): Consistently use the *_cxx_*
1774         variants of the pretty-print functions.
1775
1776 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
1777
1778         PR c++/22256
1779         * decl.c (check_special_function_return_type): Just error
1780         on return type specified for conversion operator.
1781
1782 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
1783
1784         * typeck2.c (readonly_error): Handle general expressions.
1785         * error.c (dump_expr): Handle POINTER_PLUS_EXPR
1786
1787 2007-08-06  Dan Hipschman  <dsh@google.com>
1788
1789         * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
1790         access function name.
1791
1792 2007-08-04  Alfred Minarik  <a.minarik@aon.at>
1793
1794         PR pch/13676
1795         * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
1796         * g++spec.c (lang_specific_driver): Check them.
1797
1798 2007-08-06  Paolo Carlini  <pcarlini@suse.de>
1799
1800         PR c++/19532
1801         * pt.c (inline_needs_template_parms): Fix comment; change return type
1802         to bool.
1803
1804 2007-08-05  Volker Reichelt  <v.reichelt@netcologne.de>
1805
1806         Revert:
1807         2007-03-26  Dirk Mueller  <dmueller@suse.de>
1808
1809         * parser.c (cp_parser_member_declaration): Pedwarn
1810         about stray semicolons after member declarations.
1811
1812 2007-08-02  Lee Millward  <lee.millward@gmail.com>
1813
1814         PR c++/30849
1815         PR c++/30850
1816         PR c++/30851
1817         * parser.c (cp_parser_asm_definition): Detect and discard asm
1818         statements with invalid inputs or outputs.
1819         (cp_parser_asm_operand_list): Return error mark node if any
1820         of the operands are invalid. Adjust documentation.
1821         
1822 2007-08-02  Nick Clifton  <nickc@redhat.com>
1823
1824         * typeck.c: Change copyright header to refer to version 3 of the
1825         GNU General Public License and to point readers at the COPYING3
1826         file and the FSF's license web page.
1827         * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
1828         config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
1829         Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
1830         cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
1831         tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
1832         cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
1833         cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
1834         name-lookup.h, parser.c: Likewise.
1835
1836 2007-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1837
1838         PR middle-end/32668
1839         * call.c (magic_varargs_p): Honor the "type generic" attribute.
1840
1841 2007-07-30  Paolo Carlini  <pcarlini@suse.de>
1842
1843         PR c++/32108
1844         * semantics.c (finish_label_stmt): Reject the __label__
1845         extension outside function scopes.
1846
1847 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1848
1849         * parser.c (eof_token): Un-constify.
1850         (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
1851         cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
1852         casts.
1853
1854 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
1855
1856         * pt.c, tree.c, typeck2.c: Fix comment typos.
1857
1858 2007-07-28  Simon Martin  <simartin@users.sourceforge.net>
1859             Mark Mitchell  <mark@codesourcery.com>
1860
1861         PR c++/30917
1862         * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
1863         hidden due to friend declarations in local classes.
1864
1865 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
1866
1867         * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
1868         * cp-tree.def (DECLTYPE_TYPE): New.
1869         * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
1870         (dump_type_prefix): Ditto.
1871         (dump_type_suffix): Ditto.
1872         * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
1873         * mangle.c (write_type): Handle DECLTYPE_TYPE.
1874         * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
1875         types.
1876         (DECLTYPE_TYPE_EXPR): New.
1877         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
1878         (finish_declared_type): Declare.
1879         * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
1880         DECLTYPE_TYPE nodes.
1881         (pp_cxx_type_id): Ditto.
1882         * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
1883         (tsubst): Substitute into a DECLTYPE_TYPE node.
1884         (tsubst_copy): Ditto.
1885         (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
1886         nodes.
1887         (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
1888         * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
1889         structural equality (because we can't hash the expressions).
1890         (finish_declared_type): New.
1891         * lex.c (reswords): Add "decltype" keyword.
1892         * parser.c cp_lexer_next_token_is_decl_specifier_keyword
1893         (cp_parser_postfix_expression): Add member_access_only_p to
1894         restrict postfix expression to member access expressions.
1895         (cp_parser_unary_expression): Update call to
1896         cp_parser_postfix_expression to reflect new parameter.
1897         (cp_parser_declared_type): New.
1898         (cp_parser_simple_type_specifier): Parse decltype types.
1899
1900 2007-07-27  Mark Mitchell  <mark@codesourcery.com>
1901
1902         PR c++/32346
1903         * call.c (convert_for_arg_passing): Only widen bitfields to their
1904         declared types if necessary.
1905
1906 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1907
1908         * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
1909         Constify.
1910
1911 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1912
1913         * decl.c (typename_hash, typename_compare): Constify.
1914         * mangle.c (hash_type, compare_type): Likewise.
1915         * pt.c (eq_local_specializations, hash_local_specialization):
1916         Likewise.
1917         * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
1918         list_hash): Likewise.
1919         * typeck2.c (pat_compare): Likewise.
1920
1921 2007-07-24  Nathan Sidwell  <nathan@codesourcery.com>
1922
1923         * method.c (implicitly_declare_fn): Increase alignment if member
1924         function pointer format requires it.
1925
1926 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
1927
1928         PR c++/29001
1929         * typeck.c (check_return_expr): Do not pass a null argument
1930         to null_ptr_cst_p.
1931
1932 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
1933
1934         PR c++/32561
1935         * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
1936         only on VAR_DECL.
1937
1938 2007-07-22  Nathan Sidwell  <nathan@codesourcery.com>
1939
1940         PR c++/32839
1941         * typeck.c (convert_arguments): Only use default args if we have
1942         a function decl.
1943
1944         PR c++/30818
1945         * typeck.c (structural_comptypes): No need to check
1946         resolve_typename_type return value here.
1947         * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
1948         * pt.c (resolve_typename_type): Follow typename typedefs.  Return
1949         original type rather than error_mark_node in case of failure.
1950         * parser.c (cp_parser_nested_name_specifier_opt): Adjust
1951         resolve_typename_type result check.
1952         (cp_parser_direct_declarator, cp_parser_head,
1953         cp_parser_constructor_declarator_p): Likewise.
1954
1955 2007-07-12  Kazu Hirata  <kazu@codesourcery.com>
1956
1957         * pt.c (template_parms_variadic_p): Remove.
1958         * cp-tree.h: Remove the prototype for template_parms_variadic_p.
1959
1960 2007-07-12  Jakub Jelinek  <jakub@redhat.com>
1961
1962         PR c++/30854
1963         * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
1964         argument to dump_aggr_init_expr_args instead of false.
1965
1966 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
1967
1968         * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
1969         canonical types; otherwise, fall back to structural type
1970         comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
1971         internal compiler error if the canonical types are wrong.
1972         
1973 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
1974
1975         PR c++/32560
1976         * parser.c (cp_parser_make_indirect_declarator): When the
1977         the code argument is ERROR_MARK return cp_error_declarator.
1978
1979 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
1980
1981         PR 32617
1982         * decl.c (cxx_init_decl_processing): Don't set
1983         force_align_functions_log.
1984         (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
1985         * typeck.c (cxx_alignof_expr): When alignof is used on a plain
1986         FUNCTION_DECL, return its alignment.
1987
1988 2007-07-09  Richard Guenther  <rguenther@suse.de>
1989
1990         * decl.c (start_preparsed_function): Do not promote return type.
1991
1992 2007-07-08  Paolo Carlini  <pcarlini@suse.de>
1993
1994         PR c++/30535
1995         * pt.c (unify): Never pass error_mark_node to template_decl_level.
1996
1997 2007-07-07  Mark Mitchell  <mark@codesourcery.com>
1998
1999         PR c++/32232
2000         * pt.c (resolve_overloaded_unification): Robustify.  Return a
2001         bool, not an int.
2002         (type_unification_real): Adjust accordingly.
2003
2004 2007-07-06  Richard Guenther  <rguenther@suse.de>
2005
2006         * init.c (build_new_1): Use the correct pointer type.
2007         * typeck2.c (build_m_component_ref): Likewise.
2008
2009 2007-07-05  Mark Mitchell  <mark@codesourcery.com>
2010
2011         PR c++/32245
2012         * init.c (build_zero_init): Always build an initializer for
2013         non-static storage.
2014         * typeck2.c (build_functional_cast): Use build_zero_init.
2015
2016         PR c++/32251
2017         * init.c (build_new_1): Always pass the allocation function to
2018         build_op_delete_call.
2019         * call.c (build_op_delete_call): Handle operator delete with a
2020         variable-argument list.  Do not issue an error when no matching
2021         deallocation function is available for a new operator.
2022
2023         PR c++/31992
2024         * cp-tree.h (any_value_dependent_elements_p): Declare it.
2025         * decl.c (value_dependent_init_p): New function.
2026         (cp_finish_decl): Use it.
2027         * pt.c (value_dependent_expression_p): Use
2028         any_value_dependent_elements_p.
2029         * parser.c (cp_parser_primary_expression): Add comment about
2030         treating dependent qualified names as integral
2031         constant-expressions.
2032
2033 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
2034
2035         * decl.c (build_ptrmemfunc_type): Always use structural equality
2036         tests when comparing pointer-to-member-function types, because the
2037         handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
2038         types.
2039         
2040 2007-07-03  Mark Mitchell  <mark@codesourcery.com>
2041
2042         * init.c (build_new): Tweak comment.
2043
2044 2007-06-29  Dave Brolley  <brolley@redhat.com>
2045
2046         PR c++/31743
2047         * parser.c (cp_parser_new_type_id): Don't reduce a named array
2048         type to its base type and number of elements here.
2049         * init.c (build_new): Call complete_type_or_else to ensure that the
2050         type is complete and to issue a diagnostic if it is not.
2051         (build_new_1): Don't call complete_type_or_else here.
2052
2053 2007-07-03  Richard Guenther  <rguenther@suse.de>
2054
2055         PR c++/32609
2056         * class.c (fixed_type_or_null): Re-lookup the hashtable slot
2057         after recursing.
2058
2059 2007-07-02  Simon Baldwin  <simonb@google.com>
2060
2061         * parser.c (cp_parser_elaborated_type_specifier): Added a warning
2062         for inner-style nested forward declarations that don't declare
2063         anything useful.
2064
2065 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
2066
2067         PR c++/31748
2068         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
2069         DECL_P in not a variable and appears more than once error messages.
2070
2071 2007-07-01  Ollie Wild  <aaw@google.com>
2072
2073         * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
2074         (select_decl): Remove function.
2075         (unqualified_namespace_lookup): Populate binding by calling
2076         ambiguous_decl.  Remove select_decl call.
2077         (lookup_qualified_name): Remove select_decl call.
2078         * decl.c (lookup_and_check_tag): Check for ambiguous references.
2079         * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
2080         generation when name lookup is ambiguous.
2081
2082 2007-06-29  Douglas Gregor  <doug.gregor@gmail.com>
2083
2084         PR c++/31724
2085         * init.c (build_new_1): Use structural equality on the copy of the
2086         array type.
2087
2088 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
2089
2090         * decl2.c (determine_visibility): Implement
2091         flag_visibility_ms_compat effect on type info.
2092         * decl.c (cxx_init_decl_processing): Implement
2093         global effect of flag_visibility_ms_compat.
2094
2095 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
2096
2097         * decl2.c (start_objects): Mark constructor-running function
2098         as artificial.
2099
2100 2007-06-26  Simon Martin  <simartin@users.sourceforge.net>
2101
2102         PR c++/32111
2103         * decl.c (grokdeclarator): Reset friendp for member functions declared
2104         friend of their own class.
2105
2106 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
2107
2108         * decl2.c (determine_visibility): Don't look for dllexport here.
2109         (determine_visibility_from_class): Tidy.
2110
2111 2007-06-18  Simon Baldwin <simonb@google.com>
2112
2113         PR c++/31923
2114         * parser.c (cp_parser_single_declaration): Added check for storage
2115         class other than sc_none in parsed declaration, and a flag to indicate
2116         if the call is part of an explicit template specialization parse.
2117         * (cp_parser_explicit_specialization): Specialization check flag added
2118         to call to cp_parser_single_declaration(), set true.
2119         * (cp_parser_template_declaration_after_export): Specialization check
2120         flag added to call to cp_parser_single_declaration(), set false.
2121         * pt.c (check_explicit_specialization): Added code to copy visiblity
2122         and linkage from the templated function to the explicit specialization.
2123
2124 2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2125
2126         * typeck.c (build_binary_op): For templates build the
2127         expression in pieces to avoid the assert in build2_stat.
2128         (get_member_function_from_ptrfunc):
2129         Change over to using POINTER_PLUS_EXPR and convert
2130         the second operand to sizetype.
2131         * typeck2.c (build_m_component_ref):  Likewise.
2132         * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
2133         instead of PLUS_EXPR for pointers.
2134         (build_new_1): Likewise.
2135         (build_vec_delete_1): Likewise.
2136         (build_vec_delete): Likewise.
2137         * class.c (build_base_path): Likewise.
2138         (build_base_path): Likewise.
2139         (convert_to_base_statically): Likewise.
2140         (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
2141         (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
2142         instead of PLUS_EXPR.
2143         (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
2144         instead of PLUS_EXPR for pointers.
2145         * call.c (build_special_member_call): Likewise.
2146         * rtti.c (build_headof): Likewise.
2147         Use sizetype instead of ptrdiff_type_node.
2148         (tinfo_base_init): Create a POINTER_PLUS_EXPR
2149         instead of PLUS_EXPR for pointers.
2150         * except.c (expand_start_catch_block):  Do a
2151         NEGATIVE and then a POINTER_PLUS_EXPR instead
2152         of a MINUS_EXPR.
2153         * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
2154         PLUS_EXPR on pointer types over to use
2155         POINTER_PLUS_EXPR and remove the conversion
2156         to the pointer types.
2157         * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
2158         adding to a pointer type. Use size_int instead of
2159         ssize_int. Convert the index to sizetype before
2160         adding it to the pointer.
2161
2162 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
2163
2164         * cp-tree.h (DECL_VAR_MARKED_P): Remove.
2165         (DECL_ANON_UNION_VAR_P): New macro.
2166         * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
2167         than DECL_VAR_MARKED_P, to keep track of which variables we have
2168         seen.
2169         * decl.c (redeclaration_error_message): Complain about redeclaring
2170         anonymous union members at namespace scope.
2171         * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
2172
2173 2007-06-14  Geoff Keating  <geoffk@apple.com>
2174
2175         * decl2.c (determine_visibility): Ensure that functions with
2176         hidden types as parameters are hidden.
2177
2178         PR 31093
2179         * decl2.c (determine_visibility): Remove duplicate code for
2180         handling type info.
2181
2182 2007-06-12  Ian Lance Taylor  <iant@google.com>
2183
2184         PR libstdc++/29286
2185         * init.c (avoid_placement_new_aliasing): New static function.
2186         (build_new_1): Call it.
2187
2188 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
2189
2190         * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
2191         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2192
2193 2007-06-08  Jakub Jelinek  <jakub@redhat.com>
2194
2195         PR c++/32177
2196         * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
2197         on init, the non-decl cond operand and increment value.
2198
2199 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
2200
2201         PR c++/30759
2202         * decl.c (check_initializer): Report an error when a brace enclosed
2203         initializer is used for a non-aggregate type in C++98.
2204         (redeclaration_error_message): Rewrote flag_cpp0x in terms of
2205         cxx_dialect.
2206         (grokdeclarator): Likewise.
2207         (move_fn_p): Likewise.
2208         * typeck.c (check_return_expr): Likewise.
2209         * call.c (reference_binding): Likewise.
2210         * error.c (cp_cpp_error): Likewise.
2211         * pt.c (check_default_tmpl_args): Likewise.
2212         (tsubst): Likewise.
2213         * lex.c (init_reswords): Likewise.
2214         * parser.c (p_parser_primary_expression): Likewise.
2215         (TOKEN_PRECEDENCE): Likewise.
2216         (cp_parser_init_declarator): Likewise.
2217         (cp_parser_ptr_operator): Likewise.
2218         (cp_parser_parameter_declaration): Likewise.
2219         (cp_parser_enclosed_template_argument_list): Likewise.
2220         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
2221         (cp_parser_next_token_ends_template_argument_p): Likewise.
2222
2223 2007-06-04  Simon Baldwin  <simonb@google.com>
2224
2225         * decl.c (grokdeclarator): Readability change.  Moved case labels
2226         into direct switch statement scope.
2227
2228 2007-06-04  Paolo Carlini  <pcarlini@suse.de>
2229
2230         * call.c (convert_like_real): Remove pointless code.
2231
2232 2007-05-31  Mark Mitchell  <mark@codesourcery.com>
2233
2234         * decl.c (get_atexit_fn_ptr_type): New function.
2235         (get_atexit_node): Use it.
2236         (start_cleanup_fn): Likewise.
2237         (register_dtor_fn): Use the object's destructor, instead of a
2238         separate cleanup function, where possible.
2239         * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
2240         (atexit_fn_ptr_type_node): New macro.
2241         * decl2.c (build_cleanup): Use build_address.
2242
2243 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2244
2245         * typeck.c (build_binary_op): Include types in error.
2246
2247 2007-05-31  Jakub Jelinek  <jakub@redhat.com>
2248
2249         PR c++/31806
2250         * decl.c (cp_finish_decl): Also clear was_readonly if a static var
2251         needs runtime initialization.
2252
2253 2007-05-31  Paolo Carlini  <pcarlini@suse.de>
2254
2255         PR c++/32158
2256         * semantics.c (finish_trait_expr): Complete the types.
2257
2258 2007-05-30  Russell Yanofsky <russ@yanofsky.org>
2259             Douglas Gregor <doug.gregor@gmail.com>
2260             Pedro Lamarao <pedro.lamarao@mndfck.org>
2261             Howard Hinnant <howard.hinnant@gmail.com>
2262
2263         PR c++/7412
2264         PR c++/29939
2265         * typeck.c (comptypes): Don't consider rvalue and lvalue
2266         reference types to be equivalent.
2267         (check_return_expr): Move from certain lvalues when returning
2268         them.
2269         * decl.c (grokdeclarator): Implement reference collapsing.
2270         (copy_fn_p): Don't consider constructors taking rvalue references
2271         to be copy constructors.
2272         (move_fn_p): New.
2273         * call.c (conversion): New "rvaluedness_matches_p" member.
2274         (convert_class_to_reference): Require reference type as first
2275         parameter instead of base type.
2276         (reference_binding): Add logic to handle rvalue references.
2277         (implicit_conversion): Update inaccurate comment.
2278         (convert_like_real): Disable creation of temporaries that are
2279         impossible to initialize for types with move constructors.
2280         (build_over_call): Elide move constructors when possible.
2281         (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
2282         (maybe_handle_ref_bind): Return conversion instead of type node.
2283         (compare_ics): Add logic to use "rvaluedness_matches_p" values to
2284         determine preferred conversion sequences.
2285         * cp-tree.h (TYPE_REF_IS_RVALUE): New.
2286         (LOOKUP_PREFER_RVALUE): New.
2287         (DECL_MOVE_CONSTRUCTOR_P): New.
2288         (struct cp_declarator): Add "reference" member for reference
2289         types, with new "rvalue_ref" flag.
2290         (cp_build_reference_type): Declare.
2291         (move_fn_p): Declare.
2292         * error.c (dump_type_prefix): Format rvalue reference types
2293         correctly in error messages.
2294         * except.c (build_throw): Move from certain lvalues when
2295         throwing.
2296         * mangle.c (write_type): Mangle rvalue references differently
2297         than regular references.
2298         * parser.c (make_reference_declarator): Add boolean parameter for
2299         rvalue references.
2300         (cp_parser_make_indirect_declarator): New.
2301         (cp_parser_new_declarator_opt): Call
2302         cp_parser_make_indirect_declarator. 
2303         (cp_parser_conversion_declarator_opt): Ditto.
2304         (cp_parser_declarator): Ditto.
2305         (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
2306         declarators.
2307         * pt.c (tsubst): Implement reference collapsing.
2308         (maybe_adjust_types_for_deduction): Implement special template
2309         parameter deduction rule for rvalue references.
2310         (type_unification_real): Update calls to
2311         maybe_adjust_types_for_deduction.
2312         (try_one_overload): Ditto.
2313         (unify_pack_expansion): Ditto.
2314         * tree.c (lvalue_p_1): Handle rvalue reference types.
2315         (cp_build_reference_type): New.
2316
2317 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
2318
2319         PR c++/31809
2320         * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
2321         variables that need runtime initialization.
2322
2323 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
2324
2325         PR c++/31339
2326         * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
2327         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2328         case POSTDECREMENT_EXPR>): Return the error_mark_node
2329         if either the real or imaginary parts would an
2330         error_mark_node.
2331         
2332 2007-05-25  Simon Martin  <simartin@users.sourceforge.net>
2333             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2334
2335         PR c++/31745
2336         * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
2337         token is a closing brace, false if there are no tokens left.
2338         (cp_parser_namespace_alias_definition): Only consume the next token if
2339         it is a closing brace.
2340
2341         * parser.c (cp_parser_class_specifier): Likewise.
2342
2343 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2344
2345         * semantics.c (finish_member_declaration): Fix a typo in the
2346         last checkin.
2347
2348 2007-05-25  Douglas Gregor <doug.gregor@gmail.com>
2349
2350         PR c++/31431
2351         PR c++/31432
2352         PR c++/31434
2353         PR c++/31435
2354         PR c++/31437
2355         PR c++/31438
2356         PR c++/31442
2357         PR c++/31443
2358         PR c++/31444
2359         PR c++/31445
2360         * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
2361         * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
2362         * pt.c (check_for_bare_parameter_packs): Return bool indicated
2363         whether everything was okay. Fix indentation.
2364         (push_template_decl_real): Check for bare parameter packs in
2365         function parameters; where errors occur, mark the parameter types
2366         with ERROR_MARK_NODEs to avert ICEs.
2367         (coerce_template_parameter_pack): New.
2368         (coerce_template_parms): Moved parameter pack coercion into
2369         coerce_template_parameter_pack, and permit it anywhere in the
2370         template parameter list (not just at the end). Parameter and
2371         argument indices can vary (somewhat) separately now, so add
2372         PARM_IDX and ARG_IDX.
2373         (fn_type_unification): Don't set an argument pack as incomplete if
2374         no argument pack was deduced.
2375         (type_unification_real): If a type parameter is a parameter pack
2376         and has not otherwise been deduced, it will be deduced to an empty
2377         parameter pack.
2378         (more_specialized_fn): Use the actual lengths of the argument
2379         lists when comparing against expansions.
2380         * semantics.c (finish_member_declaration): If a field's type has
2381         bare parameter packs, error and set its type to ERROR_MARK_NODE.
2382
2383 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2384
2385         PR target/27067
2386         * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
2387
2388 2007-05-22  Ollie Wild  <aaw@google.com>
2389
2390         * name-lookup.c (ambiguous_decl): Adds check for hidden types.
2391         (unqualified_namespace_lookup): Adds check for hidden types.
2392
2393 2007-05-22  Ollie Wild  <aaw@google.com>
2394
2395         * decl.c (duplicate_decls): Verify namespace names are unique.
2396
2397 2007-05-21  Mark Mitchell  <mark@codesourcery.com>
2398
2399         * decl.c (cxx_maybe_build_cleanup): Handle
2400         __attribute__((cleanup)).
2401
2402 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2403
2404         * cvt.c (cp_convert_and_check): Don't check warnings if the
2405         conversion failed.
2406
2407 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
2408
2409         * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
2410
2411 2007-05-14  Paolo Carlini  <pcarlini@suse.de>
2412
2413         PR c++/29928
2414         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
2415         type only if is a class type (5.2.8/4).
2416
2417 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
2418
2419         * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2420         * decl.c (grokdeclarator): Use unsigned_type_for instead of
2421         c_common_unsigned_type.
2422
2423 2007-05-11  Silvius Rus  <rus@google.com>
2424
2425         * cp/typeck.c (build_indirect_ref): Add call to
2426         strict_aliasing_warning.
2427         (build_reinterpret_cast_1): Condition call to
2428         strict_aliasing_warning. 
2429
2430 2007-05-11  Jan Hubicka  <jh@suse.cz>
2431
2432         * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
2433         * decl2.c (start_objects): ctors and dtors are no longer public.
2434         (cp_write_global_declarations): Do not call c_build_cdtor_fns.
2435         
2436 2007-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2437
2438         * typeck.c (build_unary_op): Remove code that used to
2439         handle non lvalue increments/decrements.
2440
2441 2007-05-07  Mike Stump  <mrs@apple.com>
2442
2443         * parser.c (check_empty_body): Add.
2444         (cp_parser_iteration_statement): Add call to check_empty_body.
2445
2446 2007-05-05  Geoffrey Keating  <geoffk@apple.com>
2447
2448         PR 31775
2449         * mangle.c (write_mangled_name): Mangle static variable names.
2450         (write_unqualified_name): Use local-source-name for
2451         namespace-scope static variables.
2452
2453 2007-05-04  Dirk Mueller  <dmueller@suse.de>
2454
2455         * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
2456         not in effect.
2457
2458 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
2459
2460         PR c++/31663
2461         * decl2.c (constrain_class_visibility): 
2462         Use strip_pointer_or_array_types instead of strip_array_types.
2463
2464 2007-04-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2465
2466         PR C++/30221
2467         * decl.c (reshape_init_r): Don't reshape the first element if it
2468         is a pointer to member function.
2469
2470 2007-04-27  Simon Baldwin  <simonb@google.com>
2471
2472         * decl.c (grokparms): Changed message format from %qD to %qE.
2473
2474 2007-04-27  Douglas Gregor  <doug.gregor@gmail.com>
2475
2476         * error.c (maybe_warn_variadic_templates): Variadic templates are
2477        now in C++0x, so only warn about them in C++98 mode.
2478         
2479 2007-04-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2480
2481         PR C++/30016
2482         * typeck.c (build_reinterpret_cast_1): Only allow conversion to
2483         integeral types from vectors types.
2484
2485 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
2486
2487         PR c++/31598
2488         * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
2489         for type dependent OMP_CLAUSE_DECLs.
2490
2491 2007-04-24  Mark Mitchell  <mark@codesourcery.com>
2492
2493         PR c++/31338
2494         * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
2495         * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
2496         COMPLEX_TYPE is now an ARITHMETIC_TYPE.
2497         * init.c (build_zero_init): Adjust, as
2498         COMPLEX_TYPE is now a SCALAR_TYPE.
2499         * typeck2.c (digest_init): Allow brace-enclosed initializers for
2500         COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
2501
2502 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
2503
2504         * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
2505         per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
2506         (trait_expr_value): Adjust.
2507
2508 2007-04-23  Simon Baldwin  <simonb@google.com>
2509
2510         * decl.c (grokparms): Added new error for duplicate function
2511         parameters names in function prototypes, to match gcc behavior.
2512
2513 2007-04-23  Jan Hubicka  <jh@suse.cz>
2514
2515         * cp/decl2.c (finish_objects): Do not call target constructor/destructor
2516         bits dirrectly.
2517
2518 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2519
2520         * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
2521         instead of checking GIMPLE_STMT_P in chain_next.
2522
2523 2007-04-17  Mark Mitchell  <mark@codesourcery.com>
2524
2525         PR c++/31513
2526         * call.c (convert_for_arg_passing): Convert bitfields to their
2527         declared types.
2528
2529 2007-04-17  Simon Martin  <simartin@users.sourceforge.net>
2530
2531         PR c++/31517
2532         * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
2533
2534 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
2535
2536         PR c++/29365
2537         * cp/decl2.c (constrain_class_visibility):
2538         Do not warn about the use of anonymous namespace in the main input file.
2539
2540 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
2541
2542         * cp-tree.h (current_template_parms): Fix typo in comment.
2543
2544 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
2545
2546         * cp-tree.h, error.c: Fix comment typos.
2547
2548 2007-04-13  Jason Merrill  <jason@redhat.com>
2549
2550         PR c++/31074
2551         * call.c (reference_binding): Add c_cast_p parm.  If true,
2552         add quals to TO as needed to make it reference-compatible.
2553
2554 2007-04-11  Jan Hubicka  <jh@suse.cz>
2555
2556         * cp/class.c (convert_to_base_statically): Fold produced tree; verify
2557         that we are not processing template_decl.
2558
2559 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
2560
2561         PR c++/31449
2562         * class.c (build_base_path): Ensure that the converted pointer has
2563         the same cv-qualification as the input.
2564
2565 2007-04-09  Paolo Carlini  <pcarlini@suse.de>
2566
2567         * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
2568
2569 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
2570
2571         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
2572         Do not set it.
2573         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
2574         * tree.c (cp_add_pending_fn_decls): Remove.
2575         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
2576
2577 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
2578
2579         Revert change removing staticp.
2580
2581 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
2582
2583         * cp-objcp-common.c (cxx_staticp): Remove.
2584         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
2585         * cp-tree.h (cxx_staticp):      
2586
2587 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
2588
2589         * class.c (check_for_override): Don't remove dllmport attribute
2590         of virtual methods.
2591
2592 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
2593
2594         PR c++/30847
2595         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
2596         type issue error and return early.
2597
2598 2007-03-30  Jason Merrill  <jason@redhat.com>
2599
2600         PR c++/31187
2601         * typeck.c (cp_type_readonly): New fn.
2602         * cp-tree.h: Declare it.
2603         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
2604         (cp_finish_decl): Not here.
2605
2606 2007-03-31  Richard Guenther  <rguenther@suse.de>
2607
2608         * optimize.c (maybe_clone_body): Replace splay-tree usage by
2609         pointer-map.
2610
2611 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
2612
2613         PR c++/31138
2614         PR c++/31140
2615         PR c++/31141
2616         * parser.c (declarator_can_be_parameter_pack): New.
2617         (cp_parser_template_parameter): Only parse the `...' if the
2618         declarator can be a parameter pack.
2619         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
2620         is NULL.
2621         * pt.c (find_parameter_packs_r): Look into the bounds on integer
2622         types (they could be used as array bounds). 
2623         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
2624         (tsubst_pack_expansion): Handle failure to expand parameter
2625         packs.
2626         
2627 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
2628
2629         PR c++/26099
2630         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
2631         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
2632         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
2633         (CLASS_TYPE_NON_UNION_P): Add.
2634         (struct lang_type_class): Add has_complex_dflt.
2635         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
2636         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
2637         * cp-tree.def: Add TRAIT_EXPR.
2638         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
2639         * lex.c (struct resword): Add __has_nothrow_assign,
2640         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
2641         __has_trivial_constructor, __has_trivial_copy,
2642         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
2643         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
2644         __is_pod, __is_polymorphic, __is_union.
2645         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
2646         (cp_parser_trait_expr): New.
2647         * semantics.c (finish_trait_expr, trait_expr_value
2648         classtype_has_nothrow_copy_or_assign_p): New.
2649         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
2650         as static.
2651         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
2652         * class.c (check_bases, check_field_decl, check_bases_and_members):
2653         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
2654         * pt.c (uses_template_parms, tsubst_copy_and_build,
2655         value_dependent_expression_p, type_dependent_expression_p): Deal with
2656         TRAIT_EXPR.
2657         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
2658
2659 2007-03-29  Richard Guenther  <rguenther@suse.de>
2660
2661         * tree.c (cp_walk_subtrees): Do not set input_location.
2662
2663 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
2664
2665         PR c++/29077
2666         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
2667         destructor.
2668
2669 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2670
2671         * parser.c (struct cp_parser): Update comment for
2672         greater_than_is_operator_p.
2673         (cp_parser_primary_expression): In C++0x mode, a cast operator can
2674         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
2675         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
2676         !GREATER_THAN_IS_OPERATOR_P.
2677         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
2678         `>>' operators that will become two `>' tokens in C++0x.
2679         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
2680         mode, allowing it to terminate default arguments.
2681         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
2682         `>>' like two consecutive `>' tokens.
2683         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
2684         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
2685         ends a template argument.
2686
2687 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
2688
2689         * decl.c (redeclaration_error_message): Complain when redeclaring
2690         a friend function with default template arguments (C++0x mode only).
2691         * cp-tree.h (check_default_tmpl_args): Declare.
2692         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
2693         template arguments in function templates. Add support for checking
2694         the default template arguments of friend templates.
2695         (push_template_decl_real): Fix call to check_default_tmpl_args.
2696         (type_unification_real): If a template parameter has not been
2697         deduced but provides a default template argument, substitute into
2698         that default template argument.
2699         * parser.c (cp_parser_init_declarator): When declaring (but not
2700         defining!) a function template in C++0x mode, check for default
2701         template arguments.
2702
2703 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
2704
2705         PR c++/29993
2706         * decl.c (grokdeclarator): Deal with cv-qualified function type
2707         typedefs in the same way for member and non-member functions.
2708
2709 2007-03-26  Dirk Mueller  <dmueller@suse.de>
2710
2711         * parser.c (cp_parser_member_declaration): Pedwarn
2712         about stray semicolons after member declarations.
2713
2714 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
2715
2716         PR c++/30500
2717         * pt.c (instantiate_decl): Set in_system_header.
2718
2719 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
2720
2721         * cp-tree.h (current_tempalte_parms): Improve documentation.
2722         * pt.c (current_template_args): Likewise.
2723
2724         PR c++/30863
2725         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
2726         not consume tokens when failing.
2727
2728 2007-03-22  Jim Wilson  <wilson@specifix.com>
2729             Mark Mitchell  <mark@codesourcery.com>
2730
2731         PR c++/31273
2732         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
2733         consistent with FROM.
2734
2735 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2736
2737         * error.c (dump_expr): Handle dependent names that designate types.
2738         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
2739
2740 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2741
2742         * cp-tree.def, parser.c, pt.c: Fix comment typos.
2743
2744 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2745
2746         * cvt.c (cp_convert_and_check) : Define.
2747         * cp-tree.h (cp_convert_and_check): Declare.
2748         * call.c (convert_conversion_warnings): Rename to
2749         conversion_null_warnings.  The warning for floating-point to
2750         integer is handled by convert_and_check in convert_like_real.
2751         (convert_like_real): convert_conversion_warnings was renamed as
2752         conversion_null_warnings.
2753         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
2754         overflow and changes of value during conversion.
2755
2756 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2757
2758         PR c++/30891
2759         * parser.c (cp_parser_statement): If 'namespace' is found, this
2760         only can be a namespace alias definition, so parse it now.
2761         (cp_parser_namespace_alias_definition): if we find an open brace
2762         instead of '=', then this is actually a misplaced namespace
2763         definition.
2764         
2765 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2766
2767         PR c++/24924
2768         * decl.c (cxx_init_decl_processing): Move command-line options
2769         processing to c-opts.c.
2770         
2771 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
2772
2773         * ptree.c (cxx_print_type): Use formatting markup for integers
2774         when printing template parameter index/level/orig level.
2775         (cxx_print_xnode): Ditto.
2776         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
2777         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
2778         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
2779         HOST_WIDE_INTs.
2780         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
2781         rather than a HOST_WIDE_INT.
2782         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
2783         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
2784         better bit-packing.
2785         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
2786         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
2787         IN_BASE_INITIALIZER bool bitfields.
2788         (struct cp_declarator): Make KIND a 4-bit field. Make
2789         PARAMETER_PACK_P a bool bitfield just after KIND.
2790         * pt.c (uses_parameter_packs): Destroy the pointer set.
2791         (make_pack_expansion): Ditto.
2792         (check_for_bare_parameter_packs): Ditto.
2793         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
2794         
2795 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2796
2797         PR c++/31165
2798         * call.c  (convert_default_arg): Instead of copying the node,
2799         unshare it.
2800
2801 2007-03-15  Dirk Mueller  <dmueller@suse.de>
2802
2803         PR c++/30860
2804         * call.c (convert_conversion_warnings): New..
2805         (convert_like_real): .. factored out from here.
2806         (convert_conversion_warnings): Add warning about
2807         false being converted to NULL in argument passing.
2808
2809 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2810
2811         * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
2812         (finish_do_body): Warn about empty body in do/while statement.
2813
2814 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2815
2816         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
2817         
2818 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2819
2820         PR c/21438
2821         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
2822         warning.
2823         
2824 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2825
2826         * cp/repo.c (init_repo): Initialize random_seed saved options.
2827         (finish_repo): Adjust.
2828
2829 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
2830
2831         PR bootstrap/30899
2832         * Make-lang.in (doc/g++.1): Use $< to specify the location from
2833         which to copy.
2834
2835 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2836
2837         * decl.c (compute_array_index_type): New warning flag warn_vla.
2838
2839 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2840
2841         PR c++/30108
2842         * call.c (convert_default_arg): Copy non-constant arguments.
2843
2844 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
2845
2846         PR c++/31038
2847         * parser.c (cp_parser_postfix_expression): Disallow compound
2848         literals in constant expressions.
2849
2850         PR c++/30328
2851         * semantics.c (finish_typeof): Use unlowered_expr_type.
2852         
2853 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
2854
2855         PR c++/30274
2856         * cp-tree.h (unlowered_expr_type): New function.
2857         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
2858         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
2859         (unlowered_expr_type): New function.
2860         (build_unary_op): Disallow predecrements of bool bitfields.
2861         * call.c (build_conditional_expr): Use unlowered_expr_type.
2862         * pt.c (type_unification_real): Likewise.
2863
2864 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
2865
2866         PR c++/20599
2867         * typeck.c (check_return_expr): Check for bare parameter packs.
2868         (comptypes): Compare template parameter packs and
2869         type pack expansions.
2870         * decl.c (grokdeclarator): Deal with the declaration of function
2871         parameter packs.
2872         (grokparms): Verify that the (optional) function parameter pack is
2873         at the end of the parameter list.
2874         (xref_basetypes): Handle pack expansions in the base class.
2875         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
2876         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
2877         (NONTYPE_ARGUMENT_PACK): New.
2878         (TYPE_PACK_EXPANSION): New.
2879         (EXPR_PACK_EXPANSION): New.
2880         (ARGUMENT_PACK_SELECT): New.
2881         * cp-objcp-common.c (cp_tree_size): Compute size of
2882         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
2883         ARGUMENT_PACK_SELECT.
2884         * error.c (dump_template_argument): Print template argument packs.
2885         (dump_template_argument_list): Ditto.
2886         (dump_template_parameter): Dump `...' for template type parameter
2887         packs.
2888         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
2889         (dump_parameters): Print function parameter packs.
2890         (dump_template_parms): Print template argument packs.
2891         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
2892         (maybe_warn_variadic_templates): New.
2893         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
2894         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2895         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2896         CAST_EXPR. 
2897         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
2898         (write_template_arg): Write argument packs as separate arguments.
2899         * cp-tree.h (struct template_parm_index_s): Add flag that
2900         indicates that the template parameter is actually a parameter
2901         pack.
2902         (struct tree_argument_pack_select): New.
2903         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
2904         (union lang_tree_node): Add argument_pack_select.
2905         (FUNCTION_PARAMETER_PACK_P): New.
2906         (PACK_EXPANSION_P): New.
2907         (PACK_EXPANSION_PATTERN): New.
2908         (SET_PACK_EXPANSION_PATTERN): New.
2909         (PACK_EXPANSION_PARAMETER_PACKS): New.
2910         (ARGUMENT_PACK_P): New.
2911         (ARGUMENT_PACK_ARGS): New.
2912         (SET_ARGUMENT_PACK_ARGS): New.
2913         (ARGUMENT_PACK_INCOMPLETE_P): New.
2914         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
2915         (TEMPLATE_PARM_PARAMETER_PACK): New.
2916         (TEMPLATE_TYPE_PARAMETER_PACK): New.
2917         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
2918         (ARGUMENT_PACK_SELECT_INDEX): New.
2919         (ARGUMENT_PACK_SELECT_ARG): New.
2920         (struct cp_declarator): Add parameter_pack_p flag.
2921         (maybe_warn_variadic_templates): Declare.
2922         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
2923         indicate a template parameter pack. 
2924         (uses_parameter_packs): Declare.
2925         (template_parameter_pack_p): Declare.
2926         (template_parms_variadic_p): Declare.
2927         (make_pack_expansion): Declare.
2928         (check_for_bare_parameter_packs): Declare.
2929         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
2930         sizeof... expressions. 
2931         (pp_cxx_expression): Print pack expansions and non-type argument
2932         packs.
2933         (pp_cxx_exception_specification): Print pack expansions. 
2934         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
2935         (pp_cxx_ctor_initializer): Print pack expansions.
2936         (pp_cxx_type_id): Print pack expansions.
2937         (pp_cxx_template_argument_list): Print argument packs.
2938         (pp_cxx_template_parameter): Print ellipsis for template parameter
2939         packs.
2940         * pt.c (comp_template_parms): Compare template parameter packs.
2941         (template_parameter_pack_p): New.
2942         (template_parms_variadic_p): New.
2943         (template_args_variadic_p): New.
2944         (make_ith_pack_parameter_name): New.
2945         (struct find_parameter_pack_data): New.
2946         (find_parameter_packs_r): New.
2947         (uses_parameter_packs): New.
2948         (make_pack_expansion): New.
2949         (check_for_bare_parameter_packs): New.
2950         (expand_template_argument_pack): New.
2951         (reduce_template_parm_level): Propagate parameter pack flag.
2952         (process_template_parm): Add is_parameter_pack parameter to state
2953         when the parameter is actually a parameter pack. Create template
2954         parameter packs when is_parameter_pack is true.
2955         (current_template_args): The argument for a template parameter
2956         pack is an argument pack containing a single pack expansion.
2957         (process_partial_specialization): When checking that non-type
2958         argument expressions do not involve template parameters, loop over
2959         the arguments in argument packs separately.
2960         (push_template_decl_real): Check that the type of the declaration
2961         does not have any bare parameter packs. Check that primary
2962         templates have no more than one parameter pack, and that it comes
2963         at the end of the template parameter list.
2964         (convert_template_argument): Handle coercions for pack expansion
2965         expressions by coercing the pattern then rebuilding the expansion.
2966         (coerce_template_parms): When coercing the arguments for a
2967         variadic template, pack "extra" arguments into an argument pack.
2968         (coerce_template_template_parms): Cannot coerce between parameter
2969         packs and non-pack parameters.
2970         (template_args_equal): Compare PACK_EXPANSION_P expressions.
2971         (comp_template_args): Expand all template arguments packs before
2972         comparing template argument lists.
2973         (mangle_class_name_for_template): Make argument packs as separate
2974         template arguments.
2975         (for_each_template_parm_r): No need to handle BASELINK. 
2976         (instantiate_class_template): Handle pack expansions in the base
2977         class list.
2978         (tsubst_pack_expansion): New.
2979         (tsubst_template_args): Handle substitutions of argument packs and
2980         pack expansion into template argument lists.
2981         (tsubst_decl): Expand function parameter packs into separate
2982         function parameters.
2983         (tsubst_arg_types): Expand a type pack expansion into separate
2984         argument types.
2985         (tsubst_exception_specification): Handle pack expansions in
2986         exception specifiers.
2987         (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
2988         replacing a template parameter with its argument. If we encounter
2989         a substitution for an argument pack, just return the parameter
2990         itself. 
2991         (tsubst_copy): sizeof(X...) returns the number of elements in
2992         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
2993         PARM_DECL is a parameter pack.
2994         (tsubst_expr): Expression pack expansions and argument packs
2995         cannot show up here; they will all be handled through function
2996         calls, sizeof, and template argument lists.
2997         (tsubst_copy_and_build): sizeof(X...) returns the number of
2998         elements in parameter pack X.  Handle pack expansions in TREE_LIST
2999         and CONSTRUCTOR nodes.
3000         (fn_type_unification): Handle "incomplete" explicit template
3001         argument lists that specify some of the arguments for a template
3002         parameter pack.
3003         (type_unification_real): Unify arguments against pack expansions.
3004         (template_parm_level_and_index): New, helper function.
3005         (unify_pack_expansion): New.
3006         (unify): Unify argument packs on an argument-by-argument basis,
3007         handling variadic argument packs as well.
3008         (more_specialized_fn): Handle unification of function parameter
3009         packs. All things being equal, prefer non-variadic function
3010         templates to variadic function templates.
3011         (more_specialized_class): Prefer the variadic class template
3012         partial specialization that binds fewer arguments to a parameter
3013         pack.
3014         (regenerate_decl_from_template): Expand function parameter packs
3015         into separate parameters.
3016         (instantiate_decl): Ditto.
3017         (tsubst_initializer_list): Handle pack expansions for base-class
3018         initializers.
3019         (dependent_type_p_r): Determine dependent types in argument packs
3020         and pack expansions.
3021         (value_dependent_expression_p): Determine value-dependence of
3022         non-type argument packs.
3023         (dependent_template_arg_p): Handle argument packs.
3024         * semantics.c (finish_cond): Check for bare parameter packs.
3025         (finish_expr_stmt): Ditto.
3026         (finish_for_expr): Ditto.
3027         (finish_switch_cond): Ditto.
3028         (finish_mem_initializers): Ditto.
3029         * name-lookup.c (arg_assoc_type): Handle pack expansions and
3030         argument packs.
3031         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
3032         * parser.c (make_declarator): Declarator is not an expansion.
3033         (make_pointer_declarator): Transfer parameter pack flag to outer
3034         declarator.
3035         (make_reference_declarator): Ditto.
3036         (make_ptrmem_declarator): Ditto.
3037         (make_call_declarator): Ditto.
3038         (make_array_declarator): Ditto.
3039         (cp_parser_postfix_expression): Allow pack expansion expressions
3040         in the argument list for a call expression.
3041         (cp_parser_parenthesized_expression_list): Add new parameter
3042         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
3043         into separate arguments."
3044         (cp_parser_new_placement): Allow pack expansion expressions.
3045         (cp_parser_new_initializer): Ditto.
3046         (cp_parser_mem_initializer_list): Allow ellipsis to create a
3047         base-class initializer expansion.
3048         (cp_parser_mem_initializer): Ditto.
3049         (cp_parser_template_parameter_list): Keep track of whether the
3050         template parameter is a template parameter pack.
3051         (cp_parser_template_parameter): Parse the ellipsis to indicate a
3052         template parameter pack.
3053         (cp_parser_type_parameter): Ditto.
3054         (cp_parser_template_argument_list): Parse the ellipsis to indicate
3055         a pack expansion.
3056         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
3057         this declarator is a parameter pack.
3058         (cp_parser_parameter_declaration): The ellipsis does not end the
3059         parameter declaration, because it might be a parameter pack. Parse
3060         the ellipsis to indicate a parameter pack.
3061         (cp_parser_initializer): Allow pack expansions.
3062         (cp_parser_initializer_list): Allow ellipsis to create an
3063         initializer expansion.
3064         (cp_parser_base_clause): Allow ellipsis to create a base specifier
3065         expansion.
3066         (cp_parser_type_id_list): Allow ellipsis to create an exception
3067         specifier expansion.
3068         (cp_parser_attribute_list): Don't allow pack expansions.
3069         (cp_parser_functional_cast): Allow pack expansions.
3070         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
3071         compute the length of a parameter pack.
3072         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
3073         end a template argument.
3074         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
3075         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
3076         CAST_EXPR. 
3077
3078 2007-03-09  Dirk Mueller  <dmueller@suse.de>
3079
3080         * cp/call.c (build_new_op): Call warn_logical_operator.
3081
3082 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3083
3084         PR c++/30852
3085         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
3086
3087         PR c++/30534
3088         * pt.c (any_template_arguments_need_structural_equality_p):
3089         Robustify.
3090
3091 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3092
3093         * decl.c (grokdeclarator): Disable warnings for anonymous
3094         bitfields.
3095
3096 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
3097
3098         * typeck2.c (readonly_error): Always emit a hard error.
3099         Remove last argument.
3100         * cp-tree.h (readonly_error): Adjust prototype.
3101         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
3102         * typeck.c (build_unary_op): Likewise.
3103         (build_modify_expr): Likewise.
3104
3105 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
3106
3107         PR c++/30895
3108         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
3109
3110 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3111
3112         PR c++/15787
3113         * parser.c (struct cp_parser): New IN_IF_STMT.
3114         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
3115         returning if parsing the body of an 'if' statement or issuing an
3116         error and continuing.
3117         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
3118         body of 'if'.
3119         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
3120         
3121 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
3122
3123         PR c++/28253
3124         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
3125         for thunks.
3126
3127 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
3128
3129         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
3130         Objective-C++.  Don't exit early if -shared-libgcc needs to be
3131         added.
3132
3133 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3134
3135         * typeck.c (common_base_type): Delete unused function.
3136         
3137 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
3138
3139         * Make-lang.in: Add dummy lang.install-pdf target.
3140
3141 2007-03-01  Simon Baldwin <simonb@google.com>
3142
3143         PR c++/23689
3144         * decl.c (check_tag_decl): Added new warning for typedef ignored
3145         when it precedes an otherwise valid non-typedef declaration.
3146
3147 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
3148
3149         * typeck.c (build_function_call): Store converted arguments
3150         in a stack-allocated array instead of building a list.
3151         (convert_arguments): Store arguments in the array passed in as an
3152         argument, and return the actual number of arguments.
3153         * call.c (build_call): Delete, and replace with...
3154         (build_call_n, build_call_a): New.
3155         (build_op_delete_call): Rewrite to avoid constructing argument lists.
3156         (build_over_call): Store converted arguments in a stack-allocated
3157         array instead of building a list.
3158         (build_cxx_call): Pass arguments in an array instead of as a list.
3159         (build_java_interface_fn_ref): Rewrite to avoid constructing
3160         argument lists.
3161         * tree.h: Update declarations to reflect above changes.
3162         * method.c (use_thunk): Use a stack-allocated array to hold
3163         the arguments instead of a list.
3164         * rtti.c (throw_bad_cast): Update call to cxx_call.
3165         (throw_bad_typeid): Likewise.
3166         (build_dynamic_cast_1): Likewise.
3167         * init.c (build_builtin_delete_call): Use build_call_n.
3168         * decl.c (expand_static_init): Likewise.
3169         * except.c (cp_protect_cleanup_actions): Likewise.
3170         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
3171         (gimplify_must_not_throw_expr): Likewise.
3172         (cxx_omp_apply_fn): Use build_call_a.
3173
3174 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
3175
3176         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
3177         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
3178
3179 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
3180
3181         * cp-tree.h (static_ctors): Remove.
3182         * cp-tree.h (static_dtors): Likewise.
3183         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
3184         refactoring of tree_map hierarchy.
3185         (decl_shadowed_for_var_insert): Likewise.
3186         * semantics.c (expand_body): Use c_expand_body.
3187         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
3188         * decl2.c (static_ctors): Remove.
3189         (static_dtors): Likewise.
3190         (generate_ctor_or_dtor_function): Pass NULL_TREE to
3191         objc_generate_static_init_call.  Do not call static_[cd]tors.
3192         (generate_ctor_and_dtor_functions_for_priority): Do not check for
3193         static_[cd]tors.
3194         (cp_write_global_declarations): Likewise.
3195
3196 2007-02-23  Richard Guenther  <rguenther@suse.de>
3197
3198         * class.c (note_name_declared_in_class): Make declaration
3199         changes meaning a pedwarn.
3200
3201 2007-02-22  Michael Matz  <matz@suse.de>
3202
3203         PR c++/29433
3204         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
3205         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
3206         dump_function_decl): Guard emitting outer scopes by new flag.
3207         * cp-lang.c (cxx_dwarf_name): New function.
3208         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
3209         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
3210         Remove functions.
3211         (push_template_decl_real, lookup_template_class): Remove calls
3212         to above functions.
3213
3214 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
3215
3216         * call.c (build_new_method_call): Ensure that explicit calls of
3217         destructors have type "void".
3218
3219 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3220
3221         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
3222         and -Walways-true with -Waddress.
3223         * cvt.c (convert_to_void): Replace unconditional warning with
3224         -Waddress.
3225
3226 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
3227
3228         * decl.c, tree.c: Fix comment typos.
3229
3230 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3231
3232         PR C++/30158
3233         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
3234         statement expression if we had an error mark node.
3235
3236 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3237             Brooks Moses  <brooks.moses@codesourcery.com>
3238             Lee Millward  <lee.millward@codesourcery.com>
3239
3240         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
3241         Change class to tcc_vl_exp.
3242
3243         * call.c (build_call): Use build_call_list instead 
3244         of build3. 
3245         (build_over_call): Likewise.
3246         (build_new_method_call): Use build_min_non_dep_call_list 
3247         instead of build_min_non_dep.
3248
3249         * error.c (dump_call_expr_args): New function.
3250         (dump_aggr_init_expr_args): New function.
3251         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
3252         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
3253
3254         * cvt.c (convert_to_void): Use build_call_array instead
3255         of build3; use new AGGR_INIT_EXPR accessor macros.
3256
3257         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
3258         instead of TREE_CODE_LENGTH.
3259
3260         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
3261         AGGR_INIT_EXPR accessor macros.
3262
3263         * cp-gimplify.c (cp_gimplify_init_expr): Use 
3264         AGGR_INIT_EXPR_SLOT to set the slot operand.
3265
3266         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
3267         (AGGR_INIT_EXPR_SLOT): New macro.
3268         (AGGR_INIT_EXPR_ARG): New macro.
3269         (aggr_init_expr_nargs): New macro.
3270         (AGGR_INIT_EXPR_ARGP): New macro.
3271         (aggr_init_expr_arg_iterator): New.
3272         (init_aggr_init_expr_arg_iterator): New.
3273         (next_aggr_init_expr_arg): New.
3274         (first_aggr_init_expr_arg): New.
3275         (more_aggr_init_expr_args_p): New.
3276         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
3277         (stabilize_aggr_init): New declaration.
3278         (build_min_non_dep_call_list): Likewise.
3279
3280         * tree.c (process_aggr_init_operands): New function.
3281         (build_aggr_init_array) New function.
3282         (build_cplus_new): Update to use new CALL_EXPR and
3283         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
3284         build_aggr_init_array.
3285         (build_min_non_dep_call_list) New function.
3286         (build_min_nt): Assert input code parameter is not a variable
3287         length expression class.
3288         (build_min, build_min_non_dep): Likewise.
3289         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
3290         to check for equality instead of recursing. Handle tcc_vl_exp
3291         tree code classes.
3292         (stabilize_call): Update to only handle CALL_EXPRs, not 
3293         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
3294         (stabilize_aggr_init): New function.
3295         (stabilize_init): Use it.
3296
3297         * cxx-pretty-print.c (pp_cxx_postfix_expression)
3298         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
3299         AGGR_INIT_EXPR accessor macros and argument iterators.
3300         
3301         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
3302         build_vl_exp. Iterate through the operands, recursively 
3303         processing each one.
3304         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
3305         CALL_EXPR accessor macros.
3306         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
3307         tree code classes. Use TREE_OPERAND_LENGTH instead of 
3308         TREE_CODE_LENGTH.
3309
3310         * semantics.c (finish_call_expr): Use build_nt_call_list
3311         instead of build_nt.
3312         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
3313         accessor macros. Use build_call_array to construct the 
3314         CALL_EXPR node instead of build3
3315         
3316         * decl2.c (build_offset_ref_call_from_tree): Use 
3317         build_nt_call_list and build_min_non_dep_call_list instead
3318         of build_min_nt and build_min_non_dep.
3319
3320         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
3321         Use build_nt_call_list instead of build_min_nt.
3322
3323 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3324
3325         PR c++/28943
3326         * call.c (build_conditional_expr): Improve error message.
3327         
3328 2007-02-13  Dirk Mueller  <dmueller@suse.de>
3329
3330         * friend.c (do_friend): Annotate warning about friend
3331         declarations in templates with OPT_Wnon_template_friend.
3332         Convert informal message from warning() to inform().
3333
3334 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
3335             Mark Mitchell  <mark@codesourcery.com>
3336
3337         PR c++/14622
3338         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
3339         instantiations for variables.
3340
3341 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3342
3343         PR middle-end/7651
3344         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
3345         Check warn_unused_value just once.
3346
3347 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
3348
3349         PR c++/26988
3350         * pt.c (determine_specialization): Use skip_artificial_parms_for.
3351         (fn_type_unificiation): Likewise.
3352         (get_bindings): Likewise.
3353
3354 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
3355
3356         PR target/29487
3357         * decl.c (finish_function): Use DECL_REPLACEABLE.
3358         * tree.c (cp_cannot_inline_tree_fn): Likewise.
3359
3360 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3361
3362         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
3363
3364 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
3365
3366         * decl.c (grokvardecl): Don't error if !have_tls.
3367         (grokdeclarator): Likewise.
3368         * parser.c (cp_parser_omp_threadprivate): Likewise.
3369
3370 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
3371
3372         PR c++/30703
3373         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
3374         parameters and result decls in omp clauses.
3375         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
3376         by reference.
3377
3378 2007-02-05  Dirk Mueller  <dmueller@suse.de>
3379
3380         PR bootstrap/30510
3381         * parser.c (cp_parser_class_specifier): Always initialize bases.
3382
3383 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
3384
3385         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
3386         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
3387         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
3388         expressions.
3389         * semantics.c (finish_omp_atomic): Store a whole expression node
3390         in operand 1, and integer_zero_node in operand 0, for dependent
3391         OMP_ATOMIC.  Rewrite to make flow easier to understand.
3392
3393 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3394
3395         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
3396
3397 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
3398
3399         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
3400         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
3401
3402 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
3403
3404        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
3405        keyword warning to -Wc++0x-compat.
3406         
3407 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3408
3409         * decl.c (grokdeclarator): Update documentation.
3410
3411 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
3412
3413         PR c++/30536
3414         * decl.c (grokdeclarator): If __thread is used together with
3415         a storage class other than extern and static, clear thread_p
3416         after issuing diagnostics and fall through to checking the
3417         storage class.
3418
3419 2007-01-30  Roger Sayle  <roger@eyesopen.com>
3420
3421         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
3422         calculating the size of an array (to avoid recursive errors).
3423
3424 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3425
3426         PR c++/24745
3427         * typeck.c (build_binary_op): Fix logic for warning. Move warning
3428         to -Wpointer-arith.
3429         * call.c (convert_like_real): Don't warn when converting to
3430         boolean type.
3431         
3432 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3433
3434         * decl.c (pop_label): Replace warning with call to
3435         warn_for_unused_label.
3436
3437 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
3438
3439         PR C++/28988
3440         * semantics.c (finish_pseudo_destructor_expr): Check the
3441         destrutor name by calling check_dtor_name.
3442
3443 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
3444
3445         * lex.c (D_CPP0X): Rename.
3446         (D_CXX0X): To this.
3447         (reswords): D_CPP0X -> D_CXX0X.
3448         (init_reswords): Ditto.
3449         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
3450         of C++0x keywords as identifiers.
3451
3452 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
3453
3454         PR c++/27492
3455         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
3456         function decls.
3457
3458 2007-01-23  Ian Lance Taylor  <iant@google.com>
3459
3460         * typeck.c (convert_for_assignment): Only warn about a = b = c
3461         when converting to bool.
3462
3463 2007-01-23  Roger Sayle  <roger@eyesopen.com>
3464
3465         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
3466         TREE_OVERFLOW.
3467         * typeck.c (ignore_overflows): Remove the remaining uses of
3468         TREE_CONSTANT_OVERFLOW.
3469
3470 2007-01-20  Jan Hubicka  <jh@suse.cz>
3471
3472         * decl2.c (start_objects, start_static_storage_duration_function):
3473         Do not make the functions uninlinable.
3474
3475 2007-01-17  Ian Lance Taylor  <iant@google.com>
3476
3477         * class.c (add_method): Call VEC_reserve_exact rather than passing
3478         a negative size to VEC_reserve.
3479
3480 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
3481
3482         PR c++/29573
3483         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
3484
3485 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
3486
3487         PR c++/28999
3488         * decl.c (make_typename_type): If the qualified name is not a
3489         type, issue an error.
3490         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
3491         formatting.
3492
3493 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
3494
3495         * rtti.c: Include target.h.
3496         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
3497         don't emit typeinfo for fundamental types as weak.
3498         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
3499
3500 2007-01-08  Richard Guenther  <rguenther@suse.de>
3501
3502         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
3503
3504 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
3505
3506         * call.c (standard_conversion): Pass flag to
3507         vector_types_convertible_p to disallow emission of note.
3508         * typeck.c (convert_for_assignment): Pass flag to
3509         vector_types_convertible_p to allow emission of note.
3510         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
3511         to disallow emission of note.
3512
3513 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3514
3515         PR c++/28986
3516         * typeck.c (build_binary_op): Call overflow_warning if
3517         TREE_OVERFLOW_P is true for the result and not for any of the
3518         operands.
3519         
3520 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
3521
3522        PR c++/19439
3523        * class.c (add_method): Don't wait until template
3524        instantiation time to complain about duplicate methods.
3525         
3526 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3527
3528         PR c/19978
3529         * semantics.c (finish_unary_op_expr): Warn only if result
3530         overflowed and operands did not.
3531
3532 2007-01-05  Ian Lance Taylor  <iant@google.com>
3533
3534         * typeck.c (build_binary_op): Warn about comparing a non-weak
3535         address to NULL.
3536
3537 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
3538
3539         * pt.c (tsubst): Propagate the need for structural equality checks
3540         when reducing the level of template parameters.
3541
3542 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
3543
3544         * pt.c: Fix a comment typo.
3545
3546 2007-01-02  Ian Lance Taylor  <iant@google.com>
3547
3548         * semantics.c (maybe_convert_cond): Optionally warn when using an
3549         assignment as a condition.
3550         * typeck.c (convert_for_assignment): Optionally warn about
3551         assigning the result of an assignment to a bool.
3552
3553 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
3554
3555         * pt.c (canonical_template_parms): Correct typo in comment.
3556         
3557 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
3558
3559         * typeck.c (structural_comptypes): Renamed from "comptypes".
3560         (comptypes): Use canonical type information to perform fast type
3561         comparison. When VERIFY_CANONICAL_TYPES, verify that the
3562         canonical type comparison returns the same results as we would see
3563         from the current, structural check. Support COMPARE_STRUCTURAL
3564         when we need structural checks.
3565         * decl.c (typename_compare): Fix comment.
3566         (build_typename_type): TYPENAME_TYPE nodes require structural
3567         equality checks, because they resolve different based on the
3568         current class type.
3569         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
3570         require structural equality checks (for now).
3571         (build_ptrmemfunc_type): Build the canonical pointer to member
3572         function type.
3573         (compute_array_index_type): Whenever we build a new index type
3574         to represent the size of an array in a template, we need to mark
3575         this index type as requiring structural equality. This goes for
3576         arrays with value-dependent sizes with the current ABI, or all
3577         arrays with ABI-1.
3578         * tree.c (cplus_array_hash): New.
3579         (struct cplus_array_info): New.
3580         (cplus_array_compare): New.
3581         (cplus_array_htab): New.
3582         (build_cplus_array_type_1): Use a hash table to cache the array
3583         types we build. Build the canonical array type for each array
3584         type.
3585         (cp_build_qualified_type_real): When building a cv-qualified array
3586         type, use the hash table of array types and build canonical array
3587         types as necessary.
3588         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
3589         use structural equality (for now).
3590         * cp-tree.h (COMPARE_STRUCTURAL): New.
3591         * pt.c (canonical_template_parms): New.
3592         (canonical_type_parameter): New.
3593         (process_template_parm): Find the canonical type parameter.
3594         (lookup_template_class): When we have named the primary template
3595         type, set the canonical type for our template class to the primary
3596         template type. If any of the template arguments need structural
3597         equality checks, the template class needs structural equality
3598         checks.
3599         (tsubst): When reducing the level of a template template
3600         parameter, we require structural equality tests for the resulting
3601         parameter because its template parameters have not had their types
3602         canonicalized. When reducing a template type parameter, find the
3603         canonical reduced type parameter.
3604         (any_template_arguments_need_structural_equality_p): New.
3605