OSDN Git Service

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