OSDN Git Service

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