OSDN Git Service

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