OSDN Git Service

37553c53c58d66a35a1fe69fa353d59d334c7000
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
2
3         Merge from apple/trunk branch on FSF servers:
4         
5         2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
6
7         Radar 4229905
8         * typeck.c (composite_pointer_type): Call objc_have_common_type
9         when comparing two objective-c pointer types.
10
11         2005-07-18  Ziemowit Laski  <zlaski@apple.com>
12
13         Radar 4175534
14         * call.c (standard_conversion): Do not issue warnings when
15         comparing ObjC pointer types.
16         
17         2005-06-22  Ziemowit Laski  <zlaski@apple.com>
18
19         Radar 4154928
20         * call.c (standard_conversion): Allow for a pointer conversion
21         between any two ObjC pointer types.
22         * typeck.c (composite_pointer_type): Determine common type
23         for two ObjC pointer types.
24         
25 2010-09-24  Jan Hubicka  <jh@suse.cz>
26
27         * decl.c (finish_function): Use decl_replaceable_p
28         * method.c (make_alias_for_thunk): Update call of cgraph_same_body_alias.
29
30 2010-09-24  Jason Merrill  <jason@redhat.com>
31
32         * decl.c (compute_array_index_type): Remember type dependence of
33         array bound.
34         * pt.c (dependent_type_p_r): Don't recompute it here.
35
36         * error.c (dump_expr) [CASE_CONVERT]: Print conversion between
37         reference and pointer to the same type as "*" or "&".
38
39 2010-09-24  Nicola Pero  <nicola.pero@meta-innovation.com>
40
41         * typeck.c (warn_args_num): Use warning 'too many arguments to
42         method [methodname]' for an Objective-C method instead of the less
43         satisfactory 'too many arguments to function' (with no method
44         name).
45
46 2010-09-21  Jason Merrill  <jason@redhat.com>
47
48         * mangle.c (write_expression) [SCOPE_REF]: Only do -fabi-version=1
49         special handling if we know the member.
50
51 2010-09-18  Jason Merrill  <jason@redhat.com>
52
53         * call.c (compare_ics): Do lvalue/rvalue reference binding
54         comparison for ck_list, too.
55
56 2010-09-15  Jason Merrill  <jason@redhat.com>
57
58         * semantics.c (finish_id_expression): Diagnose use of function
59         parms in evaluated context outside function body.
60
61         * decl2.c (grokbitfield): Diagnose non-integral width.
62
63         * call.c (convert_like_real): Use the underlying type of the
64         reference for the temporary.
65
66 2010-09-15  Jakub Jelinek  <jakub@redhat.com>
67
68         PR c++/45635
69         * class.c (build_vtbl_initializer): Use fn instead of init's operand
70         as first argument to FDESC_EXPR.
71
72 2010-09-15  Paolo Carlini  <paolo.carlini@oracle.com>
73
74         PR c++/45665
75         * decl.c (grokdeclarator): Check build_memfn_type return value
76         for error_mark_node.
77
78 2010-09-13  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
79
80         * semantics.c (finish_for_stmt): Always test flag_new_for_scope.
81         (begin_range_for_stmt): Likewise.
82
83 2010-09-11  Rodrigo Rivas <rodrigorivascosta@gmail.com>
84
85         Implement range-based for-statements.
86         * cp-tree.def (RANGE_FOR_STMT): New.
87         * cp-tree.h (RANGE_FOR_DECL, RANGE_FOR_EXPR, RANGE_FOR_BODY): New.
88         (cp_convert_range_for): Declare.
89         * pt.c (tsubst_expr): Add RANGE_FOR_STMT.
90         (tsubst_copy_and_build): perform_koenig_lookup takes extra argument.
91         * semantics.c (begin_range_for_stmt): New.
92         (finish_range_for_decl): New.
93         (finish_for_stmt): Accept also RANGE_FOR_STMT.
94         (perform_koenig_lookup): Add extra argument include_std.
95         * parser.c (cp_parser_c_for): New with code from
96         cp_parser_iteration_statement().
97         (cp_parser_range_for): New.
98         (cp_convert_range_for): New.
99         (cp_parser_iteration_statement): Add range-for support.
100         (cp_parser_condition): Adjust comment.
101         (cp_parser_postfix_expression): perform_koenig_lookup takes extra
102         argument.
103         * dump.c (cp_dump_tree): Add RANGE_FOR_STMT.
104         * cxx-pretty-print.c: Likewise.
105         * lex.c (cxx_init): Likewise.
106         * name-lookup.c (lookup_function_nonclass): Add extra argument
107         include_std.
108         (lookup_arg_dependent): Likewise.
109         * name-lookup.h: Likewise.
110
111 2010-09-10  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
112
113         PR c++/43824
114         * error.c (maybe_warn_cpp0x): Add new warning
115         CPP0X_INLINE_NAMESPACES.
116         * parser.c (cp_parser_namespace_definition): Likewise.
117         * cp-tree.h (cpp0x_warn_str): Likewise.
118
119 2010-09-10  Richard Guenther  <rguenther@suse.de>
120
121         * decl.c (reshape_init_vector): For VECTOR_TYPEs, use
122         TYPE_VECTOR_SUBPARTS instead of TYPE_DEBUG_REPRESENTATION_TYPE.
123
124 2010-09-10  Jan Hubicka  <jh@suse.cz>
125
126         PR tree-optimization/45605
127         * cp/class.c (build_vtbl_initializer): Avoid wrong type conversion in
128         ADDR_EXPR.
129
130 2010-09-08  Jakub Jelinek  <jakub@redhat.com>
131
132         PR c++/45588
133         * pt.c (tsubst) <case INTEGER_TYPE>: Call mark_rvalue_use
134         before calling fold_decl_constant_value.
135
136 2010-09-07  Arnaud Charlet  <charlet@adacore.com>
137
138         * cp-tree.h (build_enumerator): Add new location_t parameter.
139         (build_lang_decl_loc): New function.
140         * decl.c (build_enumerator): New parameter loc. Use it when calling
141         build_decl. Replace build_lang_decl with build_lang_decl_loc.
142         * pt.c (tsubst_enum): Adjust call to build_enumerator.
143         * parser.c (cp_parser_enumerator_definition): Ditto.
144         * lex.c (build_lang_decl_loc): New function.
145
146 2010-09-06  Dodji Seketeli  <dodji@redhat.com>
147
148         PR c++/45200
149         PR c++/45293
150         PR c++/45558
151         * tree.c (strip_typedefs): Strip typedefs from the context of
152         TYPENAME_TYPEs.
153
154 2010-09-06  Mark Mitchell  <mark@codesourcery.com>
155
156         * typeck.c (cp_build_binary_op): Call do_warn_double_promotion.
157         * call.c (build_conditional_expr): Likewise.
158         (convert_arg_to_ellipsis): Likewise.
159
160 2010-09-06  Arnaud Charlet  <charlet@adacore.com>
161
162         * parser.c (make_pointer_declarator, make_reference_declarator,
163         make_call_declarator, make_array_declarator): Set declarator->id_loc.
164         (cp_parser_init_declarator): Adjust location of decl if appropriate.
165
166 2010-09-06  Jason Merrill  <jason@redhat.com>
167
168         * call.c (implicit_conversion): Fix value-init of enums.
169         (convert_like_real): Likewise.
170
171         * decl.c (cp_finish_decl): Don't change init for auto deduction.
172
173         * pt.c (fold_non_dependent_expr_sfinae): Split out from...
174         (fold_non_dependent_expr): ...here.
175         (convert_nontype_argument): Use it.  Take complain parm.
176         Use perform_implicit_conversion instead of ocp_convert.
177         Allow cv-qual changes.
178         (convert_template_argument): Pass complain down.
179         (tsubst_template_arg): Suppress constant expression warnings.
180         Don't fold here.
181
182         * method.c (synthesized_method_walk): In constructors, also check
183         subobject destructors.
184
185         * semantics.c (finish_compound_literal): Always build a
186         TARGET_EXPR.
187
188 2010-08-30  Paolo Carlini  <paolo.carlini@oracle.com>
189
190         PR c++/45043
191         * decl.c (grokdeclarator): Use MAIN_NAME_P only on IDENTIFIER_NODEs.
192
193 2010-08-30  Jakub Jelinek  <jakub@redhat.com>
194
195         PR middle-end/45423
196         * parser.c (cp_parser_omp_atomic): Handle boolean
197         {PRE,POST}_INCREMENT.
198
199 2010-08-29  Jason Merrill  <jason@redhat.com>
200
201         PR c++/44991
202         * parser.c (cp_parser_parameter_declaration): Pop parameter decls
203         after tentative parsing.
204
205 2010-08-22  Joseph Myers  <joseph@codesourcery.com>
206
207         * Make-lang.in (g++spec.o): Update dependencies.
208         * g++spec.c: Include opts.h
209         (MATH_LIBRARY, LIBSTDCXX): Remove initial "-l".
210         (lang_specific_driver): Use cl_decoded_option structures.
211
212 2010-08-20  Nathan Froyd  <froydnj@codesourcery.com>
213
214         * call.c: Use FOR_EACH_VEC_ELT.
215         * class.c: Likewise.
216         * decl.c: Likewise.
217         * decl2.c: Likewise.
218         * error.c: Likewise.
219         * except.c: Likewise.
220         * mangle.c: Likewise.
221         * method.c: Likewise.
222         * name-lookup.c: Likewise.
223         * parser.c: Likewise.
224         * pt.c: Likewise.
225         * repo.c: Likewise.
226         * semantics.c: Likewise.
227         * typeck2.c: Likewise.
228
229 2010-08-19  Jason Merrill  <jason@redhat.com>
230
231         * call.c (reference_related_p): Check for error_mark_node.
232         (add_function_candidate): Check it instead of
233         same_type_ignoring_top_level_qualifiers_p.
234
235         PR c++/45315
236         * init.c (build_new_1): Don't use build_value_init in a template.
237         (build_value_init): Make sure we don't.
238
239         PR c++/45307
240         * cp-gimplify.c (cp_gimplify_expr): Also remove assignment
241         of empty class CONSTRUCTOR.
242
243         * except.c (pending_noexcept, pending_noexcept_checks): New.
244         (perform_deferred_noexcept_checks): New.
245         (maybe_noexcept_warning): Split from...
246         (finish_noexcept_expr): ...here.  Adjust.
247         * decl2.c (cp_write_global_declarations): Call
248         perform_deferred_noexcept_checks.
249         * cp-tree.h: And declare it.
250
251 2010-08-18  Nathan Froyd  <froydnj@codesourcery.com>
252
253         PR c++/45049
254         * name-lookup.c (push_overloaded_decl): Change DECL_CHAIN to
255         TREE_CHAIN.
256
257 2010-08-17  Kai Tietz  <kai.tietz@onevision.com>
258
259         * class.c (note_name_declared_in_class): Make in 'extern "C"' blocks,
260         or if -fms-extensions is enabled check, check permissive.
261
262 2010-08-09  Jason Merrill  <jason@redhat.com>
263
264         PR c++/45236
265         * pt.c (lookup_template_class): Don't re-coerce outer parms.
266
267 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
268
269         * call.c (add_builtin_candidates): Use VECs for local variable
270         `types'.  Adjust remainder of function accordingly.
271
272 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
273
274         * name-lookup.c (is_associated_namespace): Convert local variables
275         to be VECs instead of TREE_LISTs.
276
277 2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>
278
279         * tree.c (varargs_function_p): Use stdarg_p.
280
281 2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>
282
283         * parser.c (cp_default_arg_entry): Declare.  Declare a VEC of it.
284         (cp_unparsed_functions_entry): Declare.  Declare a VEC of it.
285         (cp_parser) [unparsed_functions_queues]: Rename to unparsed_queues.
286         Change type to a VEC.
287         (unparsed_funs_with_default_args): Define.
288         (unparsed_funs_with_definitions): Define.
289         (push_unparsed_function_queues): New function.
290         (cp_parser_new): Call it.
291         (pop_unparsed_function_queues): New function.
292         (cp_parser_class_specifier): Adjust processing of unparsed functions.
293         (cp_parser_template_declaration_after_export): Use VEC_safe_push.
294         (cp_parser_save_member_function_body): Likewise.
295         (cp_parser_late_parsing_for_member): Call push_unparsed_function_queues
296         and pop_unparsed_function_queues.
297         (cp_parser_late_parsing_default_args): Likewise.
298         (cp_parser_save_default_args): Use VEC_safe_push.
299
300 2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>
301
302         * name-lookup.h (cp_label_binding): Declare.  Declare a VEC type
303         containing it.
304         (cp_binding_level): Convert shadowed_labels and dead_vars_from_for
305         fields to VECs.
306         * decl.c (poplevel): Adjust for type changes.
307         (declare_local_label): Likewise.
308
309 2010-08-06  Jason Merrill  <jason@redhat.com>
310
311         * typeck.c (complete_type_or_maybe_complain): Split out from...
312         (complete_type_or_else): Here.
313         (build_class_member_access_expr): Call it.
314         (finish_class_member_access_expr): Likewise.
315         * call.c (build_special_member_call): Likewise.
316         * cvt.c (build_expr_type_conversion): Likewise.
317         * init.c (build_new): Likewise.
318         * typeck2.c (build_functional_cast): Likewise.
319         * cp-tree.h: Declare it.
320
321         * init.c (build_value_init): Add complain parm.
322         (build_value_init_noctor): Likewise.
323         (perform_member_init): Pass it.
324         (expand_aggr_init_1): Likewise.
325         (build_new_1): Likewise.
326         (build_vec_init): Likewise.
327         * pt.c (tsubst_expr): Likewise.
328         * typeck2.c (build_functional_cast): Likewise.
329         * cp-tree.h: Adjust.
330         * tree.c (build_target_expr_with_type): Handle error_mark_node.
331
332         * typeck.c (decay_conversion): Any expression with type nullptr_t
333         decays to nullptr.
334
335 2010-07-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
336
337         PR c++/45112
338         * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED.
339
340 2010-07-27  Jason Merrill  <jason@redhat.com>
341
342         * pt.c (tsubst_expr) [DECL_EXPR]: Handle getting an AGGR_INIT_EXPR
343         from build_value_init.
344         * init.c (build_value_init_noctor): Give error for unknown array
345         bound.
346
347 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
348
349         * cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
350
351 2010-07-27  Joseph Myers  <joseph@codesourcery.com>
352
353         * cp-objcp-common.c (cxx_initialize_diagnostics): First call
354         c_common_initialize_diagnostics.
355         * cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK,
356         LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define.
357
358 2010-07-21  Jason Merrill  <jason@redhat.com>
359
360         * tree.c (cp_tree_equal): Fix CONSTRUCTOR handling.
361
362         * parser.c (cp_parser_init_declarator): Pass LOOKUP_NORMAL
363         to cp_finish_decl.
364
365 2010-07-20  Jeffrey Yasskin  <jyasskin@google.com>
366
367         PR c++/44641
368         * pt.c (instantiate_class_template): Propagate the template's
369         location to its instance.
370
371 2010-07-20  Jason Merrill  <jason@redhat.com>
372
373         PR c++/44967
374         * pt.c (tsubst_copy_and_build): Rework last change.
375
376         PR c++/44967
377         * pt.c (tsubst_copy_and_build): Handle partial substitution of
378         CALL_EXPR.
379
380 2010-07-19  Jason Merrill  <jason@redhat.com>
381
382         PR c++/44996
383         * semantics.c (finish_decltype_type): Correct decltype
384         of parenthesized rvalue reference variable.
385
386         PR c++/44969
387         * tree.c (cp_tree_equal): Compare type of *CAST_EXPR.
388         * pt.c (iterative_hash_template_arg): Hash type of *CAST_EXPR.
389
390 2010-07-19  Paolo Carlini  <paolo.carlini@oracle.com>
391
392         PR c++/44969
393         * typeck.c (build_x_compound_expr_from_list): Add tsubst_flags_t
394         parameter.
395         * cp-tree.h: Adjust declaration.
396         * init.c (perform_member_init): Adjust caller.
397         * decl.c (grok_reference_init, cp_finish_decl): Likewise.
398         * typeck2.c (store_init_value): Likewise.
399         (build_functional_cast): Pass complain argument to
400         build_x_compound_expr_from_list.
401
402 2010-07-16  Jason Merrill  <jason@redhat.com>
403
404         PR c++/32505
405         * pt.c (process_partial_specialization): Diagnose partial
406         specialization after instantiation.
407         (most_specialized_class): Add complain parm.
408
409         * ptree.c (cxx_print_xnode): Handle TEMPLATE_INFO.
410
411 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
412
413         * init.c (build_new_1): Use cp_build_function_call_nary instead of
414         cp_build_function_call.
415
416 2010-07-15  Jason Merrill  <jason@redhat.com>
417
418         PR c++/44909
419         * call.c (add_function_candidate): If we're working on an implicit
420         declaration, don't consider candidates that won't match.
421         * typeck.c (same_type_ignoring_top_level_qualifiers_p): Now a fn.
422         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): Adjust.
423
424         Revert:
425         * cp-tree.h (struct lang_type_class): Add has_user_opeq.
426         (TYPE_HAS_USER_OPEQ): New.
427         * decl.c (grok_special_member_properties): Set it.
428         * class.c (add_implicitly_declared_members): Don't lazily declare
429         constructors/operator= if a base or member has a user-declared one.
430         (check_bases_and_members, check_bases): Adjust.
431         (check_field_decls, check_field_decl): Adjust.
432
433 2010-07-15  Anatoly Sokolov  <aesok@post.ru>
434
435         * decl.c (integer_three_node): Remove.
436         (cxx_init_decl_processing): Do not initialize the integer_three_node.
437         * cp-tree.h (integer_three_node): Remove.
438
439 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
440
441         * cp-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN.
442         * call.c: Likewise.
443         * class.c: Likewise.
444         * cp-gimplify.c: Likewise.
445         * decl.c: Likewise.
446         * decl2.c: Likewise.
447         * init.c: Likewise.
448         * mangle.c: Likewise.
449         * name-lookup.c: Likewise.
450         * optimize.c: Likewise.
451         * parser.c: Likewise.
452         * pt.c: Likewise.
453         * rtti.c: Likewise.
454         * search.c: Likewise.
455         * semantics.c: Likewise.
456         * typeck.c: Likewise.
457         * typeck2.c: Likewise.
458
459 2010-07-14  Jason Merrill  <jason@redhat.com>
460
461         * init.c (sort_mem_initializers): Rename "field_type" to "ctx".
462         (build_field_list): Cache field type.
463
464         Implement C++0x unrestricted unions (N2544)
465         * class.c (check_field_decl): Loosen union handling in C++0x.
466         * method.c (walk_field_subobs): Split out from...
467         (synthesized_method_walk): ...here.  Set msg before loops.
468         (process_subob_fn): Check for triviality in union members.
469         * init.c (sort_mem_initializers): Splice out uninitialized
470         anonymous unions and union members.
471         (push_base_cleanups): Don't automatically destroy anonymous unions
472         and union members.
473
474 2010-07-13  Jason Merrill  <jason@redhat.com>
475
476         PR c++/44909
477         * cp-tree.h (struct lang_type_class): Add has_user_opeq.
478         (TYPE_HAS_USER_OPEQ): New.
479         * decl.c (grok_special_member_properties): Set it.
480         * class.c (add_implicitly_declared_members): Don't lazily declare
481         constructors/operator= if a base or member has a user-declared one.
482         (check_bases_and_members, check_bases): Adjust.
483         (check_field_decls, check_field_decl): Adjust.
484         * method.c (synthesized_method_walk): Initialize check_vdtor.
485
486         PR c++/44540
487         * mangle.c (write_type): Canonicalize.
488         (canonicalize_for_substitution): Retain cv-quals on FUNCTION_TYPE.
489         (write_CV_qualifiers_for_type): Ignore them in abi>=5.
490
491 2010-07-13  Paolo Carlini  <paolo.carlini@oracle.com>
492
493         PR c++/44908
494         * call.c (convert_like_real): Adjust convert_ptrmem call, pass
495         complain argument.
496         * typeck.c (get_delta_difference): Update prototype, add a
497         tsubst_flags_t parameter; update get_delta_difference_1 calls and
498         add checks for error_mark_node.
499         (get_delta_difference_1): Update prototype, add a tsubst_flags_t
500         parameter; update lookup_base call.
501         (build_ptrmemfunc): Update prototype, add a tsubst_flags_t
502         parameter; update get_delta_difference call and add check for
503         error_mark_node.
504         (convert_ptrmem): Update prototype, add a tsubst_flags_t
505         parameter; update get_delta_difference call and add check for
506         error_mark_node;  update build_ptrmemfunc call.
507         (build_static_cast_1): Adjust convert_ptrmem call.
508         (expand_ptrmemfunc_cst): Adjust get_delta_difference call.
509         (cp_build_unary_op): Adjust build_ptrmemfunc call.
510         * cvt.c (cp_convert_to_pointer, convert_force): Adjust convert_ptrmem
511         and build_ptrmemfunc calls.
512         * cp-tree.h: Update build_ptrmemfunc and convert_ptrmem prototypes.
513
514 2010-07-12  Paolo Carlini  <paolo.carlini@oracle.com>
515
516         PR c++/44907
517         * call.c (build_temp): Add tsubst_flags_t complain parameter;
518         adjust build_special_member_call call, pass complain.
519         (convert_like_real): Adjust build_temp call, pass complain.
520
521 2010-07-09  Jason Merrill  <jason@redhat.com>
522
523         PR c++/43120
524         * cp-tree.h (BV_LOST_PRIMARY): New macro.
525         * class.c (update_vtable_entry_for_fn): Fix covariant thunk logic.
526         Set BV_LOST_PRIMARY.
527         (build_vtbl_initializer): Check BV_LOST_PRIMARY.
528
529 2010-07-08  Jason Merrill  <jason@redhat.com>
530
531         PR c++/43120
532         * class.c (update_vtable_entry_for_fn): Fix handling of dummy
533         virtual bases for covariant thunks.
534
535 2010-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
536
537         * cp-tree.h: Do not include toplev.h.
538
539 2010-07-06  Jason Merrill  <jason@redhat.com>
540
541         PR c++/44703
542         * call.c (is_std_init_list): Look through typedefs.
543
544         PR c++/44778
545         * init.c (build_offset_ref): If scope isn't dependent,
546         don't exit early.  Look at TYPE_MAIN_VARIANT.
547         * pt.c (tsubst_copy) [OFFSET_REF]: Do substitution.
548
549         * error.c (dump_function_decl): Don't crash on null DECL_NAME.
550
551 2010-07-06  Shujing Zhao  <pearly.zhao@oracle.com>
552
553         * cp-tree.h (impl_conv_void): New type.
554         (convert_to_void): Adjust prototype.
555         * cvt.c (convert_to_void): Use impl_conv_void, emit and adjust the
556         diagnostic for easy translation. Change caller.
557         * typeck.c: Update call to convert_to_void.
558         * semantics.c: Likewise.
559         * init.c: Likewise.
560
561 2010-07-05  Nathan Froyd  <froydnj@codesourcery.com>
562
563         * decl.c (cp_finish_decl): Call add_local_decl.
564         * optimize.c (clone_body): Adjust for new type of cfun->local_decls.
565
566 2010-07-05  Paolo Carlini  <paolo.carlini@oracle.com>
567
568         * pt.c (tsubst): Early declare code = TREE_CODE (t) and use it
569         throughout.
570
571 2010-07-05  Shujing Zhao  <pearly.zhao@oracle.com>
572
573         PR c++/22138
574         * parser.c (cp_parser_primary_expression): Error if local template is
575         declared.
576
577 2010-07-02  Le-Chun Wu  <lcwu@google.com>
578
579         PR/44128
580         * name-lookup.c (pushdecl_maybe_friend): Warn when a local decl
581         (variable or type) shadows another type.
582
583 2010-07-02  Jakub Jelinek  <jakub@redhat.com>
584
585         PR c++/44780
586         * typeck.c (convert_for_assignment): When converting a convertible
587         vector type or objc++ types, call mark_rvalue_use.
588         * typeck2.c (build_m_component_ref): Use return values from
589         mark_rvalue_use or mark_lvalue_use.
590         * class.c (build_base_path): Likewise.
591         * call.c (build_conditional_expr): Likewise.
592
593 2010-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
594
595         PR c++/44039
596         * pt.c (tsubst_baselink): Return error_mark_node if lookup_fnfields
597         returns NULL_TREE.
598
599 2010-07-01  Richard Guenther  <rguenther@suse.de>
600
601         * cp-gimplify.c (cp_gimplify_expr): Open-code the rhs
602         predicate we are looking for, allow non-gimplified
603         INDIRECT_REFs.
604
605 2010-06-30  Paolo Carlini  <paolo.carlini@oracle.com>
606
607         PR c++/44628
608         * typeck.c (cp_build_unary_op): Early return error_mark_node when
609         arg is NULL_TREE too.
610         * call.c (convert_class_to_reference): Return error_mark_node when
611         expr is NULL_TREE.
612
613 2010-06-30  Michael Matz  <matz@suse.de>
614
615         * repo.c (finish_repo): Fix typo.
616
617 2010-06-30  Nathan Froyd  <froydnj@codesourcery.com>
618
619         * parser.c (cp_parser_omp_for_loop): Use a VEC for for_block.
620
621 2010-06-30  Nathan Froyd  <froydnj@codesourcery.com>
622
623         * repo.c (pending_repo): Change type to a VEC.
624         (finish_repo): Adjust for new type of pending_repo.
625         (repo_emit_p): Likewise.
626
627 2010-06-30  Manuel López-Ibáñez  <manu@gcc.gnu.org>
628
629         * tree.c: Include gimple.h. Do not include tree-flow.h
630         * decl.c: Do not include tree-flow.h
631         * Make-lang.in: Adjust dependencies.
632
633 2010-06-29  Nathan Froyd  <froydnj@codesourcery.com>
634
635         * decl.c (incomplete_var): Declare.  Declare VECs containing them.
636         (incomplete_vars): Adjust comment.  Change type to a VEC.
637         (maybe_register_incomplete_var): Adjust for new type.
638         (complete_vars): Adjust iteration over incomplete_vars.
639
640 2010-06-29  Nathan Froyd  <froydnj@codesourcery.com>
641
642         * decl.c (struct named_label_entry): Change type of bad_decls field
643         to a VEC.
644         (poplevel_named_label_1): Adjust for new type of bad_decls.
645         (check_goto): Likewise.
646
647 2010-06-29  Jason Merrill  <jason@redhat.com>
648
649         Enable implicitly declared move constructor/operator= (N3053).
650         * class.c (add_implicitly_declared_members): A class with no
651         explicitly declared copy or move constructor gets both declared
652         implicitly, and similarly for operator=.
653         (check_bases): A type with no copy ctor does not inhibit
654         a const copy ctor in a derived class.  It does mean the derived
655         one is non-trivial.
656         (check_field_decl): Likewise.
657         (check_bases_and_members): A nonexistent copy ctor/op= is non-trivial.
658         * tree.c (type_has_nontrivial_copy_init): Adjust semantics.
659         (trivially_copyable_p): Likewise.
660         * call.c (convert_like_real): Use type_has_nontrivial_copy_init.
661         * class.c (finish_struct_bits): Likewise.
662         * tree.c (build_target_expr_with_type): Likewise.
663         * typeck2.c (store_init_value): Likewise.
664
665         Enable implicitly deleted functions (N2346)
666         * class.c (check_bases_and_members): Adjust lambda flags.
667         * method.c (implicitly_declare_fn): Set DECL_DELETED_FN if appropriate.
668
669         * decl2.c (mark_used): Adjust error for use of deleted function.
670
671         Machinery to support implicit delete/move.
672         * cp-tree.h: (struct lang_type_class): Add lazy_move_assign,
673         has_complex_move_ctor, has_complex_move_assign bitfields.
674         (CLASSTYPE_LAZY_MOVE_ASSIGN): New.
675         (TYPE_HAS_COMPLEX_MOVE_ASSIGN): New.
676         (TYPE_HAS_COMPLEX_MOVE_CTOR): New.
677         (enum special_function_kind): Add sfk_move_assignment.
678         (LOOKUP_SPECULATIVE): New.
679         * call.c (build_over_call): Return early if it's set.
680         (build_over_call): Use trivial_fn_p.
681         * class.c (check_bases): If the base has no default constructor,
682         the derived one is non-trivial.  Handle move ctor/op=.
683         (check_field_decl): Likewise.
684         (check_bases_and_members): Handle move ctor/op=.
685         (add_implicitly_declared_members): Handle CLASSTYPE_LAZY_MOVE_ASSIGN.
686         (type_has_move_constructor, type_has_move_assign): New.
687         * decl.c (grok_special_member_properties): Handle move ctor/op=.
688         * method.c (type_has_trivial_fn, type_set_nontrivial_flag): New.
689         (trivial_fn_p): New.
690         (do_build_copy_constructor): Use it.
691         (do_build_assign_ref): Likewise.  Handle move assignment.
692         (build_stub_type, build_stub_object, locate_fn_flags): New.
693         (locate_ctor): Use locate_fn_flags.
694         (locate_copy, locate_dtor): Remove.
695         (get_dtor, get_default_ctor, get_copy_ctor, get_copy_assign): New.
696         (process_subob_fn, synthesized_method_walk): New.
697         (maybe_explain_implicit_delete): New.
698         (implicitly_declare_fn): Use synthesized_method_walk,
699         type_has_trivial_fn, and type_set_nontrivial_flag.
700         (defaulted_late_check): Set DECL_DELETED_FN.
701         (defaultable_fn_check): Handle sfk_move_assignment.
702         (lazily_declare_fn): Clear CLASSTYPE_LAZY_* early.  Don't declare
703         implicitly deleted move ctor/op=.
704         * search.c (lookup_fnfields_1): Handle sfk_move_assignment.
705         (lookup_fnfields_slot): New.
706         * semantics.c (omp_clause_info_fndecl): Remove.
707         (cxx_omp_create_clause_info): Use get_default_ctor, get_copy_ctor,
708         get_copy_assign, trivial_fn_p.
709         (trait_expr_value): Adjust call to locate_ctor.
710         * tree.c (special_function_p): Handle sfk_move_assignment.
711
712         * class.c (type_has_virtual_destructor): New.
713         * cp-tree.h: Declare it.
714         * semantics.c (trait_expr_value): Use it.
715
716         * call.c (build_over_call): Only give warnings with tf_warning.
717
718         * name-lookup.c (pop_scope): Handle NULL_TREE.
719
720         * cp-tree.h (TYPE_HAS_ASSIGN_REF): Rename to TYPE_HAS_COPY_ASSIGN.
721         (TYPE_HAS_CONST_ASSIGN_REF): Rename to TYPE_HAS_CONST_COPY_ASSIGN.
722         (TYPE_HAS_INIT_REF): Rename to TYPE_HAS_COPY_CTOR.
723         (TYPE_HAS_CONST_INIT_REF): Rename to TYPE_HAS_CONST_COPY_CTOR.
724         (TYPE_HAS_COMPLEX_ASSIGN_REF): Rename to TYPE_HAS_COMPLEX_COPY_ASSIGN.
725         (TYPE_HAS_COMPLEX_INIT_REF): Rename to TYPE_HAS_COMPLEX_COPY_CTOR.
726         (TYPE_HAS_TRIVIAL_ASSIGN_REF): Rename to TYPE_HAS_TRIVIAL_COPY_ASSIGN.
727         (TYPE_HAS_TRIVIAL_INIT_REF): Rename to TYPE_HAS_TRIVIAL_COPY_CTOR.
728         (CLASSTYPE_LAZY_ASSIGNMENT_OP): Rename to CLASSTYPE_LAZY_COPY_ASSIGN.
729         (sfk_assignment_operator): Rename to sfk_copy_assignment.
730         * decl.c, call.c, class.c, init.c, method.c, pt.c, ptree.c: Adjust.
731         * search.c, semantics.c, tree.c: Adjust.
732
733         * pt.c (dependent_scope_ref_p): Remove.
734         (value_dependent_expression_p): Don't call it.
735         (type_dependent_expression_p): Here either.
736         * init.c (build_offset_ref): Set TREE_TYPE on a qualified-id
737         if the scope isn't dependent.
738
739         * pt.c (convert_nontype_argument): Use mark_lvalue_use if we want
740         a reference.
741
742         PR c++/44587
743         * pt.c (has_value_dependent_address): New.
744         (value_dependent_expression_p): Check it.
745         (convert_nontype_argument): Likewise.  Call decay_conversion before
746         folding if we want a pointer.
747         * semantics.c (finish_id_expression): Don't add SCOPE_REF if the
748         scope is the current instantiation.
749
750 2010-06-28  Jakub Jelinek  <jakub@redhat.com>
751
752         PR c++/44682
753         * class.c (build_base_path): If want_pointer, call mark_rvalue_use
754         on expr.
755
756 2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
757
758         * init.c: Do not include except.h.
759         * decl.c: Likewise.
760         * expr.c: Likewise.
761         * cp-lang.c: Likewise.
762         * pt.c: Likewise.
763         * semantics.c: Likewise.
764         * decl2.c: Likewise.
765         * except.c: Likewise.
766         (init_exception_processing): Do not set the removed
767         lang_protect_cleanup_actions here.
768         (cp_protect_cleanup_actions): Make non-static and remove prototype.
769         (doing_eh): New, moved from except.c but removed the do_warning flag.
770         (expand_start_catch_block): Update doing_eh call.
771         (expand_end_catch_block): Likewise.
772         (build_throw): Likewise.
773         * cp-tree.h: Prototype cp_protect_cleanup_actions.
774         * cp-objcp-common.h: Set LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS to
775         cp_protect_cleanup_actions.
776         * Make-lang.in: Update dependencies.
777
778 2010-06-26  Jason Merrill  <jason@redhat.com>
779
780         * call.c (add_function_candidate): Set LOOKUP_COPY_PARM for any
781         constructor called with a single argument that takes a reference
782         to the constructor's class.
783         (BAD_CONVERSION_RANK): New.
784         (compare_ics): Use it to compare bad ICSes.
785
786 2010-06-25  Joseph Myers  <joseph@codesourcery.com>
787
788         * lang-specs.h: Remove +e handling.
789
790 2010-06-24  Andi Kleen  <ak@linux.intel.com>
791
792         * parser.c: (cp_parser_question_colon_clause):
793         Switch to use cp_lexer_peek_token.
794         Call warn_for_omitted_condop. Call pedwarn for omitted
795         middle operand.
796
797 2010-06-22  Jakub Jelinek  <jakub@redhat.com>
798
799         PR c++/44619
800         * typeck2.c (build_m_component_ref): Call mark_lvalue_use on
801         datum and mark_rvalue_use on component.
802
803         PR c++/44627
804         * error.c (dump_expr): Don't look at CALL_EXPR_ARG (t, 0) if
805         the CALL_EXPR has no arguments.
806
807 2010-06-21  Jason Merrill  <jason@redhat.com>
808
809         * typeck.c (comp_except_specs): Fix ce_derived with noexcept.
810
811         * semantics.c (check_trait_type): Check COMPLETE_TYPE_P for array
812         element type.
813
814 2010-06-17  Nathan Froyd  <froydnj@codesourcery.com>
815
816         * name-lookup.c (struct arg_lookup): Convert namespaces and
817         classes fields to VEC.
818         (arg_assoc_namespace): Adjust for new type of namespaces.
819         (arg_assoc_class): Adjust for new type of classes.
820         (lookup_arg_dependent): Use make_tree_vector and
821         release_tree_vector.
822         * typeck2.c (build_x_arrow): Use vec_member.
823
824 2010-06-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
825
826         PR c++/44486
827         * error.c (dump_decl): Better wording for anonymous namespace.
828
829 2010-06-16  Nathan Froyd  <froydnj@codesourcery.com>
830
831         * class.c (build_vtbl_initializer): Adjust computation of new_position
832         and which entry to add padding for.
833
834 2010-06-16  Jason Merrill  <jason@redhat.com>
835
836         * except.c (check_noexcept_r): Return the problematic function.
837         (finish_noexcept_expr): Give -Wnoexcept warning.  Add complain parm.
838         * pt.c (tsubst_copy_and_build): Pass it.
839         * parser.c (cp_parser_unary_expression): Likewise.
840         * cp-tree.h: Adjust prototype.
841
842         * method.c (defaulted_late_check): Give the defaulted method
843         the same exception specification as the implicit declaration.
844
845 2010-06-15  Jason Merrill  <jason@redhat.com>
846
847         * class.c (add_implicitly_declared_members): Implicit assignment
848         operators can also be virtual overriders.
849         * method.c (lazily_declare_fn): Likewise.
850
851         * call.c (convert_like_real): Give "initializing argument of"
852         information for ambiguous conversion.  Give source position
853         of function.
854
855         * call.c (print_z_candidates): Do print viable deleted candidates.
856         (joust): Don't choose a deleted function just because its worst
857         conversion is better than another candidate's worst.
858
859         * call.c (convert_like_real): Don't complain about
860         list-value-initialization from an explicit constructor.
861
862         * decl.c (duplicate_decls): Use DECL_IS_BUILTIN rather than test
863         DECL_SOURCE_LOCATION directly.
864
865         * class.c (type_has_user_provided_default_constructor): Use
866         sufficient_parms_p.
867
868         * call.c (is_subseq): Handle ck_aggr, ck_list.
869         (compare_ics): Treat an aggregate or ambiguous conversion to the
870         same type as involving the same function.
871
872 2010-06-13  Shujing Zhao  <pearly.zhao@oracle.com>
873
874         * typeck.c (convert_for_assignment): Fix comment. Change message
875         format from %d to %qP.
876         (convert_for_initialization): Fix comment. 
877
878 2010-06-11  Shujing Zhao  <pearly.zhao@oracle.com>
879
880         * cp-tree.h (expr_list_kind): New type.
881         (impl_conv_rhs): New type.
882         (build_x_compound_expr_from_list, convert_for_initialization): Adjust
883         prototype.
884         (typeck.c (convert_arguments): Use impl_conv_rhs and emit the
885         diagnostics for easy translation. Change caller.
886         (convert_for_initialization): Use impl_conv_rhs and change caller.
887         (build_x_compound_expr_from_list): Use expr_list_kind and emit the
888         diagnostics for easy translation. Change caller.
889         * decl.c (bad_spec_place): New enum.
890         (bad_specifiers): Use it and emit the diagnostics for easy
891         translation. Change caller.
892         * pt.c (coerce_template_parms): Put the diagnostics in full sentence.
893
894 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
895
896         * cp-tree.h (struct saved_scope): Change decl_ns_list field type
897         to a VEC.
898         * decl2.c (cp_write_global_declarations): Adjust for new type of
899         decl_namespace_list.
900         * name-lookup.c (current_decl_namespace): Likewise.
901         (push_decl_namespace): Likewise.
902         (pop_decl_namespace): Likewise.
903
904 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
905
906         * call.c (build_java_interface_fn_ref): Call build_function_type_list
907         instead of build_function_type.
908         * decl.c (cxx_init_decl_processing): Likewise.
909         (declare_global_var): Likewise.
910         (get_atexit_node): Likewise.
911         (expand_static_init): Likewise.
912         * decl2.c (start_objects): Likewise.
913         (start_static_storage_duration_function): Likewise.
914         * except.c (init_exception_processing): Likewise.
915         (build_exc_ptr): Likewise.
916         (build_throw): Likewise.
917         * rtti.c (throw_bad_cast): Likewise.
918         (throw_bad_typeid): Likewise.
919         (build_dynamic_cast_1): Likewise.
920
921 2010-06-09  Nathan Froyd  <froydnj@codesourcery.com>
922
923         * call.c (build_call_n): Call XALLOCAVEC instead of alloca.
924         (build_op_delete_call): Likewise.
925         (build_over_call): Likewise.
926         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
927         * pt.c (process_partial_specialization): Likewise.
928         (tsubst_template_args): Likewise.
929         * semantics.c (finish_asm_stmt): Likewise.
930
931 2010-06-08  Nathan Sidwell  <nathan@codesourcery.com>
932
933         * decl.c (record_key_method_defined): New, broken out of ...
934         (finish_function): ... here.  Call it.  
935         (start_decl): Treat aliases as definitions.
936
937 2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
938
939         * typeck2.c (abstract_virtuals_error): Use typed GC allocation.
940
941         * pt.c (maybe_process_partial_specialization): Likewise.
942         (register_specialization): Likewise.
943         (add_pending_template): Likewise.
944         (lookup_template_class): Likewise.
945         (push_tinst_level): Likewise.
946
947         * parser.c (cp_lexer_new_main): Likewise.
948         (cp_lexer_new_from_tokens): Likewise.
949         (cp_token_cache_new): Likewise.
950         (cp_parser_context_new): Likewise.
951         (cp_parser_new): Likewise.
952         (cp_parser_nested_name_specifier_opt): Likewise.
953         (cp_parser_template_id): Likewise.
954
955         * name-lookup.c (binding_entry_make): Likewise.
956         (binding_table_construct): Likewise.
957         (binding_table_new): Likewise.
958         (cxx_binding_make): Likewise.
959         (pushdecl_maybe_friend): Likewise.
960         (begin_scope): Likewise.
961         (push_to_top_level): Likewise.
962
963         * lex.c (init_reswords): Likewise.
964         (retrofit_lang_decl): Likewise.
965         (cxx_dup_lang_specific_decl): Likewise.
966         (copy_lang_type): Likewise.
967         (cxx_make_type): Likewise.
968
969         * decl.c (make_label_decl): Likewise.
970         (check_goto): Likewise.
971         (start_preparsed_function): Likewise.
972         (save_function_data): Likewise.
973
974         * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
975
976         * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
977
978         * class.c (finish_struct_1): Likewise.
979
980         * cp-tree.h (struct lang_type): Add variable_size GTY option.
981         (struct lang_decl): Likewise.
982
983         * parser.c (cp_parser_new): Update comment to not reference
984         ggc_alloc.
985
986 2010-06-07  Jason Merrill  <jason@redhat.com>
987
988         PR c++/44366
989         * error.c (dump_parameters): Mask out TFF_SCOPE.
990         (dump_simple_decl): Don't print the scope of a PARM_DECL.
991         (dump_scope): Remove no-op mask.
992
993         PR c++/44401
994         * parser.c (cp_parser_lookup_name): Fix naming the constructor.
995
996         * cp-tree.h (COMPLETE_OR_OPEN_TYPE_P): New macro.
997         * init.c (build_offset_ref): Use it.
998         * pt.c (maybe_process_partial_specialization): Use it.
999         (instantiate_class_template): Use it.
1000         * search.c (lookup_base): Use it.
1001
1002 2010-06-07  Jakub Jelinek  <jakub@redhat.com>
1003
1004         PR c++/44444
1005         * expr.c (mark_exp_read): Handle INDIRECT_REF.
1006         * cvt.c (convert_to_void): Handle INDIRECT_REF like
1007         handled_component_p.
1008
1009         PR c++/44443
1010         * decl.c (initialize_local_var): If TREE_USED is set on the type,
1011         set also DECL_READ_P on the decl.
1012
1013 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
1014
1015         PR c++/44188
1016         * cp-tree.h (typedef_variant_p): Move this declaration to
1017         gcc/tree.h.
1018         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
1019         * decl.c (grokdeclarator): Do not rename debug info of an
1020         anonymous tagged type named by a typedef.
1021
1022 2010-06-05  Fabien Chêne  <fabien@gcc.gnu.org>
1023
1024         PR c++/44086
1025         * class.c (check_field_decls): Move the call to
1026         check_bitfield_decl before trying to set the
1027         CLASSTYPE_READONLY_FIELDS_NEED_INIT flag.
1028
1029 2010-06-05  Steven Bosscher  <steven@gcc.gnu.org>
1030
1031         * typeck.c: Update include path for moved files.
1032         * decl.c: Likewise.
1033         * rtti.c: Likewise.
1034         * cp-gimplify.c: Likewise.
1035         * cp-lang.c: Likewise.
1036         * pt.c: Likewise.
1037         * semantics.c: Likewise.
1038         * cxx-pretty-print.h: Likewise.
1039         * decl2.c: Likewise.
1040         * parser.c: Likewise.
1041         * cp-objcp-common.c: Likewise.
1042         * cp-tree.h: Likewise.
1043         * name-lookup.c: Likewise.
1044         * lex.c: Likewise.
1045         * name-lookup.h: Likewise.
1046         * config-lang.in: Update paths in gtfiles for files in c-family/.
1047         * Make-lang.in: Likewise.
1048
1049 2010-06-04  Magnus Fromreide  <magfr@lysator.liu.se>
1050
1051         * cvt.c (cp_convert_to_pointer): Use null_ptr_cst_p.
1052         * typeck.c (build_ptrmemfunc): Likewise.
1053
1054 2010-06-04  Jason Merrill  <jason@redhat.com>
1055
1056         * typeck2.c (merge_exception_specifiers): Adjust merging of
1057         throw() and noexcept(true).
1058
1059         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Avoid
1060         using an uninitialized variable.
1061
1062         * cxx-pretty-print.c (pp_cxx_unary_expression): Handle NOEXCEPT_EXPR.
1063         (pp_cxx_expression): Likewise.
1064
1065         Implement noexcept-specification (15.4)
1066         * parser.c (cp_parser_exception_specification_opt): Parse it.
1067         Give -Wdeprecated warning about throw() specs.
1068         * pt.c (tsubst_exception_specification): Handle it.
1069         * error.c (dump_exception_spec): Handle it.
1070         (dump_expr): Handle NOEXCEPT_EXPR.
1071         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
1072         * typeck.c (comp_except_specs): Handle compatibility rules.
1073         Change exact parm to take an enum.
1074         * typeck2.c (merge_exception_specifiers): Handle noexcept.
1075         * except.c (nothrow_spec_p, type_noexcept_p): New fns.
1076         (type_throw_all_p, build_noexcept_spec): New fns.
1077         * cp-tree.h (TYPE_NOTHROW_P, TYPE_NOEXCEPT_P): Use them.
1078         (comp_except_specs): Define ce_derived, ce_normal, ce_exact enums.
1079         (cp_tree_index): Add CPTI_NOEXCEPT_TRUE_SPEC, CPTI_NOEXCEPT_FALSE_SPEC.
1080         (noexcept_true_spec, noexcept_false_spec): New macros.
1081         * name-lookup.c (pushdecl_maybe_friend): Adjust.
1082         * search.c (check_final_overrider): Adjust.
1083         * decl.c (check_redeclaration_exception_specification): Adjust.
1084         (use_eh_spec_block): Use type_throw_all_p.
1085         (cxx_init_decl_processing): Set noexcept_false_spec,noexcept_true_spec.
1086         Give operator new a noexcept-specification in C++0x mode.
1087         * tree.c (build_exception_variant, cxx_type_hash_eq): Adjust.
1088         (cp_build_type_attribute_variant): Don't test TYPE_RAISES_EXCEPTIONS.
1089
1090         Implement noexcept operator (5.3.7)
1091         * cp-tree.def (NOEXCEPT_EXPR): New.
1092         * except.c (check_noexcept_r, finish_noexcept_expr): New.
1093         * cp-tree.h: Declare finish_noexcept_expr.
1094         * parser.c (cp_parser_unary_expression): Parse noexcept-expression.
1095         * pt.c (tsubst_copy_and_build): And tsubst it.
1096         (type_dependent_expression_p): Handle it.
1097         (value_dependent_expression_p): Handle it.
1098
1099         * call.c (build_conditional_expr): Never fold in unevaluated context.
1100         * tree.c (build_aggr_init_expr): Propagate TREE_NOTHROW.
1101         * semantics.c (simplify_aggr_init_expr): Likewise.
1102         * typeck.c (merge_types): Call merge_exception_specifiers.
1103         * decl.c (duplicate_decls): Check DECL_SOURCE_LOCATION rather than
1104         DECL_ANTICIPATED for preferring new type.
1105
1106 2010-06-04  Joseph Myers  <joseph@codesourcery.com>
1107
1108         * g++spec.c (lang_specific_driver): Use GCC-specific formats in
1109         diagnostics.
1110
1111 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
1112
1113         PR c++/44412
1114         * typeck.c (build_class_member_access_expr): Call mark_exp_read
1115         on object for static data members.
1116
1117 2010-06-04  Jakub Jelinek  <jakub@redhat.com>
1118             Jason Merrill  <jason@redhat.com>
1119
1120         PR c++/44362
1121         * call.c (build_conditional_expr): If both arg2 and arg3 are lvalues
1122         with the same type, call mark_lvalue_use on both.
1123
1124 2010-06-03  Nathan Froyd  <froydnj@codesourcery.com>
1125
1126         * class.c (struct vtbl_init_data_s): Remove last_init field.
1127         (struct secondary_vptr_vtt_init_data_s): Change type of inits field
1128         to a VEC.
1129         (finish_vtbls): Use a VEC rather than a TREE_LIST for the accumulated
1130         initializers.
1131         (build_vtt): Likewise.
1132         (initialize_vtable): Take a VEC instead of a tree.
1133         (build_vtt_inits): Change return type to void.  Take a VEC **
1134         instead of a tree *; accumulate results into said VEC.
1135         (build_ctor_vtbl_group): Use a VEC rather than a TREE_LIST for the
1136         accumulated initializers.  Pass the vtable to accumulate_vtbl_inits.
1137         (accumulate_vtbl_inits): Add extra vtable tree parameter; take a VEC
1138         instead of a tree.
1139         (dfs_accumulate_vtbl_inits): Likewise.  Change return type to void.
1140         (build_vtbl_initializer): Add VEC parameter; accumulate initializers
1141         into it.
1142         (dfs_build_secondary_vptr_vtt_inits): Use CONSTRUCTOR_APPEND_ELT
1143         rather than tree_cons.
1144         (build_vbase_offset_vtbl_entries): Likewise.
1145         (add_vcall_offset): Likewise.
1146         (build_rtti_vtbl_entries): Likewise.
1147         * cp-tree.h (initialize_artificial_var): Take a VEC instead of a tree.
1148         * decl.c (initialize_artificial_var): Use build_constructor instead
1149         of build_constructor_from_list.
1150
1151 2010-06-03  H.J. Lu  <hongjiu.lu@intel.com>
1152
1153         PR c++/44294
1154         * class.c (layout_class_type): Check MAX_FIXED_MODE_SIZE on
1155         bit-field.
1156
1157 2010-06-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
1158
1159         * parser.c (cp_parser_mem_initializer_list): Change error text.
1160
1161 2010-06-02  Jakub Jelinek  <jakub@redhat.com>
1162
1163         * cp-objcp-common.c (shadowed_var_for_decl): Change into
1164         tree_decl_map hashtab from tree_map.
1165         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Adjust.
1166         (init_shadowed_var_for_decl): Adjust initialization.
1167
1168         PR c++/44361
1169         * cvt.c (convert_to_void): If implicit is NULL, call mark_rvalue_use
1170         instead of calling mark_exp_read only when not an assignment.
1171
1172         PR debug/44367
1173         * semantics.c (finalize_nrv): Don't copy DECL_ARTIFICIAL, DECL_IGNORED_P,
1174         DECL_SOURCE_LOCATION and DECL_ABSTRACT_ORIGIN from var to result.
1175         Set DECL_VALUE_EXPR on var.
1176
1177 2010-06-02  Jason Merrill  <jason@redhat.com>
1178
1179         * error.c (dump_type): Improve typedef handling.
1180
1181         PR c++/9726
1182         PR c++/23594
1183         PR c++/44333
1184         * name-lookup.c (same_entity_p): New.
1185         (ambiguous_decl): Multiple declarations of the same entity
1186         are not ambiguous.
1187
1188 2010-06-01  Jason Merrill  <jason@redhat.com>
1189
1190         DR 990
1191         * call.c (add_list_candidates): Prefer the default constructor.
1192         (build_aggr_conv): Treat missing initializers like { }.
1193         * typeck2.c (process_init_constructor_record): Likewise.
1194         * init.c (expand_default_init): Use digest_init for
1195         direct aggregate initialization, too.
1196
1197         * call.c (add_list_candidates): Split out...
1198         (build_user_type_conversion_1): ...from here.
1199         (build_new_method_call): And here.
1200         (implicit_conversion): Propagate LOOKUP_NO_NARROWING.
1201
1202         PR c++/44358
1203         * call.c (build_list_conv): Set list-initialization flags properly.
1204
1205 2010-06-01  Nathan Froyd  <froydnj@codesourcery.com>
1206
1207         * typeck2.c (build_x_arrow): Make types_memoized a VEC.
1208
1209 2010-06-01  Arnaud Charlet  <charlet@adacore.com>
1210             Matthew Gingell  <gingell@adacore.com>
1211
1212         * Make-lang.in (CXX_C_OBJS): Add c-ada-spec.o.
1213         * decl2.c: Include langhooks.h and c-ada-spec.h.
1214         (cpp_check, collect_source_refs, collect_ada_namespace,
1215         collect_all_refs): New functions.
1216         (cp_write_global_declarations): Add handling of -fdump-ada-spec.
1217         * lang-specs.h: Ditto.
1218
1219 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
1220
1221         * cp-tree.h (cp_build_function_call_nary): Declare.
1222         * typeck.c (cp_build_function_call_nary): Define.
1223         * decl.c (register_dtor_fn): Use it instead of
1224         cp_build_function_call.
1225         (cxx_maybe_build_cleanup): Likewise.
1226         * decl2.c (generate_ctor_or_dtor_function): Likewise.
1227         * except.c (do_get_exception_ptr): Likewise.
1228         (do_begin_catch): Likewise.
1229         (do_allocate_exception): Likewise.
1230         (do_free_exception): Likewise.
1231         (build_throw): Likewise.  Use cp_build_function_call_vec instead
1232         of cp_build_function_call.
1233         (do_end_catch): Likewise.
1234
1235 2010-05-29  Nathan Froyd  <froydnj@codesourcery.com>
1236
1237         * cp-tree.h (struct cp_decl_specifier_seq): Move type_location field up.
1238         (struct cp_declarator): Move id_loc field up.
1239
1240 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
1241
1242         * cp-tree.h (ATTRIBUTE_GCC_CXXDIAG): Remove.  Require that
1243         this file is included before c-common.h.  Define GCC_DIAG_STYLE
1244         before including diagnostic-core.h and toplev.h.
1245         (pedwarn_cxx98): Use ATTRIBUTE_GCC_DIAG.
1246         * pt.c: Include cp-tree.h before c-common.h.
1247
1248 2010-05-29  Steven Bosscher  <steven@gcc.gnu.org>
1249
1250         * tree.c (c_register_addr_space): Add stub.
1251
1252 2010-05-28  Joseph Myers  <joseph@codesourcery.com>
1253
1254         * g++spec.c (lang_specific_driver): Use fatal_error instead of
1255         fatal.
1256
1257 2010-05-28  Dodji Seketeli  <dodji@redhat.com>
1258
1259         Revert fix of PR c++/44188
1260         * cp-tree.h (typedef_variant_p): Revert moving this declaration to
1261         gcc/tree.h.
1262         * tree.c (typedef_variant_p): Revert moving this definition to
1263         gcc/tree.c.
1264         * decl.c (grokdeclarator): Revert naming typedef handling.
1265
1266 2010-05-27  Joseph Myers  <joseph@codesourcery.com>
1267
1268         * call.c: Include diagnostic-core.h instead of diagnostic.h.
1269         * cp-lang.c: Don't include diagnostic.h
1270         * name-lookup.c: Include diagnostic-core.h instead of
1271         diagnostic.h.
1272         (cp_emit_debug_info_for_using): Use seen_error.
1273         * optimize.c: Include diagnostic-core.h instead of diagnostic.h.
1274         * parser.c: Include diagnostic-core.h instead of diagnostic.h.
1275         * pt.c (iterative_hash_template_arg): Use seen_error.
1276         * repo.c: Include diagnostic-core.h instead of diagnostic.h.
1277         * typeck2.c: Include diagnostic-core.h instead of diagnostic.h.
1278         * Make-lang.in (cp/cp-lang.o, cp/typeck2.o, cp/call.o, cp/repo.o,
1279         cp/optimize.o, cp/parser.o, cp/name-lookup.o): Update
1280         dependencies.
1281
1282 2010-05-25  Dodji Seketeli  <dodji@redhat.com>
1283
1284         PR c++/44188
1285         * cp-tree.h (typedef_variant_p): Move this declaration to
1286         gcc/tree.h.
1287         * tree.c (typedef_variant_p): Move this definition to gcc/tree.c.
1288         * decl.c (grokdeclarator): Do not rename debug info of an
1289         anonymous tagged type named by a typedef.
1290
1291 2010-05-27  Jason Merrill  <jason@redhat.com>
1292
1293         PR c++/43555
1294         * decl.c (grokdeclarator) [cdk_pointer et al]: Force evaluation of
1295         anonymous VLA size.
1296
1297 2010-05-27  Kai Tietz  <kai.tietz@onevision.com>
1298
1299         PR bootstrap/44287
1300         * rtti.c (emit_support_tinfos): Check for NULL_TREE.
1301         * class.c (layout_class_type): Likewise.
1302         * decl.c (finish_enum): Likewise.
1303         * mangle.c (write_builitin_type): Likewise.
1304
1305 2010-05-26  Kai Tietz  <kai.tietz@onevision.com>
1306
1307         * cp-tree.h (cp_decl_specifier_seq): Add new bifield
1308         explicit_int128_p.
1309         * decl.c (grokdeclarator): Handle __int128.
1310         * parser.c (cp_lexer_next_token_is_decl_specifier_ke): Likewise.
1311         (cp_parser_simple_type_specifier): Likewise.
1312         * rtti.c (emit_support_tinfos): Add int128 nodes for rtti.
1313         * typeck.c (cp_common_type): Handle __int128.
1314         * mangle.c (integer_type_codes): Add itk_int128 and
1315         itk_unsigned_int128.
1316
1317 2010-05-26  Jason Merrill  <jason@redhat.com>
1318
1319         PR c++/43382
1320         * pt.c (tsubst_pack_expansion): Don't get confused by recursive
1321         unification.
1322
1323 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
1324
1325         * cp-lang.c: Do not include expr.h.
1326
1327 2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>
1328
1329         * decl.c: Do not include rtl.h
1330         * semantics.c: Likewise.
1331
1332 2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>
1333
1334         * cp-tree.h: Do not include splay-tree.h.
1335         (struct prtmem_cst): Remove unused field and false comment.
1336         * typeck.c: Do not include rtl.h, expr.h, and tm_p.h.
1337         * optimize.c: Do not inclde rtl.h, insn-config.h, and integrate.h.
1338         * init.c: Do not include rtl.h and expr.h.
1339         * class.c: Do not include rtl.h.  Include splay-tree.h.
1340         (build_clone): Use plain NULL instead of NULL_RTX.
1341         * decl.c: Do not include expr.h.  Explain why rtl.h has to be
1342         included.  Include splay-tree.h.
1343         * method.c: Do not include rtl.h and expr.h.
1344         (use_thunk): Use plain NULL instead of NULL_RTX.
1345         * except.c: Do not include rtl.h, expr.h, and libfuncs.h.
1346         * tree.c: Do not include rtl.h, insn-config.h, integrate.h,
1347         and target.h.  Include splay-tree.h.
1348         * expr.c: Do not include rtl.h and expr.h.
1349         * pt.c: Do not include obstack.h and rtl.h.
1350         (tsubst_friend_function): Use plain NULL instead of NULL_RTX.
1351         (tsubst_decl): Likewise.
1352         (instantiate_decl): Likewise.
1353         * semantics.c: Do not include exprt.h and debug.h.  Explain why
1354         rtl.h has to be included.
1355         * decl2.c: Do not include rtl.h and expr.h.  Include splay-tree.h.
1356         * call.c: Do not include rtl.h and expr.h.
1357         * search.c: Do not include obstack.h and rtl.h.
1358         * friend.c: Do not include rtl.h and expr.h.
1359         * Make-lang.in: Update dependencies.
1360
1361 2010-05-25  Jakub Jelinek  <jakub@redhat.com>
1362
1363         PR c++/18249
1364         * parser.c (non_integral_constant): Add NIC_NONE.
1365         (required_token): Add RT_NONE.
1366         (cp_parser_unary_expression): Initialize non_constant_p
1367         to NIC_NONE.
1368         (cp_parser_asm_definition): Initialize missing to RT_NONE.
1369         (cp_parser_primary_expression, cp_parser_postfix_expression,
1370         cp_parser_cast_expression, cp_parser_binary_expression,
1371         cp_parser_functional_cast): Fix formatting.
1372
1373 2010-05-25  Shujing Zhao  <pearly.zhao@oracle.com>
1374         
1375         PR c++/18249
1376         * parser.c: Remove inclusion of dyn-string.h.
1377         (non_integral_constant): New enum.
1378         (name_lookup_error): New enum.
1379         (required_token): New enum.
1380         (cp_parser_required_error): New function.
1381         (cp_parser_require): Change the type of variable token_desc to
1382         required_token and use cp_parser_required_error.
1383         (cp_parser_require_keyword): Likewise.
1384         (cp_parser_error): Use gmsgid as parameter.
1385         (cp_parser_name_lookup_error): Change the type of variable desired to
1386         name_lookup_error and put the diagnostic in the full sentences. Change
1387         caller.
1388         (cp_parser_non_integral_constant_expression): Change the type of the
1389         variable thing to non_integral_constant and put the diagnostics in
1390         full sentences. Change caller.
1391
1392 2010-05-24  Eric Botcazou  <ebotcazou@adacore.com>
1393
1394         PR middle-end/44100
1395         * typeck.c (cp_build_unary_op): Fold offsetof-like computations.
1396
1397 2010-05-24  Joseph Myers  <joseph@codesourcery.com>
1398
1399         * error.c (cp_diagnostic_starter): Update call to
1400         diagnostic_build_prefix.
1401         (cp_print_error_function,
1402         print_instantiation_partial_context_line): Check show_column flag
1403         in context.
1404
1405 2010-05-24  Jason Merrill  <jason@redhat.com>
1406
1407         PR c++/41510
1408         * decl.c (check_initializer): Don't wrap an init-list in a
1409         TREE_LIST.
1410         * init.c (build_aggr_init): Don't assume copy-initialization if
1411         init has CONSTRUCTOR_IS_DIRECT_INIT.
1412         * call.c (build_new_method_call): Sanity check.
1413
1414 2010-05-24  Nathan Froyd  <froydnj@codesourcery.com>
1415
1416         * rtti.c (tinfo_base_init): Use build_constructor instead of
1417         build_constructor_from_list.  Don't cons a tree node for
1418         returning.
1419         (generic_initializer): Use build_constructor_single instead of
1420         build_constructor_from_list.
1421         (ptr_initializer): Use build_constructor instead of
1422         build_constructor_from_list
1423         (ptm_initializer): Likewise.
1424         (class_initializer): Likewise.  Take varargs instead of TRAIL.
1425         (get_pseudo_ti_init): Adjust calls to class_initializer.  Use
1426         build_constructor instead of build_constructor_from_list.
1427
1428 2010-05-22  Steven Bosscher  <steven@gcc.gnu.org>
1429
1430         * semantics.c: Include bitmap.h.
1431         * Make-lang.in: Update dependencies.
1432
1433 2010-05-22  Jan Hubicka  <jh@suse.cz>
1434
1435         * decl2.c (maybe_emit_vtables): Produce same comdat group when outputting
1436         comdat vtables.
1437         (cxx_callgraph_analyze_expr): Remove code marking vtables needed.
1438
1439 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
1440
1441         * cxx-pretty-print.c: Correct merge error.
1442
1443 2010-05-21  Joseph Myers  <joseph@codesourcery.com>
1444
1445         * error.c: Include tree-diagnostic.h and tree-pretty-print.h.
1446         (cp_print_error_function): Use diagnostic_abstract_origin macro.
1447         (cp_printer): Handle %K here using percent_K_format.
1448         * cxx-pretty-print.c: Include tree-pretty-print.h.
1449         * Make-lang.in (cp/error.o, cp/cxx-pretty-print.o): Update
1450         dependencies.
1451
1452 2010-05-21  Steven Bosscher  <steven@gcc.gnu.org>
1453
1454         * error.c, tree.c, typeck2.c, cxx-pretty-print.c, mangle.c:
1455         Clean up redundant includes.
1456
1457 2010-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
1458
1459         PR c++/30298
1460         * decl.c (xref_basetypes): Return false in case of ill-formed
1461         redefinition.
1462
1463 2010-05-19  Jason Merrill  <jason@redhat.com>
1464
1465         * call.c (reference_binding): Use cp_build_qualified_type_real
1466         and cp_type_quals consistently.
1467         (add_function_candidate): Likewise.
1468         (build_conditional_expr): Likewise.
1469         (convert_like_real): Likewise.
1470         (type_passed_as): Likewise.
1471         * class.c (add_method): Likewise.
1472         (same_signature_p): Likewise.
1473         (layout_class_type): Likewise.
1474         * decl.c (cxx_init_decl_processing): Likewise.
1475         (cp_fname_init): Likewise.
1476         (grokdeclarator): Likewise.
1477         * decl2.c (cp_reconstruct_complex_type): Likewise.
1478         * init.c (build_new_1): Likewise.
1479         * method.c (do_build_copy_constructor): Likewise.
1480         (implicitly_declare_fn): Likewise.
1481         * pt.c (tsubst_aggr_type): Likewise.
1482         (tsubst): Likewise.
1483         * rtti.c (init_rtti_processing): Likewise.
1484         (build_headof): Likewise.
1485         (build_dynamic_cast_1): Likewise.
1486         (tinfo_base_init): Likewise.
1487         (emit_support_tinfos): Likewise.
1488         * semantics.c (capture_decltype): Likewise.
1489         * tree.c (cv_unqualified): Likewise.
1490         * typeck.c (composite_pointer_type): Likewise.
1491         (string_conv_p): Likewise.
1492
1493         * mangle.c (write_CV_qualifiers_for_type): Tweak.
1494
1495         * call.c (initialize_reference): Use CP_TYPE_CONST_P.
1496         * decl.c (start_decl): Likewise.
1497         * semantics.c (finish_compound_literal): Likewise.
1498         * typeck.c (check_return_expr): Use CP_TYPE_VOLATILE_P.
1499         (cp_type_readonly): Remove.
1500         * cp-tree.h: Remove declaration.
1501
1502         * typeck.c (merge_types): Preserve memfn quals.
1503
1504         * decl.c (grokdeclarator): Don't check quals on fn type.
1505         * typeck.c (cp_apply_type_quals_to_decl): Likewise.
1506         * tree.c (cp_build_qualified_type_real): Simplify qualifier checking.
1507
1508         PR c++/44193
1509         * typeck.c (type_memfn_quals): New fn.
1510         (apply_memfn_quals): New fn.
1511         (cp_type_quals): Return TYPE_UNQUALIFIED for FUNCTION_TYPE.
1512         (cp_type_readonly): Use cp_type_quals.
1513         * cp-tree.h: Add declarations.
1514         * tree.c (cp_build_qualified_type_real): Don't set, but do
1515         preserve, quals on FUNCTION_TYPE.
1516         (strip_typedefs): Use apply_memfn_quals and type_memfn_quals.
1517         * decl.c (build_ptrmem_type): Likewise.
1518         (grokdeclarator): Likewise.
1519         (static_fn_type): Likewise.
1520         * decl2.c (change_return_type): Likewise.
1521         (cp_reconstruct_complex_type): Likewise.
1522         * pt.c (tsubst_function_type): Likewise.
1523         (unify): Likewise.
1524         (tsubst): Likewise.  Drop special FUNCTION_TYPE substitution code.
1525
1526 2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>
1527
1528         * tree.c (build_min_non_dep_call_vec): Update comment.
1529
1530 2010-05-17  Jason Merrill  <jason@redhat.com>
1531
1532         * call.c (struct z_candidate): Add explicit_targs field.
1533         (add_template_candidate_real): Set it.
1534         (build_over_call): Use it to control init-list warning.
1535
1536         PR c++/44157
1537         * call.c (build_over_call): Limit init-list deduction warning to
1538         cases where the argument is actually an init-list.
1539
1540         PR c++/44158
1541         * call.c (build_over_call): Don't do bitwise copy for move ctor.
1542
1543 2010-05-17  Dodji Seketeli  <dodji@redhat.com>
1544             Jason Merrill  <jason@redhat.com>
1545
1546         PR c++/44108
1547         * decl.c (compute_array_index_type): Call mark_rvalue_use.
1548
1549 2010-05-15  Jason Merrill  <jason@redhat.com>
1550
1551         * cp-tree.h (TYPE_NOEXCEPT_P): New macro.
1552         * except.c (begin_eh_spec_block): Use MUST_NOT_THROW_EXPR if
1553         TYPE_NOEXCEPT_P.
1554         (finish_eh_spec_block): Adjust.
1555
1556 2010-05-15  Jakub Jelinek  <jakub@redhat.com>
1557
1558         PR c++/44148
1559         * pt.c (tsubst): Unshare template argument.
1560
1561 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
1562
1563         * decl.c: Include tree-iterator.h, as fixup for tree-inline.h changes.
1564         * Make-lang.in: Fix dependencies accordingly.
1565
1566 2010-05-14  Jason Merrill  <jason@redhat.com>
1567
1568         C++ DR 475
1569         * except.c (build_throw): Simplify, adjust for DR 475.
1570
1571         PR c++/44127
1572         * except.c (dtor_nothrow): Return nonzero for type with
1573         trivial destructor.
1574
1575         PR c++/44127
1576         * cp-gimplify.c (gimplify_must_not_throw_expr): Use
1577         gimple_build_eh_must_not_throw.
1578
1579 2010-05-14  Martin Jambor  <mjambor@suse.cz>
1580
1581         * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef
1582         and define.
1583
1584 2010-05-14  Jonathan Wakely  <jwakely.gcc@gmail.com>
1585
1586         * call.c (build_new_method_call): Change warning text.
1587         * typeck2.c (build_functional_cast): Change error text.
1588
1589 2010-05-14  Shujing Zhao  <pearly.zhao@oracle.com>
1590
1591         PR c++/30566
1592         * name-lookup.c (pushdecl_maybe_friend): Avoid the warnings about
1593         shadowing the outer parameter or variables by the declaration of
1594         nested function in nested structure or class. Warn the shadowing by
1595         the declaration of nested lambda expression.
1596
1597 2010-05-13  Jason Merrill  <jason@redhat.com>
1598
1599         * typeck.c (cp_build_array_ref): Factor out from...
1600         (build_array_ref): ...here.  Drop complain parm.
1601         (build_new_op): Adjust.
1602         * class.c (build_vtbl_ref_1): Adjust.
1603         * decl2.c (grok_array_decl): Adjust.
1604         * cp-tree.h: Adjust prototypes.
1605
1606 2010-05-13  Jan Hubicka  <jh@suse.cz>
1607
1608         * decl.c (cp_finish_decl): Do not worry about used attribute.
1609
1610 2010-05-12  Jason Merrill  <jason@redhat.com>
1611
1612         * typeck.c (build_array_ref): Take complain parm.
1613         * cp-tree.h: Add it to prototype.
1614         * call.c (build_new_op): Pass it.
1615         * class.c (build_vtbl_ref): Pass it.
1616         * decl2.c (grok_array_decl): Pass it.
1617
1618         PR bootstrap/44048
1619         PR target/44099
1620         * cp-tree.def (NULLPTR_TYPE): Remove.
1621         * cp-tree.h (NULLPTR_TYPE_P): New.
1622         (SCALAR_TYPE_P): Use it.
1623         (nullptr_type_node): New.
1624         (cp_tree_index): Add CPTI_NULLPTR_TYPE.
1625         * decl.c (cxx_init_decl_processing): Call record_builtin_type on
1626         nullptr_type_node.
1627         * cvt.c (ocp_convert): Use NULLPTR_TYPE_P instead of NULLPTR_TYPE.
1628         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
1629         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
1630         * mangle.c (write_type): Likewise.
1631         * name-lookup.c (arg_assoc_type): Likewise.
1632         * typeck.c (build_reinterpret_cast_1): Likewise.
1633         * rtti.c (typeinfo_in_lib_p): Likewise.
1634         (emit_support_tinfos): Remove local nullptr_type_node.
1635
1636         * cp-tree.h (UNKNOWN_TYPE): Remove.
1637         * decl.c (cxx_init_decl_processing): Use LANG_TYPE instead.
1638         * error.c (dumy_type, dump_type_prefix, dump_type_suffix): Likewise.
1639         * typeck2.c (cxx_incomplete_type_diagnostic): Likewise.
1640         * class.c (instantiate_type): Check unknown_type_node rather than
1641         UNKNOWN_TYPE.
1642         * name-lookup.c (maybe_push_decl): Likewise.
1643         * rtti.c (get_tinfo_decl_dynamic): Likewise.
1644         (get_typeid): Likewise.
1645         * semantics.c (finish_offsetof): Likewise.
1646
1647         PR c++/20669
1648         * call.c (add_template_candidate_real): If deduction fails, still
1649         add the template as a non-viable candidate.
1650         (equal_functions): Handle template candidates.
1651         (print_z_candidate): Likewise.
1652         (print_z_candidates): Likewise.
1653         (build_new_function_call): Likewise.
1654
1655         * cp-tree.h (LOOKUP_LIST_ONLY): New.
1656         * call.c (add_candidates): Enforce it.
1657         (build_new_method_call): Try non-list ctor if no viable list ctor.
1658         (build_user_type_conversion_1): Likewise.
1659
1660         * call.c (add_candidates): Distinguish between type(x) and
1661         x.operator type().
1662         (convert_class_to_reference): Set LOOKUP_NO_CONVERSION.
1663         (build_new_method_call): Give better error for conversion op.
1664
1665         * call.c (add_candidates): Add first_arg and return_type parms.
1666         Add special constructor/conversion op handling.
1667         (convert_class_to_reference): Use it.
1668         (build_user_type_conversion_1): Likewise.
1669         (build_op_call): Likewise.
1670         (build_new_method_call): Likewise.
1671         (build_new_op): Adjust.
1672         (perform_overload_resolution): Adjust.
1673
1674 2010-05-11  Paolo Carlini  <paolo.carlini@oracle.com>
1675
1676         PR c++/34272
1677         PR c++/43630
1678         PR c++/34491
1679         * pt.c (process_partial_specialization): Return error_mark_node
1680         in case of unused template parameters in partial specialization.
1681
1682 2010-05-11  Jakub Jelinek  <jakub@redhat.com>
1683
1684         PR c++/44062
1685         * semantics.c (finish_expr_stmt): Don't call mark_exp_read here...
1686         * cvt.c (convert_to_void): ... but here.  If expr is a COMPOUND_EXPR,
1687         look at its second operand.
1688
1689 2010-05-10  Jason Merrill  <jason@redhat.com>
1690
1691         PR c++/44017
1692         * semantics.c (baselink_for_fns): Revert earlier change.
1693
1694         PR c++/44045
1695         * typeck.c (cp_build_modify_expr): Complain about assignment to
1696         array from init list.
1697
1698 2010-05-10  Fabien Chêne  <fabien.chene@gmail.com>
1699
1700         PR c++/43719
1701         * decl.c (check_initializer): strip array type before checking for
1702         uninitialized const or ref members.
1703
1704 2010-05-07  Fabien Chêne  <fabien.chene@gmail.com>
1705
1706         PR c++/43951
1707         * init.c (diagnose_uninitialized_cst_or_ref_member_1): Returns the
1708         error count. Emit errors only if compain is true.
1709         (build_new_1): Do not return error_mark_node if
1710         diagnose_uninitialized_cst_or_ref_member_1 does not diagnose any
1711         errors. Delay the check for user-provided constructor.
1712         (perform_member_init): Adjust.
1713         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Change the
1714         prototype.
1715
1716 2010-05-06  Magnus Fromreide  <magfr@lysator.liu.se>
1717             Jason Merrill  <jason@redhat.com>
1718
1719         Add support for C++0x nullptr.
1720         * cp-tree.def: Add NULLPTR_TYPE.
1721         * cp-tree.h: Add nullptr_node.
1722         (cp_tree_index): Add CPTI_NULLPTR.
1723         (SCALAR_TYPE_P): Add NULLPTR_TYPE.
1724         * call.c (null_ptr_cst_p): Handle nullptr.
1725         (standard_conversion): Likewise.
1726         (convert_arg_to_ellipsis): Likewise.
1727         * mangle.c (write_type): Likewise.
1728         * name-lookup.c (arg_assoc_type): Likewise.
1729         * parser.c (cp_parser_primary_expression): Likewise.
1730         * typeck.c (cp_build_binary_op): Likewise.
1731         (build_reinterpret_cast_1): Likewise.
1732         * error.c (dump_type): Likewise.
1733         (dump_type_prefix, dump_type_suffix): Likewise.
1734         * decl.c (cxx_init_decl_processing): Likewise.
1735         * cxx-pretty-print.c (pp_cxx_constant): Likewise.
1736         * cvt.c (ocp_convert): Likewise.
1737         * rtti.c (typeinfo_in_lib_p, emit_support_tinfos): Put
1738         nullptr_t tinfo in libsupc++.
1739
1740 2010-05-06  Jason Merrill  <jason@redhat.com>
1741
1742         * semantics.c (simplify_aggr_init_expr): Use INIT_EXPR.
1743
1744 2010-04-22  Jakub Jelinek <jakub@redhat.com>
1745             Dodji Seketeli <dodji@redhat.com>
1746
1747         PR c/18624
1748         * cp-tree.h (mark_exp_read, rvalue_use, lvalue_use, type_use):
1749         Declare ...
1750         * expr.c (mark_exp_read, rvalue_use, lvalue_use, type_use): ... new fns.
1751         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr): Call type_use.
1752         (decay_conversion, perform_integral_promotions): Call rvalue_use.
1753         (cp_build_unary_op): Call lvalue_use.
1754         * decl.c (unused_but_set_errorcount): New variable.
1755         (poplevel): Issue -Wunused-but-set-variable diagnostics.
1756         (duplicate_decls): Merge DECL_READ_P flags.
1757         (start_cleanup_fn): Set DECL_READ_P flag.
1758         (finish_function): Issue -Wunused-but-set-parameter diagnostics.
1759         * tree.c (rvalue): Call rvalue_use.
1760         * pt.c (convert_nontype_argument): Likewise.
1761         * semantics.c (finish_expr_stmt, finish_asm_stmt, finish_typeof,
1762         finish_decltype_type): Likewise.
1763         * call.c (convert_like_real) <ck_identity, ck_user>: Call rvalue use.
1764         (build_x_va_arg, build_new_method_call, build_over_call): Call lvalue_use
1765         or rvalue_use depending on the expr.
1766         * init.c (build_new, build_delete): Likewise.
1767         * rtti.c (build_typeid, build_dynamic_cast_1): Likewise.
1768
1769 2010-05-05  Jason Merrill  <jason@redhat.com>
1770
1771         PR c++/43787
1772         * cp-gimplify.c (cp_gimplify_expr): Remove copies of empty classes.
1773         * call.c (build_over_call): Don't try to avoid INIT_EXPR copies here.
1774
1775 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
1776
1777         PR c++/43028
1778         * pt.c (unify): Check each elt for error_mark_node.
1779
1780 2010-05-04  Jason Merrill  <jason@redhat.com>
1781
1782         PR c++/38064
1783         * typeck.c (cp_build_binary_op): Allow enums for <> as well.
1784
1785 2010-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
1786
1787         PR c++/43705
1788         * call.c (build_new_method_call): Return error_mark_node if fns is
1789         NULL_TREE.
1790
1791 2010-05-03  Dodji Seketeli  <dodji@redhat.com>
1792
1793         PR c++/43953
1794         * pt.c (most_specialized_class): Pretend we are processing
1795         a template decl during the call to coerce_template_parms.
1796
1797 2010-05-03  Jason Merrill  <jason@redhat.com>
1798
1799         PR c++/42810
1800         PR c++/43680
1801         * decl.c (finish_enum): Use the TYPE_MIN_VALUE and TYPE_MAX_VALUE
1802         from the selected underlying type unless -fstrict-enums.  Set
1803         ENUM_UNDERLYING_TYPE to have the restricted range.
1804         * cvt.c (type_promotes_to): Use ENUM_UNDERLYING_TYPE.
1805         * class.c (check_bitfield_decl): Likewise.
1806
1807 2010-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1808
1809         PR c++/43951
1810         * init.c (build_new_1): Revert the accidental checkin in
1811         revision 158918.
1812
1813 2010-04-30  Jason Merrill  <jason@redhat.com>
1814
1815         PR c++/43868
1816         * cxx-pretty-print.c (pp_cxx_decl_specifier_seq): Move pmf handling...
1817         (pp_cxx_type_specifier_seq): ...here.
1818
1819 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
1820
1821         * optimize.c, parser.c, mangle.c, cp-tree.h: Do not include varray.h.
1822         * Make-lang.in: Don't include varray.h dependency in CXX_TREE_H.
1823
1824 2010-04-30  Shujing Zhao  <pearly.zhao@oracle.com>
1825
1826         PR c++/43779
1827         * typeck.c (warn_args_num): New function.
1828         (convert_arguments): Use warn_args_num to print the diagnostic
1829         messages. 
1830
1831 2010-04-29  Fabien Chêne  <fabien.chene@gmail.com>
1832
1833         PR c++/43890
1834         * init.c (diagnose_uninitialized_cst_or_ref_member): check for
1835         user-provided constructor while recursing.
1836
1837 2010-04-28  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1838
1839         PR c++/9335
1840         * error.c (print_instantiation_partial_context_line): Handle
1841         recursive instantiation.
1842         (print_instantiation_partial_context): Likewise.
1843
1844 2010-04-27  Jason Merrill  <jason@redhat.com>
1845
1846         * init.c (perform_member_init): Check CLASS_TYPE_P.
1847
1848 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
1849
1850         PR c++/29043
1851         * init.c (perform_member_init): check for uninitialized const or
1852         reference members, including array types.
1853
1854 2010-04-24  Jason Merrill  <jason@redhat.com>
1855
1856         * tree.c (get_fns): Split out from get_first_fn.
1857         * cp-tree.h: Declare it.
1858         * search.c (shared_member_p): Use it.
1859         * semantics.c (finish_qualified_id_expr): Simplify.
1860         (finish_id_expression): Simplify.
1861
1862         * semantics.c (finish_non_static_data_member): Call maybe_dummy_object
1863         whenever object is NULL_TREE.  Don't do 'this' capture here.
1864         (finish_qualified_id_expr): Pass NULL_TREE.
1865         (finish_id_expression): Likewise.
1866         (lambda_expr_this_capture): Likewise.
1867
1868         * semantics.c (finish_qualified_id_expr): Use maybe_dummy_object
1869         rather than checking current_class_ref directly.
1870         (finish_call_expr): Likewise.
1871
1872         PR c++/43856
1873         * name-lookup.c (qualify_lookup): Disqualify lambda op().
1874         * class.c (current_nonlambda_class_type): New fn.
1875         * semantics.c (nonlambda_method_basetype): New.
1876         * cp-tree.h: Declare them.
1877         * tree.c (maybe_dummy_object): Handle implicit 'this' capture.
1878
1879         * semantics.c (baselink_for_fns): Correct BASELINK_BINFO.
1880
1881         PR c++/43875
1882         * semantics.c (lambda_return_type): Complain about
1883         braced-init-list.
1884
1885         PR c++/43790
1886         * tree.c (cv_unqualified): Handle error_mark_node.
1887
1888         PR c++/41468
1889         * call.c (convert_like_real) [ck_ambig]: Just return error_mark_node
1890         if we don't want errors.
1891
1892         PR c++/41468
1893         * class.c (convert_to_base): Add complain parameter.  Pass
1894         ba_quiet to lookup_base if we don't want errors.
1895         (build_vfield_ref): Pass complain to convert_to_base.
1896         * call.c (convert_like_real): Likewise.
1897         (initialize_reference): Likewise.
1898         (perform_direct_initialization_if_possible): Pass complain to
1899         convert_like_real.
1900         * cp-tree.h: Adjust.
1901
1902 2010-04-27  Fabien Chêne  <fabien.chene@gmail.com>
1903             Jason Merrill  <jason@redhat.com>
1904
1905         PR c++/42844
1906         * decl.c (check_for_uninitialized_const_var): Handle classes that need
1907         constructing, too.
1908         (check_initializer): Call it for classes that need constructing, too.
1909         * class.c (in_class_defaulted_default_constructor): New.
1910         * cp-tree.h: Declare it.
1911
1912 2010-04-20  Jason Merrill  <jason@redhat.com>
1913
1914         PR c++/9335
1915         * init.c (constant_value_1): Treat error_mark_node as a constant
1916         if DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P is set.
1917         * cvt.c (ocp_convert): Handle getting error_mark_node from
1918         integral_constant_value.
1919         * decl.c (compute_array_index_type): Likewise.
1920
1921 2010-04-20  Dodji Seketeli  <dodji@redhat.com>
1922
1923         PR c++/43800
1924         PR c++/43704
1925         * typeck.c (incompatible_dependent_types_p): If one of the
1926         compared types if not a typedef then honour their main variant
1927         equivalence.
1928
1929 2010-04-20  Jakub Jelinek  <jakub@redhat.com>
1930
1931         * cp-tree.h (TYPE_REF_IS_RVALUE): Remove.
1932
1933 2010-04-19  Dodji Seketeli  <dodji@redhat.com>
1934
1935         PR c++/43704
1936         * typeck.c (structural_comptypes): Test dependent typedefs
1937         incompatibility before testing for their main variant based
1938         equivalence.
1939
1940 2010-04-19  Jakub Jelinek  <jakub@redhat.com>
1941
1942         * cp-tree.h (SCOPED_ENUM_P, UNSCOPED_ENUM_P, SET_SCOPED_ENUM_P): Use
1943         ENUM_IS_SCOPED bit instead of TYPE_LANG_FLAG_5.
1944
1945 2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>
1946
1947         * decl.c (cxx_init_decl_processing): Remove second argument in call to
1948         build_common_tree_nodes.
1949
1950 2010-04-14  Jason Merrill  <jason@redhat.com>
1951
1952         PR c++/36625
1953         * parser.c (cp_parser_parenthesized_expression_list): Change
1954         is_attribute_list parm to int to indicate whether or not to
1955         handle initial identifier specially.
1956         (cp_parser_attribute_list): Use attribute_takes_identifier_p.
1957
1958 2010-04-13  Jason Merrill  <jason@redhat.com>
1959
1960         * call.c (type_decays_to): Check MAYBE_CLASS_TYPE_P instead of
1961         CLASS_TYPE_P.
1962         * parser.c (cp_parser_lambda_expression): Complain about lambda in
1963         unevaluated context.
1964         * pt.c (iterative_hash_template_arg): Don't crash on lambda.
1965
1966 2010-04-12  Jason Merrill  <jason@redhat.com>
1967
1968         PR c++/43641
1969         * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak
1970         return value directly.
1971
1972         * call.c (type_decays_to): Call cv_unqualified for non-class type.
1973
1974 2010-04-12  Fabien Chene  <fabien.chene@gmail.com>
1975
1976         PR c++/25811
1977         * cp-tree.h (diagnose_uninitialized_cst_or_ref_member): Declare.
1978         * init.c (build_new_1): Check for uninitialized const members and
1979         uninitialized reference members, when using new without
1980         new-initializer. Call diagnose_uninitialized_cst_or_ref_member.
1981         (diagnose_uninitialized_cst_or_ref_member): Define, call
1982         diagnose_uninitialized_cst_or_ref_member_1.
1983         (diagnose_uninitialized_cst_or_ref_member_1): New function.
1984
1985 2010-04-12  Richard Guenther  <rguenther@suse.de>
1986
1987         PR c++/43611
1988         * semantics.c (expand_or_defer_fn_1): Do not keep extern
1989         template inline functions.
1990
1991 2010-04-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1992
1993         PR c++/28584
1994         * typeck.c (cp_build_c_cast): Warn for casting integer to larger
1995         pointer type.
1996
1997 2010-04-07  Jason Merrill  <jason@redhat.com>
1998
1999         PR c++/43016
2000         * decl.c (start_preparsed_function): Do defer nested functions.
2001
2002         PR c++/11094, DR 408
2003         * cp-tree.h (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): New.
2004         * decl2.c (finish_static_data_member_decl): Set it.
2005         * decl.c (duplicate_decls): Propagate it.
2006         * pt.c (tsubst_decl): Don't substitute the domain of an array
2007         VAR_DECL if it's set.
2008         (regenerate_decl_from_template): Substitute it here.
2009         (type_dependent_expression_p): Return true if it's set.
2010         * semantics.c (finish_decltype_type): Instantiate such a variable.
2011         * typeck.c (cxx_sizeof_expr): Likewise.
2012         (strip_array_domain): New.
2013
2014         PR c++/43145
2015         * name-lookup.c (current_decl_namespace): Non-static.
2016         (pop_nested_namespace): Sanity check.
2017         * cp-tree.h: Declare current_decl_namespace.
2018         * decl.c (grokvardecl): Use it instead of current_namespace.
2019         (grokfndecl): Likewise.
2020
2021         PR c++/38392
2022         * pt.c (tsubst_friend_function): Instatiate a friend that has already
2023         been used.
2024
2025         * pt.c (print_template_statistics): New.
2026         * cp-tree.h: Declare it.
2027         * tree.c (cxx_print_statistics): Call it.
2028
2029         PR c++/41970
2030         * decl.c (grokvardecl): Tweak warning message.
2031         (grokfndecl): Likewise.
2032
2033 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
2034
2035         PR c++/42697
2036         *pt.c (tsubst_decl): Get the arguments of a specialization from
2037         the specialization template, not from the most general template.
2038
2039 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
2040
2041         PR c++/40239
2042         * typeck2.c (process_init_constructor_record):
2043         value-initialize members that are are not explicitely
2044         initialized.
2045
2046 2010-04-07  Jie Zhang  <jie@codesourcery.com>
2047
2048         PR c++/42556
2049         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
2050         when all of its elements are non-constant and have been split out.
2051
2052 2010-04-06  Taras Glek  <taras@mozilla.com>
2053             Jason Merrill  <jason@redhat.com>
2054
2055         * parser.c (cp_parser_class_specifier): Set class location to that
2056         of IDENTIFIER_NODE instead of '{' when possible.
2057         * semantics.c (begin_class_definition): Do not overide locations
2058         with less precise ones.
2059
2060 2010-04-06  Jason Merrill  <jason@redhat.com>
2061
2062         PR c++/43648
2063         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
2064
2065         PR c++/43621
2066         * pt.c (maybe_update_decl_type): Check the return value from
2067         push_scope.
2068
2069 2010-04-01  Jason Merrill  <jason@redhat.com>
2070
2071         * decl.c (next_initializable_field): No longer static.
2072         * cp-tree.h: Declare it.
2073         * call.c (build_aggr_conv): Fail if there are more initializers
2074         than initializable fields.
2075
2076         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
2077         instead of void_zero_node.
2078
2079 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
2080
2081         PR c++/43558
2082         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
2083         * pt.c (end_template_parm_list): Store sibling template parms of
2084         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
2085         (push_template_decl_real): Don't store the containing template decl
2086         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
2087         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
2088         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
2089         Simplify the logic.
2090
2091 2010-03-30  Jason Merrill  <jason@redhat.com>
2092
2093         PR c++/43076
2094         * pt.c (push_template_decl_real): Deal better with running out of
2095         scopes before running out of template parms.
2096
2097         PR c++/41185
2098         PR c++/41786
2099         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
2100         function parameter context.  Don't print an error if parsing
2101         tentatively.
2102
2103         PR c++/43559
2104         * pt.c (more_specialized_fn): Don't control cv-qualifier check
2105         with same_type_p.
2106
2107 2010-03-26  Jason Merrill  <jason@redhat.com>
2108
2109         PR c++/43509
2110         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
2111         c++0x mode, but not other type-names.
2112
2113 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
2114
2115         PR c++/43327
2116         * pt.c (add_to_template_args): Support NULL ARGS;
2117         (most_specialized_class): call coerce_template_parms on
2118         template arguments passed to get_class_bindings. Use
2119         add_to_template_args.
2120         (unify): Handle VAR_DECLs.
2121
2122 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
2123
2124         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
2125         into int.
2126         * pt.c (get_template_parms_at_level): Adjust.
2127
2128 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
2129
2130         PR c++/43206
2131         * cp-tree.h (get_template_parms_at_level): Declare ...
2132         * pt.c (get_template_parms_at_level): ... new function.
2133         * typeck.c (get_template_parms_of_dependent_type): If a template
2134         type parm's DECL_CONTEXT isn't yet set, get its siblings from
2135         current_template_parms. Use get_template_parms_at_level. Remove
2136         useless test.
2137         (incompatible_dependent_types_p): If we get empty parms from just one
2138         of the template type parms we are comparing then the template parms are
2139         incompatible.
2140
2141 2010-03-24  Jason Merrill  <jason@redhat.com>
2142
2143         PR c++/43502
2144         * parser.c (make_declarator): Initialize id_loc.
2145         (cp_parser_lambda_declarator_opt): And set it.
2146
2147 2010-03-23  Jason Merrill  <jason@redhat.com>
2148
2149         Make lambda conversion op and op() non-static.
2150         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
2151         Also add the thunk function returned by the conversion op.
2152         Mark the conversion deleted if the op() is variadic.
2153         * decl2.c (mark_used): Give helpful message about deleted conversion.
2154         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
2155         * semantics.c (finish_this_expr): Adjust.
2156         * mangle.c (write_closure_type_name): Adjust.
2157         * decl.c (grok_op_properties): Don't allow it.
2158         * call.c (build_user_type_conversion_1): No static conversion ops.
2159         (build_op_call): Or op().
2160
2161         * decl2.c (change_return_type): Fix 'this' quals.
2162
2163 2010-03-22  Jason Merrill  <jason@redhat.com>
2164
2165         PR c++/43333
2166         * tree.c (pod_type_p): Use old meaning in C++98 mode.
2167
2168         PR c++/43281
2169         * pt.c (contains_auto_r): New fn.
2170         (do_auto_deduction): Use it.
2171         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
2172
2173 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
2174
2175         PR c++/43081:
2176         * decl2.c (grokfield): Handle invalid initializers for member
2177         functions.
2178
2179 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
2180
2181         PR c++/43375
2182         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
2183         is NULL.
2184         * decl2.c (vague_linkage_p): Likewise.
2185
2186 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
2187
2188         PR c++/43418
2189         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
2190         false, in the cp_parser_expression_statement call.
2191
2192 2010-03-05  Jason Merrill  <jason@redhat.com>
2193
2194         * mangle.c (mangle_decl): Give name collision error even without
2195         ASM_OUTPUT_DEF.
2196
2197 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
2198
2199         * pt.c (process_partial_specialization): Use error_n instead of
2200         error.
2201
2202 2010-03-03  Jason Merrill  <jason@redhat.com>
2203
2204         PR c++/12909
2205         * mangle.c (mangle_decl): Handle VAR_DECL, too.
2206
2207 2010-03-03  Jason Merrill  <jason@redhat.com>
2208
2209         PR c++/12909
2210         * mangle.c: Include cgraph.h.
2211         (mangle_decl): If the mangled name will change in a later
2212         ABI version, make the later mangled name an alias.
2213         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
2214         * Make-lang.in (mangle.o): Depend on cgraph.h.
2215         * method.c (make_alias_for): Handle VAR_DECL, too.
2216         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
2217         * tree.c (no_linkage_check): Adjust.
2218         * decl.c (maybe_commonize_var): Adjust.
2219         * cp-tree.h: Adjust.
2220
2221 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
2222
2223         * pt.c (redeclare_class_template): Use error_n and inform_n.
2224
2225 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
2226
2227         PR c++/42748
2228         * cp-tree.h (push_tinst_level): Declare.
2229         (pop_tinst_level): Likewise.
2230         * pt.c (push_tinst_level): Give it external linkage.
2231         (pop_tinst_level): Likewise.
2232         * mangle.c (mangle_decl_string): Set the source location to that
2233         of the decl while mangling.
2234
2235 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
2236
2237         PR c++/42054
2238         * pt.c (redeclare_class_template): Return false if there are erroneous
2239         template parameters.
2240
2241 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2242
2243         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
2244         -ftemplate-depth=.
2245
2246 2010-02-24  Jason Merrill  <jason@redhat.com>
2247
2248         PR c++/12909
2249         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
2250
2251         * class.c (layout_class_type): Don't give -Wabi warning for a bug
2252         in a previous ABI version.
2253
2254 2010-02-23  Jason Merrill  <jason@redhat.com>
2255
2256         PR c++/43143
2257         * typeck2.c (digest_init_r): Accept value init of array.
2258
2259 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2260
2261         PR c++/43126
2262         * typeck.c (convert_arguments): Update error message.
2263
2264 2010-02-22  Mike Stump  <mikestump@comcast.net>
2265
2266         PR c++/43125
2267         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
2268
2269 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2270
2271         PR c++/23510
2272         * error.c (print_instantiation_partial_context_line): New.
2273         (print_instantiation_partial_context): Print at most 12 contexts,
2274         skip the rest with a message.
2275
2276 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
2277
2278         PR c++/42824
2279         * pt.c (lookup_template_class): Better support of specialization
2280         of member of class template implicit instantiation.
2281
2282 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2283
2284         PR c++/35669
2285         * call.c (conversion_null_warnings): Replace -Wconversion with
2286         -Wconversion-null.
2287         * cvt.c (build_expr_type_conversion): Likewise.
2288
2289 2010-02-18  Jason Merrill  <jason@redhat.com>
2290
2291         PR c++/42837
2292         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
2293
2294         PR c++/43108
2295         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
2296         C build_binary_op.
2297         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
2298         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
2299
2300         PR c++/43070
2301         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
2302
2303         PR c++/26261
2304         PR c++/43101
2305         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
2306         (maybe_update_decl_type): New fn.
2307         * parser.c (cp_parser_init_declarator): Use it.
2308
2309         PR c++/43109
2310         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
2311
2312 2010-02-17  Jason Merrill  <jason@redhat.com>
2313
2314         PR c++/43075
2315         * call.c (build_over_call): Don't create zero-sized assignments.
2316         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
2317         * cp-objcp-common.c (cp_expr_size): Remove.
2318         * cp-tree.h: Remove prototype.
2319
2320         PR c++/43069
2321         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
2322         decl we looked up doesn't match.
2323
2324         PR c++/43093
2325         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
2326         have an INIT_EXPR anymore.
2327
2328         PR c++/43079
2329         * pt.c (convert_nontype_argument): Change assert to test.
2330
2331 2010-02-16  Jason Merrill  <jason@redhat.com>
2332
2333         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
2334
2335         PR c++/43031
2336         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
2337         VIEW_CONVERT_EXPR for conversions between structural equality types
2338         that the back end can't tell are the same.
2339
2340         PR c++/43036
2341         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
2342         cv-quals from element here.
2343         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
2344
2345 2010-02-14  Jason Merrill  <jason@redhat.com>
2346
2347         PR c++/41997
2348         * semantics.c (finish_compound_literal): Use
2349         cp_apply_type_quals_to_decl when creating a static variable.
2350
2351 2010-02-12  Jason Merrill  <jason@redhat.com>
2352
2353         PR c++/43024
2354         * name-lookup.h (current_binding_level): Check for null
2355         cp_function_chain.
2356
2357 2010-02-12  Jason Merrill  <jason@redhat.com>
2358
2359         PR c++/43054
2360         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
2361
2362 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
2363
2364         PR c++/43033
2365         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
2366         instead of x.
2367
2368 2010-02-10  Jason Merrill  <jason@redhat.com>
2369
2370         PR c++/41896
2371         * semantics.c (outer_lambda_capture_p): Revert.
2372         (add_capture): Only finish_member_declaration if
2373         we're in the lambda class.
2374         (register_capture_members): New.
2375         * cp-tree.h: Declare it.
2376         * parser.c (cp_parser_lambda_expression): Call it.
2377
2378 2010-02-10  Jason Merrill  <jason@redhat.com>
2379
2380         PR c++/41896
2381         * semantics.c (outer_lambda_capture_p): Use current_function_decl
2382         instead of current_class_type.
2383
2384 2010-02-10  Jason Merrill  <jason@redhat.com>
2385
2386         PR c++/42983, core issue 906
2387         * method.c (defaultable_fn_check): Check virtualness.
2388
2389 2010-02-10  Jason Merrill  <jason@redhat.com>
2390
2391         PR c++/43016
2392         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
2393
2394 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
2395
2396         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
2397         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
2398         translation.
2399         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
2400         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
2401         (cp_parser_parameter_declaration)
2402         (cp_parser_exception_specification_opt)
2403         (cp_parser_exception_declaration): Likewise.
2404         * pt.c (check_default_tmpl_args): Likewise.
2405         * search.c (lookup_field_r): Likewise.
2406
2407 2010-02-09  Jason Merrill  <jason@redhat.com>
2408
2409         PR c++/42399
2410         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
2411
2412 2010-02-09  Jason Merrill  <jason@redhat.com>
2413
2414         PR c++/42370
2415         * decl2.c (change_return_type): New fn.
2416         * semantics.c (apply_lambda_return_type): Use it.
2417         * cp-tree.h: Declare it.
2418
2419 2010-02-05  Richard Guenther  <rguenther@suse.de>
2420
2421         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
2422         * cp-lang.c: Include gt-cp-cp-lang.h.
2423         * config-lang.in (gtfiles): Add cp/cp-lang.c.
2424
2425 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
2426
2427         PR c++/42915
2428         * typeck.c (get_template_parms_of_dependent_type): Try getting
2429         the template parameters fromt the type itself first.
2430
2431 2010-02-03  Jason Merrill  <jason@redhat.com>
2432
2433         PR c++/4926
2434         PR c++/38600
2435         * mangle.c (write_unqualified_id): Split out from write_expression.
2436         (write_unqualified_name): Call it.
2437         (write_member_name): Likewise.
2438         (write_expression): Support TEMPLATE_ID_EXPR.
2439         Disambiguate operator names.
2440
2441         PR c++/12909
2442         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
2443         -fabi-version=4.
2444
2445 2010-02-02  Jason Merrill  <jason@redhat.com>
2446
2447         PR c++/41090
2448         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
2449         * optimize.c (clone_body): Remap their initializers when making base
2450         variants.
2451         (maybe_clone_body): Complain if multiple clones aren't safe.
2452
2453 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
2454
2455         PR c++/42758
2456         PR c++/42634
2457         PR c++/42336
2458         PR c++/42797
2459         PR c++/42880
2460         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
2461         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
2462         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
2463         * pt.c (coerce_template_parms, type_unification_real,
2464         expand_template_argument_pack, coerce_template_parameter_pack):
2465         Set the non default template args count.
2466         (current_template_args): Always set non defaulted
2467         template args count when compiled with --enable-checking
2468         (tsubst_template_args, type_unification_real): Propagate the non
2469         defaulted template args count.
2470         * error.c (get_non_default_template_args_count): Renamed
2471         count_non_default_template_args into this. Don't calculate the
2472         non default template argument count anymore. Use the new
2473         accessor macros above to get it.
2474         (dump_template_argument_list, dump_type, dump_decl,
2475         dump_template_parms): Adjust.
2476         * parser.c (cp_parser_template_argument_list): Always set defaulted
2477         template args count when compiled with --enable-checking.
2478
2479 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
2480
2481         * decl.c (redeclaration_error_message): Wrap the return messages into
2482         G_() for easy translation.
2483
2484 2010-01-28  Jason Merrill  <jason@redhat.com>
2485
2486         PR c++/42880
2487         * semantics.c (begin_class_definition): Don't use type_as_string.
2488
2489 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
2490
2491         PR c++/42713
2492         PR c++/42820
2493         * typeck.c (get_template_parms_of_dependent_type): Factorized
2494         this out of incompatible_template_type_parms_p
2495         (incompatible_dependent_types_p): Renamed
2496         incompatible_template_type_parms_p into this. Make it detect
2497         two incompatible dependent typedefs too.
2498         (structural_comptypes): Use incompatible_dependent_types_p.
2499         * pt.c (get_template_info):
2500         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
2501
2502 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
2503             Jason Merrill  <jason@redhat.com>
2504
2505         * mangle.c (write_type): Mangle transparent record as member type.
2506         * semantics.c (begin_class_definition): Recognize decimal classes
2507         and set TYPE_TRANSPARENT_AGGR.
2508
2509 2010-01-20  Jason Merrill  <jason@redhat.com>
2510
2511         PR c++/42338
2512         * mangle.c (write_expression): Handle tree codes that have extra
2513         arguments in the middle-end.
2514
2515 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
2516
2517         PR c++/42038
2518         * except.c (expand_start_catch_block): Deal correctly with
2519         do_begin_catch returning error_mark_node.
2520
2521 2010-01-20  Jason Merrill  <jason@redhat.com>
2522
2523         PR c++/41788
2524         * class.c (layout_class_type): Set packed_maybe_necessary for packed
2525         non-PODs.
2526
2527         PR c++/41920
2528         * semantics.c (build_lambda_object): Call mark_used on captured
2529         variables.
2530
2531         PR c++/40750
2532         * decl.c (grokdeclarator): Clear type_quals for a member function
2533         declared using a typedef.  Don't complain about adding cv-quals
2534         to a function typedef in C++0x mode.
2535
2536 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
2537
2538         * decl.c (create_array_type_for_decl): Remove set but not used
2539         variable error_msg.  Remove break stmts after return stmts.
2540
2541 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
2542
2543         * error.c (dump_template_parms, count_non_default_template_args):
2544         Revert fix of PR c++/42634.
2545
2546 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
2547
2548         PR c++/42634
2549         * error.c (dump_template_parms): Use innermost template
2550         arguments before calling count_non_default_template_args.
2551         (count_non_default_template_args): We are being called with
2552         template innermost arguments now. There is no need to ensure
2553         that again.
2554
2555 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
2556
2557         PR c++/42766
2558         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
2559
2560 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
2561
2562         PR c++/42697
2563         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
2564
2565 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
2566
2567         PR c++/42697
2568         *pt.c (tsubst_decl): Get the arguments of a specialization from
2569         the specialization template, not from the most general template.
2570
2571 2010-01-16  Jason Merrill  <jason@redhat.com>
2572
2573         PR c++/42761
2574         * semantics.c (finish_decltype_type): Within a template, treat
2575         unresolved CALL_EXPR as dependent.
2576
2577 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
2578
2579         * error.c (dump_template_parms,count_non_default_template_args):
2580         Revert changes of PR c++/42634.
2581
2582 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
2583
2584         PR middle-end/42674
2585         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
2586         functions with noreturn attribute.
2587
2588 2010-01-14  Jason Merrill  <jason@redhat.com>
2589
2590         PR c++/42701
2591         * call.c (build_new_method_call): Don't free the vec here.
2592
2593         PR c++/42655
2594         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
2595
2596 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
2597
2598         PR c++/42634
2599         * error.c (dump_template_parms): Use innermost template
2600         arguments before calling count_non_default_template_args.
2601         (count_non_default_template_args): We are being called with
2602         template innermost arguments now. There is no need to ensure
2603         that again.
2604
2605 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
2606
2607         c++/40155
2608         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
2609         arguments that were previously deduced.
2610
2611 2010-01-05  Jason Merrill  <jason@redhat.com>
2612
2613         * pt.c (unify_pack_expansion): Handle deduction from init-list.
2614         * call.c (build_over_call): Don't complain about it.
2615
2616 2010-01-04  Jason Merrill  <jason@redhat.com>
2617
2618         PR c++/42555
2619         * pt.c (tsubst_decl): Don't apply type attributes in place.
2620
2621         PR c++/42567
2622         * semantics.c (describable_type): Remove decltype comment and
2623         semantics.
2624
2625
2626 \f
2627 Copyright (C) 2010 Free Software Foundation, Inc.
2628
2629 Copying and distribution of this file, with or without modification,
2630 are permitted in any medium without royalty provided the copyright
2631 notice and this notice are preserved.
2632