OSDN Git Service

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