OSDN Git Service

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