OSDN Git Service

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