OSDN Git Service

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