OSDN Git Service

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