OSDN Git Service

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