OSDN Git Service

Fix PR c++/44188
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
2
3         PR c++/44188
4         * cp-tree.h (typedef_variant_p): Move this declaration to
5         gcc/tree.h.
6         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
7         * decl.c (grokdeclarator): Do not rename debug info of an
8         anonymous tagged type named by a typedef.
9
10 2010-06-05  Fabien Chêne  <fabien@gcc.gnu.org>
11         
12         PR c++/44086
13         * class.c (check_field_decls): Move the call to
14         check_bitfield_decl before trying to set the
15         CLASSTYPE_READONLY_FIELDS_NEED_INIT flag.
16
17 2010-06-05  Steven Bosscher  <steven@gcc.gnu.org>
18
19         * typeck.c: Update include path for moved files.
20         * decl.c: Likewise.
21         * rtti.c: Likewise.
22         * cp-gimplify.c: Likewise.
23         * cp-lang.c: Likewise.
24         * pt.c: Likewise.
25         * semantics.c: Likewise.
26         * cxx-pretty-print.h: Likewise.
27         * decl2.c: Likewise.
28         * parser.c: Likewise.
29         * cp-objcp-common.c: Likewise.
30         * cp-tree.h: Likewise.
31         * name-lookup.c: Likewise.
32         * lex.c: Likewise.
33         * name-lookup.h: Likewise.
34         * config-lang.in: Update paths in gtfiles for files in c-family/.
35         * Make-lang.in: Likewise.
36
37 2010-06-04  Magnus Fromreide  <magfr@lysator.liu.se>
38
39         * cvt.c (cp_convert_to_pointer): Use null_ptr_cst_p.
40         * typeck.c (build_ptrmemfunc): Likewise.
41
42 2010-06-04  Jason Merrill  <jason@redhat.com>
43
44         * typeck2.c (merge_exception_specifiers): Adjust merging of
45         throw() and noexcept(true).
46
47         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Avoid
48         using an uninitialized variable.
49
50         * cxx-pretty-print.c (pp_cxx_unary_expression): Handle NOEXCEPT_EXPR.
51         (pp_cxx_expression): Likewise.
52
53         Implement noexcept-specification (15.4)
54         * parser.c (cp_parser_exception_specification_opt): Parse it.
55         Give -Wdeprecated warning about throw() specs.
56         * pt.c (tsubst_exception_specification): Handle it.
57         * error.c (dump_exception_spec): Handle it.
58         (dump_expr): Handle NOEXCEPT_EXPR.
59         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
60         * typeck.c (comp_except_specs): Handle compatibility rules.
61         Change exact parm to take an enum.
62         * typeck2.c (merge_exception_specifiers): Handle noexcept.
63         * except.c (nothrow_spec_p, type_noexcept_p): New fns.
64         (type_throw_all_p, build_noexcept_spec): New fns.
65         * cp-tree.h (TYPE_NOTHROW_P, TYPE_NOEXCEPT_P): Use them.
66         (comp_except_specs): Define ce_derived, ce_normal, ce_exact enums.
67         (cp_tree_index): Add CPTI_NOEXCEPT_TRUE_SPEC, CPTI_NOEXCEPT_FALSE_SPEC.
68         (noexcept_true_spec, noexcept_false_spec): New macros.
69         * name-lookup.c (pushdecl_maybe_friend): Adjust.
70         * search.c (check_final_overrider): Adjust.
71         * decl.c (check_redeclaration_exception_specification): Adjust.
72         (use_eh_spec_block): Use type_throw_all_p.
73         (cxx_init_decl_processing): Set noexcept_false_spec,noexcept_true_spec.
74         Give operator new a noexcept-specification in C++0x mode.
75         * tree.c (build_exception_variant, cxx_type_hash_eq): Adjust.
76         (cp_build_type_attribute_variant): Don't test TYPE_RAISES_EXCEPTIONS.
77
78         Implement noexcept operator (5.3.7)
79         * cp-tree.def (NOEXCEPT_EXPR): New.
80         * except.c (check_noexcept_r, finish_noexcept_expr): New.
81         * cp-tree.h: Declare finish_noexcept_expr.
82         * parser.c (cp_parser_unary_expression): Parse noexcept-expression.
83         * pt.c (tsubst_copy_and_build): And tsubst it.
84         (type_dependent_expression_p): Handle it.
85         (value_dependent_expression_p): Handle it.
86
87         * call.c (build_conditional_expr): Never fold in unevaluated context.
88         * tree.c (build_aggr_init_expr): Propagate TREE_NOTHROW.
89         * semantics.c (simplify_aggr_init_expr): Likewise.
90         * typeck.c (merge_types): Call merge_exception_specifiers.
91         * decl.c (duplicate_decls): Check DECL_SOURCE_LOCATION rather than
92         DECL_ANTICIPATED for preferring new type.
93
94 2010-06-04  Joseph Myers  <joseph@codesourcery.com>
95
96         * g++spec.c (lang_specific_driver): Use GCC-specific formats in
97         diagnostics.
98
99 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
100
101         PR c++/44412
102         * typeck.c (build_class_member_access_expr): Call mark_exp_read
103         on object for static data members.
104
105 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
106             Jason Merrill  <jason@redhat.com>
107
108         PR c++/44362
109         * call.c (build_conditional_expr): If both arg2 and arg3 are lvalues
110         with the same type, call mark_lvalue_use on both.
111
112 2010-06-03  Nathan Froyd  <froydnj@codesourcery.com>
113
114         * class.c (struct vtbl_init_data_s): Remove last_init field.
115         (struct secondary_vptr_vtt_init_data_s): Change type of inits field
116         to a VEC.
117         (finish_vtbls): Use a VEC rather than a TREE_LIST for the accumulated
118         initializers.
119         (build_vtt): Likewise.
120         (initialize_vtable): Take a VEC instead of a tree.
121         (build_vtt_inits): Change return type to void.  Take a VEC **
122         instead of a tree *; accumulate results into said VEC.
123         (build_ctor_vtbl_group): Use a VEC rather than a TREE_LIST for the
124         accumulated initializers.  Pass the vtable to accumulate_vtbl_inits.
125         (accumulate_vtbl_inits): Add extra vtable tree parameter; take a VEC
126         instead of a tree.
127         (dfs_accumulate_vtbl_inits): Likewise.  Change return type to void.
128         (build_vtbl_initializer): Add VEC parameter; accumulate initializers
129         into it.
130         (dfs_build_secondary_vptr_vtt_inits): Use CONSTRUCTOR_APPEND_ELT
131         rather than tree_cons.
132         (build_vbase_offset_vtbl_entries): Likewise.
133         (add_vcall_offset): Likewise.
134         (build_rtti_vtbl_entries): Likewise.
135         * cp-tree.h (initialize_artificial_var): Take a VEC instead of a tree.
136         * decl.c (initialize_artificial_var): Use build_constructor instead
137         of build_constructor_from_list.
138
139 2010-06-03  H.J. Lu  <hongjiu.lu@intel.com>
140
141         PR c++/44294
142         * class.c (layout_class_type): Check MAX_FIXED_MODE_SIZE on
143         bit-field.
144
145 2010-06-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
146
147         * parser.c (cp_parser_mem_initializer_list): Change error text.
148
149 2010-06-02  Jakub Jelinek  <jakub@redhat.com>
150
151         * cp-objcp-common.c (shadowed_var_for_decl): Change into
152         tree_decl_map hashtab from tree_map.
153         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Adjust.
154         (init_shadowed_var_for_decl): Adjust initialization.
155
156         PR c++/44361
157         * cvt.c (convert_to_void): If implicit is NULL, call mark_rvalue_use
158         instead of calling mark_exp_read only when not an assignment.
159
160         PR debug/44367
161         * semantics.c (finalize_nrv): Don't copy DECL_ARTIFICIAL, DECL_IGNORED_P,
162         DECL_SOURCE_LOCATION and DECL_ABSTRACT_ORIGIN from var to result.
163         Set DECL_VALUE_EXPR on var.
164
165 2010-06-02  Jason Merrill  <jason@redhat.com>
166
167         * error.c (dump_type): Improve typedef handling.
168
169         PR c++/9726
170         PR c++/23594
171         PR c++/44333
172         * name-lookup.c (same_entity_p): New.
173         (ambiguous_decl): Multiple declarations of the same entity
174         are not ambiguous.
175
176 2010-06-01  Jason Merrill  <jason@redhat.com>
177
178         DR 990
179         * call.c (add_list_candidates): Prefer the default constructor.
180         (build_aggr_conv): Treat missing initializers like { }.
181         * typeck2.c (process_init_constructor_record): Likewise.
182         * init.c (expand_default_init): Use digest_init for
183         direct aggregate initialization, too.
184
185         * call.c (add_list_candidates): Split out...
186         (build_user_type_conversion_1): ...from here.
187         (build_new_method_call): And here.
188         (implicit_conversion): Propagate LOOKUP_NO_NARROWING.
189
190         PR c++/44358
191         * call.c (build_list_conv): Set list-initialization flags properly.
192
193 2010-06-01  Nathan Froyd  <froydnj@codesourcery.com>
194
195         * typeck2.c (build_x_arrow): Make types_memoized a VEC.
196
197 2010-06-01  Arnaud Charlet  <charlet@adacore.com>
198             Matthew Gingell  <gingell@adacore.com>
199
200         * Make-lang.in (CXX_C_OBJS): Add c-ada-spec.o.
201         * decl2.c: Include langhooks.h and c-ada-spec.h.
202         (cpp_check, collect_source_refs, collect_ada_namespace,
203         collect_all_refs): New functions.
204         (cp_write_global_declarations): Add handling of -fdump-ada-spec.
205         * lang-specs.h: Ditto.
206
207 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
208
209         * cp-tree.h (cp_build_function_call_nary): Declare.
210         * typeck.c (cp_build_function_call_nary): Define.
211         * decl.c (register_dtor_fn): Use it instead of
212         cp_build_function_call.
213         (cxx_maybe_build_cleanup): Likewise.
214         * decl2.c (generate_ctor_or_dtor_function): Likewise.
215         * except.c (do_get_exception_ptr): Likewise.
216         (do_begin_catch): Likewise.
217         (do_allocate_exception): Likewise.
218         (do_free_exception): Likewise.
219         (build_throw): Likewise.  Use cp_build_function_call_vec instead
220         of cp_build_function_call.
221         (do_end_catch): Likewise.
222
223 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
224
225         * cp-tree.h (struct cp_decl_specifier_seq): Move type_location field up.
226         (struct cp_declarator): Move id_loc field up.
227
228 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
229
230         * cp-tree.h (ATTRIBUTE_GCC_CXXDIAG): Remove.  Require that
231         this file is included before c-common.h.  Define GCC_DIAG_STYLE
232         before including diagnostic-core.h and toplev.h.
233         (pedwarn_cxx98): Use ATTRIBUTE_GCC_DIAG.
234         * pt.c: Include cp-tree.h before c-common.h.
235
236 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
237
238         * tree.c (c_register_addr_space): Add stub.
239
240 2010-05-28  Joseph Myers  <joseph@codesourcery.com>
241
242         * g++spec.c (lang_specific_driver): Use fatal_error instead of
243         fatal.
244
245 2010-05-28  Dodji Seketeli  <dodji@redhat.com>
246
247         Revert fix of PR c++/44188
248         * cp-tree.h (typedef_variant_p): Revert moving this declaration to
249         gcc/tree.h.
250         * tree.c (typedef_variant_p): Revert moving this definition to
251         gcc/tree.c.
252         * decl.c (grokdeclarator): Revert naming typedef handling.
253
254 2010-05-27  Joseph Myers  <joseph@codesourcery.com>
255
256         * call.c: Include diagnostic-core.h instead of diagnostic.h.
257         * cp-lang.c: Don't include diagnostic.h
258         * name-lookup.c: Include diagnostic-core.h instead of
259         diagnostic.h.
260         (cp_emit_debug_info_for_using): Use seen_error.
261         * optimize.c: Include diagnostic-core.h instead of diagnostic.h.
262         * parser.c: Include diagnostic-core.h instead of diagnostic.h.
263         * pt.c (iterative_hash_template_arg): Use seen_error.
264         * repo.c: Include diagnostic-core.h instead of diagnostic.h.
265         * typeck2.c: Include diagnostic-core.h instead of diagnostic.h.
266         * Make-lang.in (cp/cp-lang.o, cp/typeck2.o, cp/call.o, cp/repo.o,
267         cp/optimize.o, cp/parser.o, cp/name-lookup.o): Update
268         dependencies.
269
270 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
271
272         PR c++/44188
273         * cp-tree.h (typedef_variant_p): Move this declaration to
274         gcc/tree.h.
275         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
276         * decl.c (grokdeclarator): Do not rename debug info of an
277         anonymous tagged type named by a typedef.
278
279 2010-05-27  Jason Merrill  <jason@redhat.com>
280
281         PR c++/43555
282         * decl.c (grokdeclarator) [cdk_pointer et al]: Force evaluation of
283         anonymous VLA size.
284
285 2010-05-27  Kai Tietz  <kai.tietz@onevision.com>
286
287         PR bootstrap/44287
288         * rtti.c (emit_support_tinfos): Check for NULL_TREE.
289         * class.c (layout_class_type): Likewise.
290         * decl.c (finish_enum): Likewise.
291         * mangle.c (write_builitin_type): Likewise.
292
293 2010-05-26  Kai Tietz  <kai.tietz@onevision.com>
294
295         * cp-tree.h (cp_decl_specifier_seq): Add new bifield
296         explicit_int128_p.
297         * decl.c (grokdeclarator): Handle __int128.
298         * parser.c (cp_lexer_next_token_is_decl_specifier_ke): Likewise.
299         (cp_parser_simple_type_specifier): Likewise.
300         * rtti.c (emit_support_tinfos): Add int128 nodes for rtti.
301         * typeck.c (cp_common_type): Handle __int128.
302         * mangle.c (integer_type_codes): Add itk_int128 and
303         itk_unsigned_int128.
304
305 2010-05-26  Jason Merrill  <jason@redhat.com>
306
307         PR c++/43382
308         * pt.c (tsubst_pack_expansion): Don't get confused by recursive
309         unification.
310
311 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
312
313         * cp-lang.c: Do not include expr.h.
314
315 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
316
317         * decl.c: Do not include rtl.h
318         * semantics.c: Likewise.
319
320 2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>
321
322         * cp-tree.h: Do not include splay-tree.h.
323         (struct prtmem_cst): Remove unused field and false comment.
324         * typeck.c: Do not include rtl.h, expr.h, and tm_p.h.
325         * optimize.c: Do not inclde rtl.h, insn-config.h, and integrate.h.
326         * init.c: Do not include rtl.h and expr.h.
327         * class.c: Do not include rtl.h.  Include splay-tree.h.
328         (build_clone): Use plain NULL instead of NULL_RTX.
329         * decl.c: Do not include expr.h.  Explain why rtl.h has to be
330         included.  Include splay-tree.h.
331         * method.c: Do not include rtl.h and expr.h.
332         (use_thunk): Use plain NULL instead of NULL_RTX.
333         * except.c: Do not include rtl.h, expr.h, and libfuncs.h.
334         * tree.c: Do not include rtl.h, insn-config.h, integrate.h,
335         and target.h.  Include splay-tree.h.
336         * expr.c: Do not include rtl.h and expr.h.
337         * pt.c: Do not include obstack.h and rtl.h.
338         (tsubst_friend_function): Use plain NULL instead of NULL_RTX.
339         (tsubst_decl): Likewise.
340         (instantiate_decl): Likewise.
341         * semantics.c: Do not include exprt.h and debug.h.  Explain why
342         rtl.h has to be included.
343         * decl2.c: Do not include rtl.h and expr.h.  Include splay-tree.h.
344         * call.c: Do not include rtl.h and expr.h.
345         * search.c: Do not include obstack.h and rtl.h.
346         * friend.c: Do not include rtl.h and expr.h.
347         * Make-lang.in: Update dependencies.
348
349 2010-05-25  Jakub Jelinek  <jakub@redhat.com>
350
351         PR c++/18249
352         * parser.c (non_integral_constant): Add NIC_NONE.
353         (required_token): Add RT_NONE.
354         (cp_parser_unary_expression): Initialize non_constant_p
355         to NIC_NONE.
356         (cp_parser_asm_definition): Initialize missing to RT_NONE.
357         (cp_parser_primary_expression, cp_parser_postfix_expression,
358         cp_parser_cast_expression, cp_parser_binary_expression,
359         cp_parser_functional_cast): Fix formatting.
360
361 2010-05-25  Shujing Zhao  <pearly.zhao@oracle.com>
362         
363         PR c++/18249
364         * parser.c: Remove inclusion of dyn-string.h.
365         (non_integral_constant): New enum.
366         (name_lookup_error): New enum.
367         (required_token): New enum.
368         (cp_parser_required_error): New function.
369         (cp_parser_require): Change the type of variable token_desc to
370         required_token and use cp_parser_required_error.
371         (cp_parser_require_keyword): Likewise.
372         (cp_parser_error): Use gmsgid as parameter.
373         (cp_parser_name_lookup_error): Change the type of variable desired to
374         name_lookup_error and put the diagnostic in the full sentences. Change
375         caller.
376         (cp_parser_non_integral_constant_expression): Change the type of the
377         variable thing to non_integral_constant and put the diagnostics in
378         full sentences. Change caller.
379
380 2010-05-24  Eric Botcazou  <ebotcazou@adacore.com>
381
382         PR middle-end/44100
383         * typeck.c (cp_build_unary_op): Fold offsetof-like computations.
384
385 2010-05-24  Joseph Myers  <joseph@codesourcery.com>
386
387         * error.c (cp_diagnostic_starter): Update call to
388         diagnostic_build_prefix.
389         (cp_print_error_function,
390         print_instantiation_partial_context_line): Check show_column flag
391         in context.
392
393 2010-05-24  Jason Merrill  <jason@redhat.com>
394
395         PR c++/41510
396         * decl.c (check_initializer): Don't wrap an init-list in a
397         TREE_LIST.
398         * init.c (build_aggr_init): Don't assume copy-initialization if
399         init has CONSTRUCTOR_IS_DIRECT_INIT.
400         * call.c (build_new_method_call): Sanity check.
401
402 2010-05-24  Nathan Froyd  <froydnj@codesourcery.com>
403
404         * rtti.c (tinfo_base_init): Use build_constructor instead of
405         build_constructor_from_list.  Don't cons a tree node for
406         returning.
407         (generic_initializer): Use build_constructor_single instead of
408         build_constructor_from_list.
409         (ptr_initializer): Use build_constructor instead of
410         build_constructor_from_list
411         (ptm_initializer): Likewise.
412         (class_initializer): Likewise.  Take varargs instead of TRAIL.
413         (get_pseudo_ti_init): Adjust calls to class_initializer.  Use
414         build_constructor instead of build_constructor_from_list.
415
416 2010-05-22  Steven Bosscher  <steven@gcc.gnu.org>
417
418         * semantics.c: Include bitmap.h.
419         * Make-lang.in: Update dependencies.
420
421 2010-05-22  Jan Hubicka  <jh@suse.cz>
422
423         * decl2.c (maybe_emit_vtables): Produce same comdat group when outputting
424         comdat vtables.
425         (cxx_callgraph_analyze_expr): Remove code marking vtables needed.
426
427 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
428
429         * cxx-pretty-print.c: Correct merge error.
430
431 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
432
433         * error.c: Include tree-diagnostic.h and tree-pretty-print.h.
434         (cp_print_error_function): Use diagnostic_abstract_origin macro.
435         (cp_printer): Handle %K here using percent_K_format.
436         * cxx-pretty-print.c: Include tree-pretty-print.h.
437         * Make-lang.in (cp/error.o, cp/cxx-pretty-print.o): Update
438         dependencies.
439
440 2010-05-21  Steven Bosscher  <steven@gcc.gnu.org>
441
442         * error.c, tree.c, typeck2.c, cxx-pretty-print.c, mangle.c:
443         Clean up redundant includes.
444
445 2010-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
446
447         PR c++/30298
448         * decl.c (xref_basetypes): Return false in case of ill-formed
449         redefinition.
450
451 2010-05-19  Jason Merrill  <jason@redhat.com>
452
453         * call.c (reference_binding): Use cp_build_qualified_type_real
454         and cp_type_quals consistently.
455         (add_function_candidate): Likewise.
456         (build_conditional_expr): Likewise.
457         (convert_like_real): Likewise.
458         (type_passed_as): Likewise.
459         * class.c (add_method): Likewise.
460         (same_signature_p): Likewise.
461         (layout_class_type): Likewise.
462         * decl.c (cxx_init_decl_processing): Likewise.
463         (cp_fname_init): Likewise.
464         (grokdeclarator): Likewise.
465         * decl2.c (cp_reconstruct_complex_type): Likewise.
466         * init.c (build_new_1): Likewise.
467         * method.c (do_build_copy_constructor): Likewise.
468         (implicitly_declare_fn): Likewise.
469         * pt.c (tsubst_aggr_type): Likewise.
470         (tsubst): Likewise.
471         * rtti.c (init_rtti_processing): Likewise.
472         (build_headof): Likewise.
473         (build_dynamic_cast_1): Likewise.
474         (tinfo_base_init): Likewise.
475         (emit_support_tinfos): Likewise.
476         * semantics.c (capture_decltype): Likewise.
477         * tree.c (cv_unqualified): Likewise.
478         * typeck.c (composite_pointer_type): Likewise.
479         (string_conv_p): Likewise.
480
481         * mangle.c (write_CV_qualifiers_for_type): Tweak.
482
483         * call.c (initialize_reference): Use CP_TYPE_CONST_P.
484         * decl.c (start_decl): Likewise.
485         * semantics.c (finish_compound_literal): Likewise.
486         * typeck.c (check_return_expr): Use CP_TYPE_VOLATILE_P.
487         (cp_type_readonly): Remove.
488         * cp-tree.h: Remove declaration.
489
490         * typeck.c (merge_types): Preserve memfn quals.
491
492         * decl.c (grokdeclarator): Don't check quals on fn type.
493         * typeck.c (cp_apply_type_quals_to_decl): Likewise.
494         * tree.c (cp_build_qualified_type_real): Simplify qualifier checking.
495
496         PR c++/44193
497         * typeck.c (type_memfn_quals): New fn.
498         (apply_memfn_quals): New fn.
499         (cp_type_quals): Return TYPE_UNQUALIFIED for FUNCTION_TYPE.
500         (cp_type_readonly): Use cp_type_quals.
501         * cp-tree.h: Add declarations.
502         * tree.c (cp_build_qualified_type_real): Don't set, but do
503         preserve, quals on FUNCTION_TYPE.
504         (strip_typedefs): Use apply_memfn_quals and type_memfn_quals.
505         * decl.c (build_ptrmem_type): Likewise.
506         (grokdeclarator): Likewise.
507         (static_fn_type): Likewise.
508         * decl2.c (change_return_type): Likewise.
509         (cp_reconstruct_complex_type): Likewise.
510         * pt.c (tsubst_function_type): Likewise.
511         (unify): Likewise.
512         (tsubst): Likewise.  Drop special FUNCTION_TYPE substitution code.
513
514 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
515
516         * tree.c (build_min_non_dep_call_vec): Update comment.
517
518 2010-05-17  Jason Merrill  <jason@redhat.com>
519
520         * call.c (struct z_candidate): Add explicit_targs field.
521         (add_template_candidate_real): Set it.
522         (build_over_call): Use it to control init-list warning.
523
524         PR c++/44157
525         * call.c (build_over_call): Limit init-list deduction warning to
526         cases where the argument is actually an init-list.
527
528         PR c++/44158
529         * call.c (build_over_call): Don't do bitwise copy for move ctor.
530
531 2010-05-17  Dodji Seketeli  <dodji@redhat.com>
532             Jason Merrill  <jason@redhat.com>
533
534         PR c++/44108
535         * decl.c (compute_array_index_type): Call mark_rvalue_use.
536
537 2010-05-15  Jason Merrill  <jason@redhat.com>
538
539         * cp-tree.h (TYPE_NOEXCEPT_P): New macro.
540         * except.c (begin_eh_spec_block): Use MUST_NOT_THROW_EXPR if
541         TYPE_NOEXCEPT_P.
542         (finish_eh_spec_block): Adjust.
543
544 2010-05-15  Jakub Jelinek  <jakub@redhat.com>
545
546         PR c++/44148
547         * pt.c (tsubst): Unshare template argument.
548
549 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
550
551         * decl.c: Include tree-iterator.h, as fixup for tree-inline.h changes.
552         * Make-lang.in: Fix dependencies accordingly.
553
554 2010-05-14  Jason Merrill  <jason@redhat.com>
555
556         C++ DR 475
557         * except.c (build_throw): Simplify, adjust for DR 475.
558
559         PR c++/44127
560         * except.c (dtor_nothrow): Return nonzero for type with
561         trivial destructor.
562
563         PR c++/44127
564         * cp-gimplify.c (gimplify_must_not_throw_expr): Use
565         gimple_build_eh_must_not_throw.
566
567 2010-05-14  Martin Jambor  <mjambor@suse.cz>
568
569         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef
570         and define.
571
572 2010-05-14  Jonathan Wakely  <jwakely.gcc@gmail.com>
573
574         * call.c (build_new_method_call): Change warning text.
575         * typeck2.c (build_functional_cast): Change error text.
576
577 2010-05-14  Shujing Zhao  <pearly.zhao@oracle.com>
578
579         PR c++/30566
580         * name-lookup.c (pushdecl_maybe_friend): Avoid the warnings about
581         shadowing the outer parameter or variables by the declaration of
582         nested function in nested structure or class. Warn the shadowing by
583         the declaration of nested lambda expression.
584
585 2010-05-13  Jason Merrill  <jason@redhat.com>
586
587         * typeck.c (cp_build_array_ref): Factor out from...
588         (build_array_ref): ...here.  Drop complain parm.
589         (build_new_op): Adjust.
590         * class.c (build_vtbl_ref_1): Adjust.
591         * decl2.c (grok_array_decl): Adjust.
592         * cp-tree.h: Adjust prototypes.
593
594 2010-05-13  Jan Hubicka  <jh@suse.cz>
595
596         * decl.c (cp_finish_decl): Do not worry about used attribute.
597
598 2010-05-12  Jason Merrill  <jason@redhat.com>
599
600         * typeck.c (build_array_ref): Take complain parm.
601         * cp-tree.h: Add it to prototype.
602         * call.c (build_new_op): Pass it.
603         * class.c (build_vtbl_ref): Pass it.
604         * decl2.c (grok_array_decl): Pass it.
605
606         PR bootstrap/44048
607         PR target/44099
608         * cp-tree.def (NULLPTR_TYPE): Remove.
609         * cp-tree.h (NULLPTR_TYPE_P): New.
610         (SCALAR_TYPE_P): Use it.
611         (nullptr_type_node): New.
612         (cp_tree_index): Add CPTI_NULLPTR_TYPE.
613         * decl.c (cxx_init_decl_processing): Call record_builtin_type on
614         nullptr_type_node.
615         * cvt.c (ocp_convert): Use NULLPTR_TYPE_P instead of NULLPTR_TYPE.
616         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
617         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
618         * mangle.c (write_type): Likewise.
619         * name-lookup.c (arg_assoc_type): Likewise.
620         * typeck.c (build_reinterpret_cast_1): Likewise.
621         * rtti.c (typeinfo_in_lib_p): Likewise.
622         (emit_support_tinfos): Remove local nullptr_type_node.
623
624         * cp-tree.h (UNKNOWN_TYPE): Remove.
625         * decl.c (cxx_init_decl_processing): Use LANG_TYPE instead.
626         * error.c (dumy_type, dump_type_prefix, dump_type_suffix): Likewise.
627         * typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
628         * class.c (instantiate_type): Check unknown_type_node rather than
629         UNKNOWN_TYPE.
630         * name-lookup.c (maybe_push_decl): Likewise.
631         * rtti.c (get_tinfo_decl_dynamic): Likewise.
632         (get_typeid): Likewise.
633         * semantics.c (finish_offsetof): Likewise.
634
635         PR c++/20669
636         * call.c (add_template_candidate_real): If deduction fails, still
637         add the template as a non-viable candidate.
638         (equal_functions): Handle template candidates.
639         (print_z_candidate): Likewise.
640         (print_z_candidates): Likewise.
641         (build_new_function_call): Likewise.
642
643         * cp-tree.h (LOOKUP_LIST_ONLY): New.
644         * call.c (add_candidates): Enforce it.
645         (build_new_method_call): Try non-list ctor if no viable list ctor.
646         (build_user_type_conversion_1): Likewise.
647
648         * call.c (add_candidates): Distinguish between type(x) and
649         x.operator type().
650         (convert_class_to_reference): Set LOOKUP_NO_CONVERSION.
651         (build_new_method_call): Give better error for conversion op.
652
653         * call.c (add_candidates): Add first_arg and return_type parms.
654         Add special constructor/conversion op handling.
655         (convert_class_to_reference): Use it.
656         (build_user_type_conversion_1): Likewise.
657         (build_op_call): Likewise.
658         (build_new_method_call): Likewise.
659         (build_new_op): Adjust.
660         (perform_overload_resolution): Adjust.
661
662 2010-05-11  Paolo Carlini  <paolo.carlini@oracle.com>
663
664         PR c++/34272
665         PR c++/43630
666         PR c++/34491
667         * pt.c (process_partial_specialization): Return error_mark_node
668         in case of unused template parameters in partial specialization.
669
670 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
671
672         PR c++/44062
673         * semantics.c (finish_expr_stmt): Don't call mark_exp_read here...
674         * cvt.c (convert_to_void): ... but here.  If expr is a COMPOUND_EXPR,
675         look at its second operand.
676
677 2010-05-10  Jason Merrill  <jason@redhat.com>
678
679         PR c++/44017
680         * semantics.c (baselink_for_fns): Revert earlier change.
681
682         PR c++/44045
683         * typeck.c (cp_build_modify_expr): Complain about assignment to
684         array from init list.
685
686 2010-05-10  Fabien Chêne  <fabien.chene@gmail.com>
687
688         PR c++/43719
689         * decl.c (check_initializer): strip array type before checking for
690         uninitialized const or ref members.
691
692 2010-05-07  Fabien Chêne  <fabien.chene@gmail.com>
693
694         PR c++/43951
695         * init.c (diagnose_uninitialized_cst_or_ref_member_1): Returns the
696         error count. Emit errors only if compain is true.
697         (build_new_1): Do not return error_mark_node if
698         diagnose_uninitialized_cst_or_ref_member_1 does not diagnose any
699         errors. Delay the check for user-provided constructor.
700         (perform_member_init): Adjust.
701         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Change the
702         prototype.
703
704 2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
705             Jason Merrill  <jason@redhat.com>
706
707         Add support for C++0x nullptr.
708         * cp-tree.def: Add NULLPTR_TYPE.
709         * cp-tree.h: Add nullptr_node.
710         (cp_tree_index): Add CPTI_NULLPTR.
711         (SCALAR_TYPE_P): Add NULLPTR_TYPE.
712         * call.c (null_ptr_cst_p): Handle nullptr.
713         (standard_conversion): Likewise.
714         (convert_arg_to_ellipsis): Likewise.
715         * mangle.c (write_type): Likewise.
716         * name-lookup.c (arg_assoc_type): Likewise.
717         * parser.c (cp_parser_primary_expression): Likewise.
718         * typeck.c (cp_build_binary_op): Likewise.
719         (build_reinterpret_cast_1): Likewise.
720         * error.c (dump_type): Likewise.
721         (dump_type_prefix, dump_type_suffix): Likewise.
722         * decl.c (cxx_init_decl_processing): Likewise.
723         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
724         * cvt.c (ocp_convert): Likewise.
725         * rtti.c (typeinfo_in_lib_p, emit_support_tinfos): Put
726         nullptr_t tinfo in libsupc++.
727
728 2010-05-06  Jason Merrill  <jason@redhat.com>
729
730         * semantics.c (simplify_aggr_init_expr): Use INIT_EXPR.
731
732 2010-04-22  Jakub Jelinek <jakub@redhat.com>
733             Dodji Seketeli <dodji@redhat.com>
734
735         PR c/18624
736         * cp-tree.h (mark_exp_read, rvalue_use, lvalue_use, type_use):
737         Declare ...
738         * expr.c (mark_exp_read, rvalue_use, lvalue_use, type_use): ... new fns.
739         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call type_use.
740         (decay_conversion, perform_integral_promotions): Call rvalue_use.
741         (cp_build_unary_op): Call lvalue_use.
742         * decl.c (unused_but_set_errorcount): New variable.
743         (poplevel): Issue -Wunused-but-set-variable diagnostics.
744         (duplicate_decls): Merge DECL_READ_P flags.
745         (start_cleanup_fn): Set DECL_READ_P flag.
746         (finish_function): Issue -Wunused-but-set-parameter diagnostics.
747         * tree.c (rvalue): Call rvalue_use.
748         * pt.c (convert_nontype_argument): Likewise.
749         * semantics.c (finish_expr_stmt, finish_asm_stmt, finish_typeof,
750         finish_decltype_type): Likewise.
751         * call.c (convert_like_real) <ck_identity, ck_user>: Call rvalue use.
752         (build_x_va_arg, build_new_method_call, build_over_call): Call lvalue_use
753         or rvalue_use depending on the expr.
754         * init.c (build_new, build_delete): Likewise.
755         * rtti.c (build_typeid, build_dynamic_cast_1): Likewise.
756
757 2010-05-05  Jason Merrill  <jason@redhat.com>
758
759         PR c++/43787
760         * cp-gimplify.c (cp_gimplify_expr): Remove copies of empty classes.
761         * call.c (build_over_call): Don't try to avoid INIT_EXPR copies here.
762
763 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
764
765         PR c++/43028
766         * pt.c (unify): Check each elt for error_mark_node.
767
768 2010-05-04  Jason Merrill  <jason@redhat.com>
769
770         PR c++/38064
771         * typeck.c (cp_build_binary_op): Allow enums for <> as well.
772
773 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
774
775         PR c++/43705
776         * call.c (build_new_method_call): Return error_mark_node if fns is
777         NULL_TREE.
778
779 2010-05-03  Dodji Seketeli  <dodji@redhat.com>
780
781         PR c++/43953
782         * pt.c (most_specialized_class): Pretend we are processing
783         a template decl during the call to coerce_template_parms.
784
785 2010-05-03  Jason Merrill  <jason@redhat.com>
786
787         PR c++/42810
788         PR c++/43680
789         * decl.c (finish_enum): Use the TYPE_MIN_VALUE and TYPE_MAX_VALUE
790         from the selected underlying type unless -fstrict-enums.  Set
791         ENUM_UNDERLYING_TYPE to have the restricted range.
792         * cvt.c (type_promotes_to): Use ENUM_UNDERLYING_TYPE.
793         * class.c (check_bitfield_decl): Likewise.
794
795 2010-05-01  H.J. Lu  <hongjiu.lu@intel.com>
796
797         PR c++/43951
798         * init.c (build_new_1): Revert the accidental checkin in
799         revision 158918.
800
801 2010-04-30  Jason Merrill  <jason@redhat.com>
802
803         PR c++/43868
804         * cxx-pretty-print.c (pp_cxx_decl_specifier_seq): Move pmf handling...
805         (pp_cxx_type_specifier_seq): ...here.
806
807 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
808
809         * optimize.c, parser.c, mangle.c, cp-tree.h: Do not include varray.h.
810         * Make-lang.in: Don't include varray.h dependency in CXX_TREE_H.
811
812 2010-04-30  Shujing Zhao  <pearly.zhao@oracle.com>
813
814         PR c++/43779
815         * typeck.c (warn_args_num): New function.
816         (convert_arguments): Use warn_args_num to print the diagnostic
817         messages. 
818
819 2010-04-29  Fabien Chêne  <fabien.chene@gmail.com>
820
821         PR c++/43890
822         * init.c (diagnose_uninitialized_cst_or_ref_member): check for
823         user-provided constructor while recursing.
824
825 2010-04-28  Manuel López-Ibáñez  <manu@gcc.gnu.org>
826
827         PR c++/9335
828         * error.c (print_instantiation_partial_context_line): Handle
829         recursive instantiation.
830         (print_instantiation_partial_context): Likewise.
831
832 2010-04-27  Jason Merrill  <jason@redhat.com>
833
834         * init.c (perform_member_init): Check CLASS_TYPE_P.
835
836 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
837
838         PR c++/29043
839         * init.c (perform_member_init): check for uninitialized const or
840         reference members, including array types.
841
842 2010-04-24  Jason Merrill  <jason@redhat.com>
843
844         * tree.c (get_fns): Split out from get_first_fn.
845         * cp-tree.h: Declare it.
846         * search.c (shared_member_p): Use it.
847         * semantics.c (finish_qualified_id_expr): Simplify.
848         (finish_id_expression): Simplify.
849
850         * semantics.c (finish_non_static_data_member): Call maybe_dummy_object
851         whenever object is NULL_TREE.  Don't do 'this' capture here.
852         (finish_qualified_id_expr): Pass NULL_TREE.
853         (finish_id_expression): Likewise.
854         (lambda_expr_this_capture): Likewise.
855
856         * semantics.c (finish_qualified_id_expr): Use maybe_dummy_object
857         rather than checking current_class_ref directly.
858         (finish_call_expr): Likewise.
859
860         PR c++/43856
861         * name-lookup.c (qualify_lookup): Disqualify lambda op().
862         * class.c (current_nonlambda_class_type): New fn.
863         * semantics.c (nonlambda_method_basetype): New.
864         * cp-tree.h: Declare them.
865         * tree.c (maybe_dummy_object): Handle implicit 'this' capture.
866
867         * semantics.c (baselink_for_fns): Correct BASELINK_BINFO.
868
869         PR c++/43875
870         * semantics.c (lambda_return_type): Complain about
871         braced-init-list.
872
873         PR c++/43790
874         * tree.c (cv_unqualified): Handle error_mark_node.
875
876         PR c++/41468
877         * call.c (convert_like_real) [ck_ambig]: Just return error_mark_node
878         if we don't want errors.
879
880         PR c++/41468
881         * class.c (convert_to_base): Add complain parameter.  Pass
882         ba_quiet to lookup_base if we don't want errors.
883         (build_vfield_ref): Pass complain to convert_to_base.
884         * call.c (convert_like_real): Likewise.
885         (initialize_reference): Likewise.
886         (perform_direct_initialization_if_possible): Pass complain to
887         convert_like_real.
888         * cp-tree.h: Adjust.
889
890 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
891             Jason Merrill  <jason@redhat.com>
892
893         PR c++/42844
894         * decl.c (check_for_uninitialized_const_var): Handle classes that need
895         constructing, too.
896         (check_initializer): Call it for classes that need constructing, too.
897         * class.c (in_class_defaulted_default_constructor): New.
898         * cp-tree.h: Declare it.
899
900 2010-04-20  Jason Merrill  <jason@redhat.com>
901
902         PR c++/9335
903         * init.c (constant_value_1): Treat error_mark_node as a constant
904         if DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P is set.
905         * cvt.c (ocp_convert): Handle getting error_mark_node from
906         integral_constant_value.
907         * decl.c (compute_array_index_type): Likewise.
908
909 2010-04-20  Dodji Seketeli  <dodji@redhat.com>
910
911         PR c++/43800
912         PR c++/43704
913         * typeck.c (incompatible_dependent_types_p): If one of the
914         compared types if not a typedef then honour their main variant
915         equivalence.
916
917 2010-04-20  Jakub Jelinek  <jakub@redhat.com>
918
919         * cp-tree.h (TYPE_REF_IS_RVALUE): Remove.
920
921 2010-04-19  Dodji Seketeli  <dodji@redhat.com>
922
923         PR c++/43704
924         * typeck.c (structural_comptypes): Test dependent typedefs
925         incompatibility before testing for their main variant based
926         equivalence.
927
928 2010-04-19  Jakub Jelinek  <jakub@redhat.com>
929
930         * cp-tree.h (SCOPED_ENUM_P, UNSCOPED_ENUM_P, SET_SCOPED_ENUM_P): Use
931         ENUM_IS_SCOPED bit instead of TYPE_LANG_FLAG_5.
932
933 2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>
934
935         * decl.c (cxx_init_decl_processing): Remove second argument in call to
936         build_common_tree_nodes.
937
938 2010-04-14  Jason Merrill  <jason@redhat.com>
939
940         PR c++/36625
941         * parser.c (cp_parser_parenthesized_expression_list): Change
942         is_attribute_list parm to int to indicate whether or not to
943         handle initial identifier specially.
944         (cp_parser_attribute_list): Use attribute_takes_identifier_p.
945
946 2010-04-13  Jason Merrill  <jason@redhat.com>
947
948         * call.c (type_decays_to): Check MAYBE_CLASS_TYPE_P instead of
949         CLASS_TYPE_P.
950         * parser.c (cp_parser_lambda_expression): Complain about lambda in
951         unevaluated context.
952         * pt.c (iterative_hash_template_arg): Don't crash on lambda.
953
954 2010-04-12  Jason Merrill  <jason@redhat.com>
955
956         PR c++/43641
957         * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak
958         return value directly.
959
960         * call.c (type_decays_to): Call cv_unqualified for non-class type.
961
962 2010-04-12  Fabien Chene  <fabien.chene@gmail.com>
963
964         PR c++/25811
965         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Declare.
966         * init.c (build_new_1): Check for uninitialized const members and
967         uninitialized reference members, when using new without
968         new-initializer. Call diagnose_uninitialized_cst_or_ref_member.
969         (diagnose_uninitialized_cst_or_ref_member): Define, call
970         diagnose_uninitialized_cst_or_ref_member_1.
971         (diagnose_uninitialized_cst_or_ref_member_1): New function.
972
973 2010-04-12  Richard Guenther  <rguenther@suse.de>
974
975         PR c++/43611
976         * semantics.c (expand_or_defer_fn_1): Do not keep extern
977         template inline functions.
978
979 2010-04-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>
980
981         PR c++/28584
982         * typeck.c (cp_build_c_cast): Warn for casting integer to larger
983         pointer type.
984
985 2010-04-07  Jason Merrill  <jason@redhat.com>
986
987         PR c++/43016
988         * decl.c (start_preparsed_function): Do defer nested functions.
989
990         PR c++/11094, DR 408
991         * cp-tree.h (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): New.
992         * decl2.c (finish_static_data_member_decl): Set it.
993         * decl.c (duplicate_decls): Propagate it.
994         * pt.c (tsubst_decl): Don't substitute the domain of an array
995         VAR_DECL if it's set.
996         (regenerate_decl_from_template): Substitute it here.
997         (type_dependent_expression_p): Return true if it's set.
998         * semantics.c (finish_decltype_type): Instantiate such a variable.
999         * typeck.c (cxx_sizeof_expr): Likewise.
1000         (strip_array_domain): New.
1001
1002         PR c++/43145
1003         * name-lookup.c (current_decl_namespace): Non-static.
1004         (pop_nested_namespace): Sanity check.
1005         * cp-tree.h: Declare current_decl_namespace.
1006         * decl.c (grokvardecl): Use it instead of current_namespace.
1007         (grokfndecl): Likewise.
1008
1009         PR c++/38392
1010         * pt.c (tsubst_friend_function): Instatiate a friend that has already
1011         been used.
1012
1013         * pt.c (print_template_statistics): New.
1014         * cp-tree.h: Declare it.
1015         * tree.c (cxx_print_statistics): Call it.
1016
1017         PR c++/41970
1018         * decl.c (grokvardecl): Tweak warning message.
1019         (grokfndecl): Likewise.
1020
1021 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
1022
1023         PR c++/42697
1024         *pt.c (tsubst_decl): Get the arguments of a specialization from
1025         the specialization template, not from the most general template.
1026
1027 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
1028
1029         PR c++/40239
1030         * typeck2.c (process_init_constructor_record):
1031         value-initialize members that are are not explicitely
1032         initialized.
1033
1034 2010-04-07  Jie Zhang  <jie@codesourcery.com>
1035
1036         PR c++/42556
1037         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
1038         when all of its elements are non-constant and have been split out.
1039
1040 2010-04-06  Taras Glek  <taras@mozilla.com>
1041             Jason Merrill  <jason@redhat.com>
1042
1043         * parser.c (cp_parser_class_specifier): Set class location to that
1044         of IDENTIFIER_NODE instead of '{' when possible.
1045         * semantics.c (begin_class_definition): Do not overide locations
1046         with less precise ones.
1047
1048 2010-04-06  Jason Merrill  <jason@redhat.com>
1049
1050         PR c++/43648
1051         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
1052
1053         PR c++/43621
1054         * pt.c (maybe_update_decl_type): Check the return value from
1055         push_scope.
1056
1057 2010-04-01  Jason Merrill  <jason@redhat.com>
1058
1059         * decl.c (next_initializable_field): No longer static.
1060         * cp-tree.h: Declare it.
1061         * call.c (build_aggr_conv): Fail if there are more initializers
1062         than initializable fields.
1063
1064         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
1065         instead of void_zero_node.
1066
1067 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
1068
1069         PR c++/43558
1070         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
1071         * pt.c (end_template_parm_list): Store sibling template parms of
1072         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
1073         (push_template_decl_real): Don't store the containing template decl
1074         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
1075         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
1076         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
1077         Simplify the logic.
1078
1079 2010-03-30  Jason Merrill  <jason@redhat.com>
1080
1081         PR c++/43076
1082         * pt.c (push_template_decl_real): Deal better with running out of
1083         scopes before running out of template parms.
1084
1085         PR c++/41185
1086         PR c++/41786
1087         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
1088         function parameter context.  Don't print an error if parsing
1089         tentatively.
1090
1091         PR c++/43559
1092         * pt.c (more_specialized_fn): Don't control cv-qualifier check
1093         with same_type_p.
1094
1095 2010-03-26  Jason Merrill  <jason@redhat.com>
1096
1097         PR c++/43509
1098         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
1099         c++0x mode, but not other type-names.
1100
1101 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
1102
1103         PR c++/43327
1104         * pt.c (add_to_template_args): Support NULL ARGS;
1105         (most_specialized_class): call coerce_template_parms on
1106         template arguments passed to get_class_bindings. Use
1107         add_to_template_args.
1108         (unify): Handle VAR_DECLs.
1109
1110 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
1111
1112         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
1113         into int.
1114         * pt.c (get_template_parms_at_level): Adjust.
1115
1116 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
1117
1118         PR c++/43206
1119         * cp-tree.h (get_template_parms_at_level): Declare ...
1120         * pt.c (get_template_parms_at_level): ... new function.
1121         * typeck.c (get_template_parms_of_dependent_type): If a template
1122         type parm's DECL_CONTEXT isn't yet set, get its siblings from
1123         current_template_parms. Use get_template_parms_at_level. Remove
1124         useless test.
1125         (incompatible_dependent_types_p): If we get empty parms from just one
1126         of the template type parms we are comparing then the template parms are
1127         incompatible.
1128
1129 2010-03-24  Jason Merrill  <jason@redhat.com>
1130
1131         PR c++/43502
1132         * parser.c (make_declarator): Initialize id_loc.
1133         (cp_parser_lambda_declarator_opt): And set it.
1134
1135 2010-03-23  Jason Merrill  <jason@redhat.com>
1136
1137         Make lambda conversion op and op() non-static.
1138         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
1139         Also add the thunk function returned by the conversion op.
1140         Mark the conversion deleted if the op() is variadic.
1141         * decl2.c (mark_used): Give helpful message about deleted conversion.
1142         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
1143         * semantics.c (finish_this_expr): Adjust.
1144         * mangle.c (write_closure_type_name): Adjust.
1145         * decl.c (grok_op_properties): Don't allow it.
1146         * call.c (build_user_type_conversion_1): No static conversion ops.
1147         (build_op_call): Or op().
1148
1149         * decl2.c (change_return_type): Fix 'this' quals.
1150
1151 2010-03-22  Jason Merrill  <jason@redhat.com>
1152
1153         PR c++/43333
1154         * tree.c (pod_type_p): Use old meaning in C++98 mode.
1155
1156         PR c++/43281
1157         * pt.c (contains_auto_r): New fn.
1158         (do_auto_deduction): Use it.
1159         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
1160
1161 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
1162
1163         PR c++/43081:
1164         * decl2.c (grokfield): Handle invalid initializers for member
1165         functions.
1166
1167 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
1168
1169         PR c++/43375
1170         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
1171         is NULL.
1172         * decl2.c (vague_linkage_p): Likewise.
1173
1174 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
1175
1176         PR c++/43418
1177         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
1178         false, in the cp_parser_expression_statement call.
1179
1180 2010-03-05  Jason Merrill  <jason@redhat.com>
1181
1182         * mangle.c (mangle_decl): Give name collision error even without
1183         ASM_OUTPUT_DEF.
1184
1185 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
1186
1187         * pt.c (process_partial_specialization): Use error_n instead of
1188         error.
1189
1190 2010-03-03  Jason Merrill  <jason@redhat.com>
1191
1192         PR c++/12909
1193         * mangle.c (mangle_decl): Handle VAR_DECL, too.
1194
1195 2010-03-03  Jason Merrill  <jason@redhat.com>
1196
1197         PR c++/12909
1198         * mangle.c: Include cgraph.h.
1199         (mangle_decl): If the mangled name will change in a later
1200         ABI version, make the later mangled name an alias.
1201         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
1202         * Make-lang.in (mangle.o): Depend on cgraph.h.
1203         * method.c (make_alias_for): Handle VAR_DECL, too.
1204         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
1205         * tree.c (no_linkage_check): Adjust.
1206         * decl.c (maybe_commonize_var): Adjust.
1207         * cp-tree.h: Adjust.
1208
1209 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
1210
1211         * pt.c (redeclare_class_template): Use error_n and inform_n.
1212
1213 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
1214
1215         PR c++/42748
1216         * cp-tree.h (push_tinst_level): Declare.
1217         (pop_tinst_level): Likewise.
1218         * pt.c (push_tinst_level): Give it external linkage.
1219         (pop_tinst_level): Likewise.
1220         * mangle.c (mangle_decl_string): Set the source location to that
1221         of the decl while mangling.
1222
1223 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
1224
1225         PR c++/42054
1226         * pt.c (redeclare_class_template): Return false if there are erroneous
1227         template parameters.
1228
1229 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1230
1231         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
1232         -ftemplate-depth=.
1233
1234 2010-02-24  Jason Merrill  <jason@redhat.com>
1235
1236         PR c++/12909
1237         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
1238
1239         * class.c (layout_class_type): Don't give -Wabi warning for a bug
1240         in a previous ABI version.
1241
1242 2010-02-23  Jason Merrill  <jason@redhat.com>
1243
1244         PR c++/43143
1245         * typeck2.c (digest_init_r): Accept value init of array.
1246
1247 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1248
1249         PR c++/43126
1250         * typeck.c (convert_arguments): Update error message.
1251
1252 2010-02-22  Mike Stump  <mikestump@comcast.net>
1253
1254         PR c++/43125
1255         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
1256
1257 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1258
1259         PR c++/23510
1260         * error.c (print_instantiation_partial_context_line): New.
1261         (print_instantiation_partial_context): Print at most 12 contexts,
1262         skip the rest with a message.
1263
1264 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
1265
1266         PR c++/42824
1267         * pt.c (lookup_template_class): Better support of specialization
1268         of member of class template implicit instantiation.
1269
1270 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1271
1272         PR c++/35669
1273         * call.c (conversion_null_warnings): Replace -Wconversion with
1274         -Wconversion-null.
1275         * cvt.c (build_expr_type_conversion): Likewise.
1276
1277 2010-02-18  Jason Merrill  <jason@redhat.com>
1278
1279         PR c++/42837
1280         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
1281
1282         PR c++/43108
1283         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
1284         C build_binary_op.
1285         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
1286         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
1287
1288         PR c++/43070
1289         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
1290
1291         PR c++/26261
1292         PR c++/43101
1293         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
1294         (maybe_update_decl_type): New fn.
1295         * parser.c (cp_parser_init_declarator): Use it.
1296
1297         PR c++/43109
1298         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
1299
1300 2010-02-17  Jason Merrill  <jason@redhat.com>
1301
1302         PR c++/43075
1303         * call.c (build_over_call): Don't create zero-sized assignments.
1304         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
1305         * cp-objcp-common.c (cp_expr_size): Remove.
1306         * cp-tree.h: Remove prototype.
1307
1308         PR c++/43069
1309         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
1310         decl we looked up doesn't match.
1311
1312         PR c++/43093
1313         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
1314         have an INIT_EXPR anymore.
1315
1316         PR c++/43079
1317         * pt.c (convert_nontype_argument): Change assert to test.
1318
1319 2010-02-16  Jason Merrill  <jason@redhat.com>
1320
1321         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
1322
1323         PR c++/43031
1324         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
1325         VIEW_CONVERT_EXPR for conversions between structural equality types
1326         that the back end can't tell are the same.
1327
1328         PR c++/43036
1329         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
1330         cv-quals from element here.
1331         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
1332
1333 2010-02-14  Jason Merrill  <jason@redhat.com>
1334
1335         PR c++/41997
1336         * semantics.c (finish_compound_literal): Use
1337         cp_apply_type_quals_to_decl when creating a static variable.
1338
1339 2010-02-12  Jason Merrill  <jason@redhat.com>
1340
1341         PR c++/43024
1342         * name-lookup.h (current_binding_level): Check for null
1343         cp_function_chain.
1344
1345 2010-02-12  Jason Merrill  <jason@redhat.com>
1346
1347         PR c++/43054
1348         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
1349
1350 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
1351
1352         PR c++/43033
1353         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
1354         instead of x.
1355
1356 2010-02-10  Jason Merrill  <jason@redhat.com>
1357
1358         PR c++/41896
1359         * semantics.c (outer_lambda_capture_p): Revert.
1360         (add_capture): Only finish_member_declaration if
1361         we're in the lambda class.
1362         (register_capture_members): New.
1363         * cp-tree.h: Declare it.
1364         * parser.c (cp_parser_lambda_expression): Call it.
1365
1366 2010-02-10  Jason Merrill  <jason@redhat.com>
1367
1368         PR c++/41896
1369         * semantics.c (outer_lambda_capture_p): Use current_function_decl
1370         instead of current_class_type.
1371
1372 2010-02-10  Jason Merrill  <jason@redhat.com>
1373
1374         PR c++/42983, core issue 906
1375         * method.c (defaultable_fn_check): Check virtualness.
1376
1377 2010-02-10  Jason Merrill  <jason@redhat.com>
1378
1379         PR c++/43016
1380         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
1381
1382 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
1383
1384         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
1385         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
1386         translation.
1387         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
1388         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
1389         (cp_parser_parameter_declaration)
1390         (cp_parser_exception_specification_opt)
1391         (cp_parser_exception_declaration): Likewise.
1392         * pt.c (check_default_tmpl_args): Likewise.
1393         * search.c (lookup_field_r): Likewise.
1394
1395 2010-02-09  Jason Merrill  <jason@redhat.com>
1396
1397         PR c++/42399
1398         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
1399
1400 2010-02-09  Jason Merrill  <jason@redhat.com>
1401
1402         PR c++/42370
1403         * decl2.c (change_return_type): New fn.
1404         * semantics.c (apply_lambda_return_type): Use it.
1405         * cp-tree.h: Declare it.
1406
1407 2010-02-05  Richard Guenther  <rguenther@suse.de>
1408
1409         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
1410         * cp-lang.c: Include gt-cp-cp-lang.h.
1411         * config-lang.in (gtfiles): Add cp/cp-lang.c.
1412
1413 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
1414
1415         PR c++/42915
1416         * typeck.c (get_template_parms_of_dependent_type): Try getting
1417         the template parameters fromt the type itself first.
1418
1419 2010-02-03  Jason Merrill  <jason@redhat.com>
1420
1421         PR c++/4926
1422         PR c++/38600
1423         * mangle.c (write_unqualified_id): Split out from write_expression.
1424         (write_unqualified_name): Call it.
1425         (write_member_name): Likewise.
1426         (write_expression): Support TEMPLATE_ID_EXPR.
1427         Disambiguate operator names.
1428
1429         PR c++/12909
1430         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
1431         -fabi-version=4.
1432
1433 2010-02-02  Jason Merrill  <jason@redhat.com>
1434
1435         PR c++/41090
1436         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
1437         * optimize.c (clone_body): Remap their initializers when making base
1438         variants.
1439         (maybe_clone_body): Complain if multiple clones aren't safe.
1440
1441 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
1442
1443         PR c++/42758
1444         PR c++/42634
1445         PR c++/42336
1446         PR c++/42797
1447         PR c++/42880
1448         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
1449         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
1450         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
1451         * pt.c (coerce_template_parms, type_unification_real,
1452         expand_template_argument_pack, coerce_template_parameter_pack):
1453         Set the non default template args count.
1454         (current_template_args): Always set non defaulted
1455         template args count when compiled with --enable-checking
1456         (tsubst_template_args, type_unification_real): Propagate the non
1457         defaulted template args count.
1458         * error.c (get_non_default_template_args_count): Renamed
1459         count_non_default_template_args into this. Don't calculate the
1460         non default template argument count anymore. Use the new
1461         accessor macros above to get it.
1462         (dump_template_argument_list, dump_type, dump_decl,
1463         dump_template_parms): Adjust.
1464         * parser.c (cp_parser_template_argument_list): Always set defaulted
1465         template args count when compiled with --enable-checking.
1466
1467 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
1468
1469         * decl.c (redeclaration_error_message): Wrap the return messages into
1470         G_() for easy translation.
1471
1472 2010-01-28  Jason Merrill  <jason@redhat.com>
1473
1474         PR c++/42880
1475         * semantics.c (begin_class_definition): Don't use type_as_string.
1476
1477 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
1478
1479         PR c++/42713
1480         PR c++/42820
1481         * typeck.c (get_template_parms_of_dependent_type): Factorized
1482         this out of incompatible_template_type_parms_p
1483         (incompatible_dependent_types_p): Renamed
1484         incompatible_template_type_parms_p into this. Make it detect
1485         two incompatible dependent typedefs too.
1486         (structural_comptypes): Use incompatible_dependent_types_p.
1487         * pt.c (get_template_info):
1488         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
1489
1490 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
1491             Jason Merrill  <jason@redhat.com>
1492
1493         * mangle.c (write_type): Mangle transparent record as member type.
1494         * semantics.c (begin_class_definition): Recognize decimal classes
1495         and set TYPE_TRANSPARENT_AGGR.
1496
1497 2010-01-20  Jason Merrill  <jason@redhat.com>
1498
1499         PR c++/42338
1500         * mangle.c (write_expression): Handle tree codes that have extra
1501         arguments in the middle-end.
1502
1503 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
1504
1505         PR c++/42038
1506         * except.c (expand_start_catch_block): Deal correctly with
1507         do_begin_catch returning error_mark_node.
1508
1509 2010-01-20  Jason Merrill  <jason@redhat.com>
1510
1511         PR c++/41788
1512         * class.c (layout_class_type): Set packed_maybe_necessary for packed
1513         non-PODs.
1514
1515         PR c++/41920
1516         * semantics.c (build_lambda_object): Call mark_used on captured
1517         variables.
1518
1519         PR c++/40750
1520         * decl.c (grokdeclarator): Clear type_quals for a member function
1521         declared using a typedef.  Don't complain about adding cv-quals
1522         to a function typedef in C++0x mode.
1523
1524 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
1525
1526         * decl.c (create_array_type_for_decl): Remove set but not used
1527         variable error_msg.  Remove break stmts after return stmts.
1528
1529 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
1530
1531         * error.c (dump_template_parms, count_non_default_template_args):
1532         Revert fix of PR c++/42634.
1533
1534 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
1535
1536         PR c++/42634
1537         * error.c (dump_template_parms): Use innermost template
1538         arguments before calling count_non_default_template_args.
1539         (count_non_default_template_args): We are being called with
1540         template innermost arguments now. There is no need to ensure
1541         that again.
1542
1543 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
1544
1545         PR c++/42766
1546         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
1547
1548 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
1549
1550         PR c++/42697
1551         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
1552
1553 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
1554
1555         PR c++/42697
1556         *pt.c (tsubst_decl): Get the arguments of a specialization from
1557         the specialization template, not from the most general template.
1558
1559 2010-01-16  Jason Merrill  <jason@redhat.com>
1560
1561         PR c++/42761
1562         * semantics.c (finish_decltype_type): Within a template, treat
1563         unresolved CALL_EXPR as dependent.
1564
1565 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
1566
1567         * error.c (dump_template_parms,count_non_default_template_args):
1568         Revert changes of PR c++/42634.
1569
1570 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
1571
1572         PR middle-end/42674
1573         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
1574         functions with noreturn attribute.
1575
1576 2010-01-14  Jason Merrill  <jason@redhat.com>
1577
1578         PR c++/42701
1579         * call.c (build_new_method_call): Don't free the vec here.
1580
1581         PR c++/42655
1582         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
1583
1584 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
1585
1586         PR c++/42634
1587         * error.c (dump_template_parms): Use innermost template
1588         arguments before calling count_non_default_template_args.
1589         (count_non_default_template_args): We are being called with
1590         template innermost arguments now. There is no need to ensure
1591         that again.
1592
1593 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
1594
1595         c++/40155
1596         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
1597         arguments that were previously deduced.
1598
1599 2010-01-05  Jason Merrill  <jason@redhat.com>
1600
1601         * pt.c (unify_pack_expansion): Handle deduction from init-list.
1602         * call.c (build_over_call): Don't complain about it.
1603
1604 2010-01-04  Jason Merrill  <jason@redhat.com>
1605
1606         PR c++/42555
1607         * pt.c (tsubst_decl): Don't apply type attributes in place.
1608
1609         PR c++/42567
1610         * semantics.c (describable_type): Remove decltype comment and
1611         semantics.
1612
1613
1614 \f
1615 Copyright (C) 2010 Free Software Foundation, Inc.
1616
1617 Copying and distribution of this file, with or without modification,
1618 are permitted in any medium without royalty provided the copyright
1619 notice and this notice are preserved.