OSDN Git Service

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