OSDN Git Service

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