OSDN Git Service

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