OSDN Git Service

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