OSDN Git Service

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