OSDN Git Service

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