OSDN Git Service

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