OSDN Git Service

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