OSDN Git Service

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