OSDN Git Service

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