OSDN Git Service

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