OSDN Git Service

* semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2011-06-09  Jason Merrill  <jason@redhat.com>
2
3         * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
4
5 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
6
7         PR c++/29003
8         * decl.c (grokdeclarator): Reject operator names in typedefs.
9
10 2011-06-08  Jason Merrill  <jason@redhat.com>
11
12         PR c++/49107
13         * cp-tree.def (DEFERRED_NOEXCEPT): New.
14         * cp-tree.h (struct tree_deferred_noexcept): New.
15         (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
16         (DEFERRED_NOEXCEPT_SPEC_P): New.
17         (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
18         (union lang_tree_node): Add tree_deferred_noexcept.
19         (maybe_instantiate_noexcept): Declare.
20         * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
21         * error.c (dump_exception_spec): Likewise.
22         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
23         * ptree.c (cxx_print_xnode): Likewise.
24         * tree.c (cp_tree_equal): Likewise.
25         * decl.c (cp_tree_node_structure): Likewise.
26         (duplicate_decls): Call maybe_instantiate_noexcept.
27         * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
28         (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
29         DEFERRED_NOEXCEPT_SPEC_P.
30         * typeck2.c (merge_exception_specifiers): Likewise.
31         * decl2.c (mark_used): Call maybe_instantiate_noexcept.
32         * method.c (process_subob_fn, defaulted_late_check): Likewise.
33         * pt.c (tsubst_exception_specification): Add defer_ok parm.
34         Build DEFERRED_NOEXCEPT.
35         (maybe_instantiate_noexcept): New.
36         (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
37         * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
38
39         * semantics.c (potential_constant_expression_1): Handle destructor
40         call.
41
42 2011-06-08  Jakub Jelinek  <jakub@redhat.com>
43
44         * cp-tree.h (struct tinst_level): Add chain_next GTY
45         markup.
46
47 2011-06-08  Jason Merrill  <jason@redhat.com>
48
49         PR c++/49322
50         * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
51         if a pending_template entry is pointing at it.
52
53 2011-06-07  Jason Merrill  <jason@redhat.com>
54
55         PR c++/48969
56         PR c++/44175
57         * error.c (subst_to_string): New.
58         (cp_printer): Use it for 'S'.
59         (print_instantiation_partial_context_line): Handle subst context.
60         * pt.c (push_tinst_level): Handle subst context.
61         (deduction_tsubst_fntype): Don't track specific substitutions.
62         Use push_tinst_level.
63
64         * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
65         (fn_type_unification): Don't call push_deduction_access_scope here.
66
67 2011-06-06  Jason Merrill  <jason@redhat.com>
68
69         PR c++/48780
70         * typeck.c (perform_integral_promotions): Don't promote scoped enums.
71         * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
72
73 2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>,
74
75         PR obj-c++/48275
76         * parser.c (cp_parser_objc_at_property_declaration): Allow setter
77         and getter names to use all the allowed method names.
78
79 2011-06-06  Jason Merrill  <jason@redhat.com>
80
81         PR c++/49298
82         * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
83
84         PR objc++/49221
85         * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
86         at_function_scope_p.
87
88         PR c++/49134
89         * tree.c (build_target_expr): Deal with ARM ABI tweaks.
90
91 2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
92
93         * init.c (build_delete): Warn when deleting type with non-virtual
94         destructor.
95
96 2011-06-03  Jakub Jelinek  <jakub@redhat.com>
97
98         PR c++/49276
99         * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
100         DECL_CONTEXT.
101
102 2011-06-01  Jason Merrill  <jason@redhat.com>
103
104         * pt.c (build_non_dependent_expr): Remove special handling of
105         REFERENCE_REF_P.
106
107         PR c++/44175
108         * pt.c (template_args_equal): Handle one arg being NULL_TREE.
109         (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
110
111         PR c++/49253
112         * typeck2.c (build_x_arrow): Don't use build_min_nt.
113
114 2010-05-31  Fabien ChĂȘne  <fabien@gcc.gnu.org>
115
116         PR c++/48010
117         * name-lookup.c (supplement_binding_1): If the old binding was a
118         type name, also check that the DECL actually refers to the same
119         type or is not a type.
120
121 2011-05-31  Jason Merrill  <jason@redhat.com>
122
123         PR c++/44870
124         * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR.  Handle
125         ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
126         (build_min_non_dep): Preserve reference refs.
127         (build_min_non_dep_call_vec): Likewise
128
129 2011-05-30  Jakub Jelinek  <jakub@redhat.com>
130
131         PR c++/49223
132         * semantics.c (finish_omp_clauses): Call require_complete_type
133         even for copyin/copyprivate clauses.  Only call
134         cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
135
136 2011-05-28  Jason Merrill  <jason@redhat.com>
137
138         PR c++/46124
139         * parser.c (cp_parser_lambda_expression): Improve error recovery.
140         (cp_parser_lambda_declarator_opt): Likewise.  Return bool.
141
142 2011-05-27  Jason Merrill  <jason@redhat.com>
143
144         PR c++/47277
145         * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
146         after we see the ~.
147
148         * mangle.c (mangle_decl_string): Make sure we don't try to mangle
149         templates.
150
151         PR c++/47049
152         * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
153         * decl.c (start_preparsed_function): Don't call comdat_linkage for
154         a template.
155
156         PR c++/47132
157         * mangle.c (write_expression): Handle MODOP_EXPR.
158
159         PR c++/47277
160         * parser.c (cp_parser_unqualified_id): Don't check
161         constructor_name_p for enums.
162
163         PR c++/47687
164         * pt.c (dependent_type_p_r): Avoid infinite recursion.
165
166         PR c++/48284
167         * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
168         with INDIRECT_REF of REFERENCE_TYPE.
169
170         PR c++/49181
171         * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
172
173 2011-05-27  Nathan Froyd  <froydnj@codesourcery.com>
174
175         * cp-tree.h (building_stmt_tree): Delete.
176         * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
177         (build_aggr_init_full_exprs): Call building_stmt_list_p
178         instead of building_stmt_tree.
179         (initialize_local_var): Likewise.
180         (finish_function): Likewise.
181         * decl2.c (finish_anon_union): Likewise.
182         * init.c (begin_init_stmts): Likewise.
183         (finish_init_stmts): Likewise.
184         (expand_aggr_init_1): Likewise.
185         * name-lookup.c (do_local_using_decl): Likewise.
186         (do_namespace_alias): Likewise.
187         (do_using_directive): Likewise.
188         (cp_emit_debug_info_for_using): Likewise.
189         * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
190
191 2011-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
192
193         PR c++/42056
194         * typeck2.c (build_functional_cast): Complain early for invalid uses
195         of 'auto' and set type to error_mark_node.
196
197 2011-05-26  Jason Merrill  <jason@redhat.com>
198
199         PR c++/47721
200         * parser.c (cp_parser_member_declaration): Allow friend T.
201         * friend.c (make_friend_class): Ignore non-classes.
202         * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
203
204         DR 1004
205         * pt.c (convert_template_argument): Don't complain about using
206         injected-class-name as template template argument.
207
208         PR c++/47956
209         * decl.c (check_static_variable_definition): Now static.
210         (cp_finish_decl): Call it here.
211         (grokdeclarator): Not here.
212         * pt.c (instantiate_class_template_1): Or here.
213         * cp-tree.h: Don't declare it.
214
215 2011-05-26  Janis Johnson  <janis187@us.ibm.com>
216             Nathan Froyd  <froydnj@codesourcery.com>
217
218         PR c++/2288
219         PR c++/18770
220         * name-lookup.h (enum scope_kind): Add sk_cond.
221         * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
222         Detect and report error for redeclaration from for-init or if
223         or switch condition.
224         (begin_scope): Handle sk_cond.
225         * semantics.c (begin_if_stmt): Use sk_cond.
226         (begin switch_stmt): Ditto.
227
228 2011-05-26  Jason Merrill  <jason@redhat.com>
229
230         PR c++/48211
231         * name-lookup.h (cp_class_binding): Make base a pointer.
232         * name-lookup.c (new_class_binding): Adjust.
233         (poplevel_class): Adjust.
234
235         PR c++/48424
236         * decl.c (grokparms): Function parameter packs don't need to
237         go at the end.
238         * pt.c (type_unification_real): But they aren't deduced otherwise.
239
240 2011-05-25  Jason Merrill  <jason@redhat.com>
241
242         PR c++/48536
243         * decl.c (build_enumerator): If incremented enumerator won't fit in
244         previous integral type, find one it will fit in.
245
246         PR c++/48599
247         * decl.c (create_array_type_for_decl): Complain about array of auto.
248
249         PR c++/44994
250         PR c++/49156
251         * error.c (dump_template_bindings): Set processing_template_decl
252         for a partial instantiation.
253
254         PR c++/45401
255         * decl.c (grokdeclarator): Don't change type when adding rvalue ref
256         to another reference type.
257
258         PR c++/44311
259         * decl.c (case_conversion): New.
260         (finish_case_label): Use it.
261
262         * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
263
264         PR c++/45698
265         * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
266
267         PR c++/46005
268         * decl.c (grokdeclarator): Complain about auto typedef.
269
270         PR c++/46245
271         * decl.c (grokdeclarator): Complain later for auto parameter.
272         * pt.c (splice_late_return_type): Handle use in a template
273         type-parameter.
274
275         PR c++/46696
276         * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
277
278         PR c++/47184
279         * parser.c (cp_parser_parameter_declaration): Recognize
280         list-initialization.
281         (cp_parser_direct_declarator): Check for the closing
282         paren before parsing definitely.
283
284         PR c++/48935
285         * parser.c (cp_parser_constructor_declarator_p): Don't check
286         constructor_name_p for enums.
287         (cp_parser_diagnose_invalid_type_name): Correct error message.
288
289         PR c++/45418
290         * init.c (perform_member_init): Handle list-initialization
291         of array of non-trivial class type.
292
293         PR c++/45080
294         * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
295         * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
296
297         PR c++/48292
298         * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
299         function parameter pack.
300         (tsubst_pack_expansion): Likewise.
301
302         * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
303         TS_COMMON.
304
305 2011-05-25  Jakub Jelinek  <jakub@redhat.com>
306
307         * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
308         as TS_TYPED.
309
310         PR c++/49136
311         * semantics.c (cxx_eval_bit_field_ref): Handle the
312         case when BIT_FIELD_REF doesn't cover only a single field.
313
314 2011-05-24  Jason Merrill  <jason@redhat.com>
315
316         PR c++/49042
317         * pt.c (get_mostly_instantiated_function_type): Use
318         push_deferring_access_checks rather than set flag_access_control.
319
320 2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>,
321
322         * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
323         syntax error in declaring an ObjC instance variable.
324
325 2011-05-24  Jason Merrill  <jason@redhat.com>
326
327         PR c++/48884
328         * class.c (pushclass): Accept NULL argument.
329         (popclass): Deal with popping null class.
330         * pt.c (push_access_scope, pop_access_scope): Use them rather than
331         push_to_top_level/pop_from_top_level.
332         (push_deduction_access_scope, pop_defarg_context): New.
333         (fn_type_unification): Use them.
334         * name-lookup.c (lookup_name_real_1): Check current_class_type.
335
336 2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
337
338         * decl.c (grokdeclarator): Use current_class_name.
339
340 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
341
342         * Make-lang.in (GXX_OBJS): Remove prefix.o.
343         (g++$(exeext)): Use libcommon-target.a.
344         (CXX_C_OBJS): Remove prefix.o.
345
346 2011-05-23  Jason Merrill  <jason@redhat.com>
347
348         * pt.c (tsubst_copy_and_build): Use current_class_name.
349
350         PR c++/49102
351         * call.c (convert_arg_to_ellipsis): Call force_rvalue.
352
353         PR c++/49105
354         * typeck.c (cp_build_c_cast): Don't strip cv-quals when
355         converting to reference.
356         (build_static_cast_1): Update for glvalues.
357
358         PR c++/49105
359         * typeck.c (build_const_cast_1): Handle rvalue references.
360
361         PR c++/47263
362         * decl.c (use_eh_spec_block): Do use an EH spec block for a
363         lambda op().
364
365         PR c++/49058
366         * call.c (splice_viable): Be strict in templates.
367
368         PR c++/47336
369         * error.c (dump_template_bindings): Suppress access control.
370
371         PR c++/47544
372         * pt.c (instantiate_decl): Handle =default.
373
374         PR c++/48617
375         * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
376
377 2011-05-23  Nathan Froyd  <froydnj@codesourcery.com>
378
379         * call.c (build_over_call): Tweak call to check_function_arguments.
380         * typeck.c (cp_build_function_call_vec): Likewise.
381
382 2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
383
384         PR c++/18016
385         * init.c (perform_member_init): Check for self-initialization.
386
387 2011-05-22  Jason Merrill  <jason@redhat.com>
388
389         PR c++/48647
390         * typeck.c (composite_pointer_type_r): Return error_mark_node
391         on error in SFINAE context.
392
393 2011-05-20  Jason Merrill  <jason@redhat.com>
394
395         PR c++/48945
396         * decl.c (grokdeclarator): Don't add set const function-cv-qual
397         for constexpr fns to memfn_quals, just add it to the type.
398         (revert_static_member_fn): Don't complain about quals.
399         (check_static_quals): New.
400         (grokfndecl): Call it.
401         (start_preparsed_function): Don't call revert_static_member_fn.
402
403         PR c++/48945
404         * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
405
406         PR c++/48780
407         * cvt.c (type_promotes_to): Don't promote scoped enums.
408
409         PR c++/49066
410         * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
411
412         PR c++/48873
413         * tree.c (stabilize_expr): Fix typo.
414
415         DR 1073
416         PR c++/49082
417         * typeck.c (comp_except_specs): noexcept(false) is not compatible
418         with throw(type-list).
419         * typeck2.c (merge_exception_specifiers): noexcept(false)
420         beats any more limited specification.
421
422         PR c++/24163
423         PR c++/29131
424         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
425         unqualified lookup.
426         * semantics.c (perform_koenig_lookup): Add complain parm.
427         * cp-tree.h: Adjust.
428         * parser.c (cp_parser_postfix_expression): Adjust.
429         (cp_parser_perform_range_for_lookup): Adjust.
430
431 2011-05-20  Jason Merrill  <jason@redhat.com>
432
433         * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
434
435 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
436
437         * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
438
439 2011-05-19  Jakub Jelinek  <jakub@redhat.com>
440
441         PR c++/49043
442         * decl.c (check_omp_return): Stop searching on sk_function_parms.
443
444         PR c++/48869
445         * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
446         pass it down to locate_fn_flags.
447         * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
448         * semantics.c (cxx_omp_create_clause_info): Adjust callers.
449         * cp-gimplify.c: Include splay-tree.h.
450         (splay_tree_compare_decl_uid, omp_var_to_track,
451         omp_cxx_notice_variable): New functions.
452         (struct cp_genericize_omp_taskreg): New type.
453         (struct cp_genericize_data): Add omp_ctx field.
454         (cp_genericize_r): Attempt to determine implicitly determined
455         firstprivate class type variables.
456         (cp_genericize): Clear omp_ctx.
457         * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
458
459 2011-05-18  Jason Merrill  <jason@redhat.com>
460
461         PR c++/48948
462         PR c++/49015
463         * class.c (finalize_literal_type_property): Do check
464         for constexpr member functions of non-literal class.
465         (finish_struct): Don't call check_deferred_constexpr_decls.
466         * cp-tree.h: Don't declare it.
467         (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
468         * decl.c (grok_special_member_properties): Don't check it
469         (grokfnedcl): Don't call validate_constexpr_fundecl.
470         (start_preparsed_function): Do call it.
471         * pt.c (tsubst_decl): Don't call it.
472         (instantiate_class_template_1): Don't call
473         check_deferred_constexpr_decls.
474         * semantics.c (literal_type_p): Check for any incompleteness.
475         (ensure_literal_type_for_constexpr_object): Likewise.
476         (is_valid_constexpr_fn): Revert deferral changes.
477         (validate_constexpr_fundecl): Likewise.
478         (register_constexpr_fundef): Likewise.
479         (check_deferred_constexpr_decls): Remove.
480
481 2011-05-16  Jason Merrill  <jason@redhat.com>
482
483         PR c++/48969
484         * pt.c (deduction_tsubst_fntype): Use a VEC initially.
485
486 2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
487
488         * cxx-pretty-print.c: Update comment.
489         * semantics.c (trait_expr_value, finish_trait_expr):
490         Reorder the cases.
491         * parser.c (cp_parser_primary_expression): Likewise.
492
493 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
494
495         PR c++/48994
496         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
497
498 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
499
500         Implement final on class.
501         * class.c (check_bases): Diagnose derivation from a final class.
502         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
503         (CLASSTYPE_FINAL): New.
504         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
505         CLASSTYPE_FINAL.
506         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
507
508 2011-05-13  Jason Merrill  <jason@redhat.com>
509
510         PR c++/48969
511         * pt.c (deduction_tsubst_fntype): New.
512         (fn_type_unification): Use it.
513         (init_template_processing): Initialize hash table.
514         (print_template_statistics): Print hash table stats.
515
516         * call.c (build_op_call): Use timevar_cond_start/stop.
517         (build_user_type_conversion): Likewise.
518
519 2011-05-12  Jason Merrill  <jason@redhat.com>
520
521         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
522         * semantics.c (validate_constexpr_fundecl): Set it.
523         (check_deferred_constexpr_decls): Clear it.
524         (register_constexpr_fundef): Make sure it isn't set.
525         * decl.c (grok_special_member_properties): Check it.
526
527 2011-05-11  Jason Merrill  <jason@redhat.com>
528
529         PR c++/48948
530         * semantics.c (validate_constexpr_fundecl): Defer checking if
531         an argument type is being defined.
532         (is_valid_constexpr_fn): Add defer_ok parm.
533         (cxx_eval_call_expression): Adjust.
534         (check_deferred_constexpr_decls): New.
535         (literal_type_p): Make sure type isn't being defined.
536         (ensure_literal_type_for_constexpr_object): Handle type being defined.
537         * cp-tree.h: Declare check_deferred_constexpr_decls.
538         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
539         (start_preparsed_function, cp_finish_decl): Not here.
540         * class.c (finalize_literal_type_property): Don't call
541         validate_constexpr_fundecl.
542         (finish_struct): Call check_deferred_constexpr_decls.
543         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
544         (instantiate_class_template): Call check_deferred_constexpr_decls.
545
546         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
547         rather than DECL_TEMPLATE_INSTANTIATION.
548         (cxx_eval_call_expression): Likewise.
549
550         * semantics.c (register_constexpr_fundef): Add to hash table here.
551         (validate_constexpr_fundecl): Not here.
552
553         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
554
555         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
556         do call maybe_constant_value in C++0x mode.
557         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
558
559         PR c++/48745
560         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
561
562 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
563
564         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
565         TYPE_VALUES_RAW.
566         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
567         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
568         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
569
570 2011-05-10  Jason Merrill  <jason@redhat.com>
571
572         PR c++/48930
573         * class.c (type_build_ctor_call): New.
574         * cp-tree.h: Declare it.
575         * decl.c (check_initializer): Use it instead of
576         TYPE_NEEDS_CONSTRUCTING.
577         * init.c (build_value_init, build_value_init_noctor): Likewise.
578         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
579         (build_vec_init): Likewise.
580         * typeck2.c (process_init_constructor_array): Likewise.
581         (process_init_constructor_record): Likewise.
582
583         PR c++/48736
584         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
585         expansion producing another expansion.
586
587 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
588
589         Fixes for override/final.
590         * class.c (check_for_override): Diagnose final on a nonvirtual
591         member function, diagnose override for a virtual with no matching
592         override. Don't fiddle around with DECL_VINDEX.
593
594 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
595
596         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
597         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
598         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
599         operand of EXPR_PACK_EXPANSION.
600         (cp_tree_operand_length): Declare.
601         * tree.c (cp_tree_operand_length): Define.
602         (cp_tree_equal): Call it.
603         * pt.c (value_dependent_expr_P): Likewise.
604         * mangle.c (write_expression): Likewise.
605
606 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
607
608         PR c++/48737
609         PR c++/48744
610         * decl.c (reshape_init): Take a complain parameter and do
611         not call error if tf_error is not set.
612         (check_initializer, reshape_init_r, reshape_init_array,
613         reshape_init_array_1, reshape_init_vector, reshape_init_class):
614         Adjust.
615         * typeck2.c (digest_init_r): Take a complain parameter and
616         pass it to convert_for_initialization.
617         (digest_init, digest_init_flags, process_init_constructor_array,
618         process_init_constructor_record, process_init_constructor_union,
619         process_init_constructor, digest_init_r): Adjust.
620         * init.c (expand_default_init, build_new_1): Likewise.
621         * typeck.c (cp_build_modify_expr): Likewise.
622         * decl2.c (grokfield): Likewise.
623         * call.c (convert_like_real, convert_default_arg): Likewise.
624         * semantics.c (finish_compound_literal): Pass complain to
625         reshape_init and digest_init.
626         * cp-tree.h: Adjust declarations.
627
628 2011-05-07  Fabien ChĂȘne  <fabien@gcc.gnu.org>
629
630         PR c++/48859
631         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
632         recursion if there is user defined constructor.
633
634 2011-05-09  Jason Merrill  <jason@redhat.com>
635
636         PR c++/34772
637         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
638         initialization.
639
640 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
641
642         Implement final/override for member functions.
643         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
644         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
645         (cp_virt_specifiers, enum virt_specifier): New.
646         * decl.c (set_virt_specifiers): New.
647         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
648         * parser.c (make_call_declarator): add virt-specifiers parameter.
649         (cp_parser_lambda_declarator_opt): Adjust.
650         (cp_parser_direct_declarator): Likewise.
651         (cp_parser_virt_specifier_seq_opt): New.
652         * search.c (check_final_overrider): Diagnose attempts to override
653         a final member function.
654
655 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
656
657         PR c++/48574
658         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
659         if the instance has a dependent initializer.
660
661 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
662
663         PR c++/48816
664         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
665         effectively unused variable.
666
667 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
668
669         * name-lookup.h (global_bindings_p): Adjust prototype.
670         * name-lookup.c (global_bindings_p): Return bool.
671
672 2011-05-06  Jason Merrill  <jason@redhat.com>
673
674         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
675         appropriate.
676
677         PR c++/48909
678         * semantics.c (cxx_eval_conditional_expression): Check
679         integer_zerop instead.
680         (potential_constant_expression_1): Likewise.
681
682         PR c++/48911
683         * semantics.c (cxx_eval_array_reference): Handle implicit
684         initializers.
685
686 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
687
688         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
689         * call.c (standard_conversion): Call class_of_this_parm.
690         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
691         (pp_cxx_direct_abstract_declarator): Likewise.
692         * decl2.c (change_return_type): Likewise.
693         (cp_reconstruct_complex_type): Likewise.
694         * error.c (dump_type_suffix, dump_function_decl): Likewise.
695         * mangle.c (write_function_type): Likewise.
696         * pt.c (unify): Likewise.
697         * typeck.c (merge_types, type_memfn_quals): Likewise.
698         * decl.c (build_this_parm): Call type_of_this_parm.
699
700 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
701
702         PR c++/48838
703         * cp-tree.h (non_static_member_function_p): Declare new function.
704         * tree.c (non_static_member_function_p): Define it.
705         * semantics.c (finish_call_expr): Use it.
706
707 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
708
709         * decl.c (finish_case_label): Omit the loc argument to
710         build_case_label.
711
712 2011-05-05  Jason Merrill  <jason@redhat.com>
713
714         * cp-tree.h (REFERENCE_REF_P): Just check the type.
715         * cvt.c (convert_from_reference): Adjust.
716         * pt.c (build_non_dependent_expr): Adjust.
717         * semantics.c (finish_offsetof): Adjust.
718         * tree.c (lvalue_kind): Use it.
719
720         PR c++/48873
721         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
722
723 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
724
725         * decl.c (start_preparsed_function): Do not set
726         dont_save_pending_sizes_p.
727
728 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
729
730         * parser.c (cp_parser_objc_method_definition_list): Update call to
731         objc_start_method_definition.
732
733 2011-05-04  Jason Merrill  <jason@redhat.com>
734
735         PR c++/48749
736         * class.c (resolves_to_fixed_type_p): Don't look closely
737         in templates.
738
739 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
740
741         PR c++/28501
742         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
743         IMAGPART_EXPR.
744
745 2011-05-02  Lawrence Crowl  <crowl@google.com>
746
747         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
748         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
749         Change TV_NAME_LOOKUP to start/stop.
750         (define_label): Refactor timevar calls out to a wrapper function.
751         Change TV_NAME_LOOKUP to start/stop.
752         (xref_tag): Likewise.
753         (lookup_label): Refactor timevar calls out to a wrapper function.
754         Change TV_NAME_LOOKUP to start_cond/stop_cond.
755
756         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
757         TV_TEMPLATE_INST.
758         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
759         (lookup_template_class): Refactor timevar calls out to a wrapper
760         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
761         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
762
763         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
764         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
765         (push_namespace): Likewise.
766         (pop_nested_namespace): Likewise.
767         (pushdecl_namespace_level): Likewise.
768         (store_class_bindings): Likewise.
769         (push_to_top_level): Likewise.
770         (identifier_type_value): Refactor timevar calls out to a wrapper
771         function.  Change TV_NAME_LOOKUP to start/stop.
772         (find_binding): Likewise.
773         (push_using_decl): Likewise.
774         (lookup_arg_dependent): Likewise.
775         (push_using_directive): Likewise.
776         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
777         to plain code.  Change TV_NAME_LOOKUP to start/stop.
778         (lookup_type_current_level): Likewise.  Refactor inner return to
779         break.
780         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
781         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
782         (pushdecl_top_level_1): Likewise.
783         (lookup_using_namespace): Likewise.
784         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
785         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
786         (push_overloaded_decl): Likewise.
787         (push_class_level_binding): Likewise.
788         (namespace_binding): Likewise.
789         (set_namespace_binding): Likewise.
790         (supplement_binding): Likewise.
791         (unqualified_namespace_lookup): Likewise.
792         (lookup_name_real): Likewise.
793         (lookup_type_scope): Likewise.
794         (namespace_ancestor): Likewise.
795         (lookup_name_innermost_nonclass_level): Likewise.
796         (pushtag): Likewise.
797         (pop_from_top_level): Likewise.
798         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
799         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
800         lines.
801         (add_using_namespace): Refactor timevar calls out to a wrapper
802         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
803         wrapper on call to self.
804
805         * decl2.c: (cp_write_global_declarations):  Add start/stop of
806         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
807         Remove push/pop calls to TV_VARCONST.
808
809         * parser.c: Add include of "timevar.h".
810         (cp_parser_explicit_instantiation): Add push/pop calls to
811         TV_TEMPLATE_INST.
812         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
813         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
814         TV_PARSE_STRUCT.
815         (cp_parser_function_definition_from_specifiers_and_declarator): Add
816         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
817         (cp_parser_late_parsing_for_member):  Add push/pop calls to
818         new TV_PARSE_INMETH.
819
820         * call.c: Add include of "timevar.h".
821         (convert_class_to_reference): Wrap and add push/pop calls to 
822         TV_OVERLOAD.
823         (build_op_call): Likewise.
824         (build_conditional_expr): Likewise.
825         (build_new_op): Likewise.
826         (build_new_method_call): Likewise.
827         (build_user_type_conversion): Reorganize to single return and add
828         push/pop calls to TV_OVERLOAD.
829         (perform_overload_resolution): Likewise.
830
831         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
832
833 2011-05-02  Jason Merrill  <jason@redhat.com>
834
835         * tree.c (build_vec_init_expr): Take complain parm.
836         (build_vec_init_elt): Likewise.  Free arg vector.
837         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
838         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
839         (VEC_INIT_EXPR_INIT): Likewise.
840         Adjust build_vec_init_expr declaration.
841         * init.c (perform_member_init): Adjust.
842
843         Revert:
844         PR c++/40975
845         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
846         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
847         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
848         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
849         (build_vec_init_elt): Don't expect an array type.
850         (build_array_copy): Adjust.
851         * init.c (perform_member_init): Adjust.
852         (build_new_1): Use build_vec_init_expr.
853
854         PR c++/48834
855         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
856         Protect an explicit target.
857
858         PR c++/48446
859         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
860         (compute_array_index_type): Revert earlier 48446 changes.
861         (grokdeclarator): Use stabilize_vla_size.
862
863 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
864             Eric Botcazou <ebotcazou@adacore.com>
865
866         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
867         instead of inappropriate zero values.
868
869 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
870
871         PR c++/47969
872         * decl.c (compute_array_index_type): Check build_expr_type_conversion
873         return value for NULL_TREE.
874
875 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
876
877         PR c++/48606
878         * init.c (perform_member_init): Check build_value_init return
879         value for error_mark_node.
880
881 2011-04-29  Diego Novillo  <dnovillo@google.com>
882             Le-Chun Wu  <lcwu@google.com>
883
884         * call.c (conversion_null_warnings): Also handle assignments
885         when warning about NULL conversions.
886
887 2011-04-29  Le-Chun Wu  <lcwu@google.com>
888
889         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
890         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
891         (build_over_call): Use it to determine whether to emit a NULL
892         warning for template function instantiations.
893         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
894         EXPLICIT_TARGS is set.
895
896 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
897             Mike Stump <mikestump@comcast.net>
898
899         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
900         in maintainer mode.  Use the --output-file option of gperf instead
901         of > to prevent creating an empty cp/cfns.h when gperf is not
902         available.
903
904 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
905
906         PR c++/48798
907         * semantics.c (finish_base_specifier): cv-qualified base class
908         is fine, per DR 484.
909
910 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
911
912         PR c++/48656
913         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
914         considering call expressions involving a member function.
915
916 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
917
918         PR c++/48530
919         * tree.c (build_cplus_new): Check build_target_expr return
920         value for error_mark_node.
921
922 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
923
924         PR c++/48771
925         * semantics.c (literal_type_p): Reference types are literal types,
926         per the FDIS.
927         (valid_type_in_constexpr_fundecl_p): Remove.
928         (is_valid_constexpr_fn): Adjust.
929
930 2011-04-27  Jason Merrill  <jason@redhat.com>
931
932         PR libstdc++/48760
933         Implement list-initialization of _Complex.
934         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
935         (check_initializer): Likewise.
936         * call.c (build_complex_conv): New.
937         (implicit_conversion): Call it.
938         (convert_like_real): Handle it.
939         * typeck2.c (check_narrowing): Handle it.
940
941         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
942         decide whether to delete.
943         (build_vec_init): Pass sfk_complete_destructor.
944
945         PR c++/40975
946         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
947         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
948         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
949         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
950         (build_vec_init_elt): Don't expect an array type.
951         (build_array_copy): Adjust.
952         * init.c (perform_member_init): Adjust.
953         (build_new_1): Use build_vec_init_expr.
954
955         * class.c (resolve_address_of_overloaded_function): Don't
956         change OVERLOAD to TREE_LIST.
957         * pt.c (print_candidates_1): Remove nonsensical assert.
958
959         PR c++/48046
960         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
961         to tentative parse sooner.
962
963 2011-04-26  Jason Merrill  <jason@redhat.com>
964
965         PR c++/42687
966         * parser.c (cp_parser_primary_expression): Set *idk to
967         CP_ID_KIND_NONE for a parenthesized identifier.
968
969         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
970         (cxx_print_identifier): Correct indentation.
971
972         PR c++/48530
973         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
974         * tree.c (force_target_expr): Add complain parm.
975         (build_target_expr_with_type): Likewise.
976         (get_target_expr_sfinae): Split out.
977         (build_vec_init_expr, bot_manip): Adjust.
978         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
979         (build_delete, build_dtor_call): Likewise.
980         (perform_direct_initialization_if_possible): Adjust.
981         (build_vec_init): Handle error return.
982         * cvt.c (force_rvalue): Add complain parm.
983         Call build_special_member_call directly.
984         * decl2.c (delete_sanity): Add complain parm.
985         (build_cleanup): Adjust.
986         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
987         * semantics.c (finish_stmt_expr_expr): Adjust.
988         (finish_compound_literal): Adjust.
989         * parser.c (cp_parser_delete_expression): Adjust.
990         * typeck2.c (build_functional_cast): Adjust.
991         * cp-tree.h: Adjust.
992
993 2011-04-26  Martin Jambor  <mjambor@suse.cz>
994
995         * class.c (cp_fold_obj_type_ref): Remove.
996         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
997
998 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
999
1000         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
1001         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
1002         (UNDERLYING_TYPE_TYPE): Add.
1003         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
1004         as TS_COMMON.
1005         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
1006         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
1007         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
1008         * semantics.c (finish_underlying_type): New.
1009         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
1010         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
1011         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
1012         * tree.c (cp_walk_subtrees): Likewise.
1013         * pt.c (for_each_template_parm_r, tsubst, unify,
1014         dependent_type_p_r): Likewise.
1015         * mangle.c (write_type): Sorry for __underlying_type.
1016
1017 2011-04-25  Jason Merrill  <jason@redhat.com>
1018
1019         PR c++/48707
1020         * decl.c (type_dependent_init_p): New.
1021         (cp_finish_decl): Check it.
1022         * pt.c (any_type_dependent_elements_p): New.
1023         * cp-tree.h: Declare it.
1024
1025 2011-04-20  Jason Merrill  <jason@redhat.com>
1026
1027         * semantics.c (finish_compound_literal): Don't put an array
1028         with a dtor in a static variable.
1029
1030         * call.c (build_over_call): Handle trivial dtor.
1031
1032         * search.c (lookup_fnfields_slot): Call complete_type.
1033
1034         PR c++/48594
1035         * decl2.c (build_offset_ref_call_from_tree): Move
1036         non-dependency of object outside condition.
1037
1038         PR c++/48657
1039         * decl.c (cp_finish_decl): Simplify template handling.
1040
1041 2011-04-20  Jim Meyering  <meyering@redhat.com>
1042
1043         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
1044
1045 2011-04-19  Jason Merrill  <jason@redhat.com>
1046
1047         PR c++/46304
1048         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
1049
1050         PR c++/45267
1051         * decl.c (duplicate_decls): Keep always_inline attribute
1052         in sync with DECL_DISREGARD_INLINE_LIMITS.
1053
1054 2011-04-18  Jason Merrill  <jason@redhat.com>
1055
1056         PR c++/48569
1057         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
1058
1059         PR c++/48537
1060         * init.c (build_value_init): Handle UNION_TYPE the same.
1061
1062 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
1063
1064         PR c++/48632
1065         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
1066         for type dependent pointers.
1067
1068 2011-04-18  Jim Meyering  <meyering@redhat.com>
1069
1070         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
1071
1072 2011-04-17  Jan Hubicka  <jh@suse.cz>
1073
1074         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
1075         gotos.
1076
1077 2011-04-17  Jason Merrill  <jason@redhat.com>
1078
1079         PR c++/48531
1080         * typeck2.c (build_functional_cast): Disallow array type.
1081
1082         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
1083
1084 2011-04-17  Jan Hubicka  <jh@suse.cz>
1085
1086         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
1087
1088 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
1089
1090         Implement N3271
1091         * parser.c (cp_convert_range_for): Split into
1092         cp_parser_perform_range_for_lookup.
1093         (cp_parser_perform_range_for_lookup): New.
1094         (cp_parser_range_for_member_function): New.
1095         (cp_parser_for_init_statement): Correct error message.
1096         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
1097
1098 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
1099
1100         * parser.c (cp_parser_objc_protocol_declaration): Updated for
1101         change from objc_declare_protocols() to objc_declare_protocol().
1102
1103 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
1104
1105         PR objc++/48479
1106         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
1107         and return immediately.
1108
1109 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
1110
1111         * cp-tree.def (SWITCH_STMT): Add an extra operand.
1112         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
1113         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
1114         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
1115         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
1116
1117 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
1118
1119         * cp-tree.def (IF_STMT): Add an extra operand.
1120         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
1121         * cp-tree.h (IF_SCOPE): Define.
1122         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
1123         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
1124
1125 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
1126
1127         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
1128         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
1129         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
1130         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
1131         Use FOR_SCOPE instead of TREE_CHAIN.
1132         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
1133         (finish_for_stmt): Likewise.
1134
1135 2011-04-14  Jason Merrill  <jason@redhat.com>
1136
1137         * parser.c (cp_parser_postfix_expression): Fix flags passed to
1138         build_new_method_call.
1139         * semantics.c (finish_call_expr): Likewise.
1140
1141         PR c++/48531
1142         * init.c (build_value_init_noctor): Check complain consistently.
1143
1144         PR c++/48557
1145         * typeck.c (cp_build_binary_op): Don't decay void operands.
1146
1147         PR c++/48446
1148         * decl.c (compute_array_index_type): Use get_temp_regvar instead
1149         of variable_size.
1150         * init.c (get_temp_regvar): No longer static.
1151         * cp-tree.h: Declare it.
1152
1153 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
1154
1155         * parser.c (cp_parser_objc_class_declaration): Updated for change
1156         in objc_declare_class().
1157
1158 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
1159
1160         * decl.c (poplevel): Use block_chainon.
1161
1162 2011-04-13  Jason Merrill  <jason@redhat.com>
1163
1164         PR c++/48594
1165         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
1166         or pointer to (non-member) function.
1167
1168 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
1169
1170         PR c++/48570
1171         * semantics.c (cxx_eval_array_reference): Handle reading from
1172         wchar_t, char16_t and char32_t STRING_CST.
1173
1174 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
1175
1176         PR c++/48574
1177         * class.c (fixed_type_or_null): We cannot determine the dynamic
1178         type of a reference variable if its initializer is dependent.
1179
1180 2011-04-13  Jason Merrill  <jason@redhat.com>
1181
1182         PR c++/48581
1183         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
1184         unqualified lookup failing if we're still in a template.
1185
1186 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
1187
1188         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
1189         tree_contains_struct initialization to...
1190         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
1191         macros.
1192         * cp-objcp-common.h (cp_common_init_ts): Declare.
1193         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
1194         calling TREE_CHAIN.
1195
1196 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
1197
1198         * parser.c (cp_parser_objc_message_expression): Updated call
1199         to objc_build_message_expr.
1200
1201 2011-04-12  Martin Jambor  <mjambor@suse.cz>
1202
1203         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
1204         cgraph_get_create_node.
1205         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
1206         instead of cgraph_get_create_node.
1207         * method.c (make_alias_for_thunk): Call cgraph_get_node
1208         instead of cgraph_get_create_node, assert it returns non-NULL.
1209         (use_thunk): Likewise.
1210         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
1211         when flag_syntax_only is not set.  Call cgraph_get_node instead of
1212         cgraph_get_create_node.
1213         (maybe_clone_body): Call cgraph_get_node instead of
1214         cgraph_get_create_node.
1215
1216 2011-04-12  Martin Jambor  <mjambor@suse.cz>
1217
1218         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
1219         instead of cgraph_node.
1220         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
1221         (cp_write_global_declarations): Likewise.
1222         * optimize.c (maybe_clone_body): Likewise.
1223         * semantics.c (maybe_add_lambda_conv_op): Likewise.
1224         * mangle.c (mangle_decl): Likewise.
1225         * method.c (make_alias_for_thunk): Likewise.
1226         (use_thunk): Likewise.
1227
1228 2011-04-11  Jason Merrill  <jason@redhat.com>
1229
1230         PR c++/48535
1231         * decl.c (cp_complete_array_type_or_error): New.
1232         * semantics.c (finish_compound_literal): Use it.
1233         * cp-tree.h: Declare it.
1234
1235         PR c++/48535
1236         * semantics.c (finish_compound_literal): Handle references.
1237
1238         PR c++/48535
1239         * semantics.c (finish_compound_literal): Take complain parm.
1240         (build_lambda_object): Adjust.
1241         * cp-tree.h: Adjust.
1242         * call.c (convert_like_real): Adjust.
1243         * decl.c (check_initializer): Adjust.
1244         * parser.c (cp_parser_postfix_expression): Adjust.
1245         (cp_parser_functional_cast): Adjust.
1246         * pt.c (tsubst_copy_and_build): Adjust.
1247         * typeck2.c (process_init_constructor_record): Adjust.
1248
1249         PR c++/48534
1250         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
1251         of scoped enum.
1252
1253         PR c++/48523
1254         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
1255         than cp_build_indirect_ref.
1256
1257         PR c++/48457, Core 1238
1258         * call.c (reference_binding): Allow rvalue reference to bind to
1259         function lvalue.
1260         * tree.c (lvalue_kind): Functions are always lvalues.
1261
1262 2011-04-07  Jason Merrill  <jason@redhat.com>
1263
1264         PR c++/48500
1265         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
1266         arguments even if we don't know the function.
1267
1268         PR c++/48481
1269         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
1270         at the end of the chain.
1271         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
1272         (iterative_hash_template_arg): Likewise.
1273
1274         PR c++/48481
1275         * cp-tree.h (OVL_ARG_DEPENDENT): New.
1276         * name-lookup.c (add_function): Set it.
1277         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
1278
1279         PR c++/48481
1280         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
1281         Release unused vector.
1282
1283         PR c++/48451
1284         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
1285         (type_unification_real): Clear it here instead.
1286
1287         PR c++/48468
1288         * except.c (build_noexcept_spec): Propagate error_mark_node.
1289         (finish_noexcept_expr): Likewise.
1290
1291         PR c++/48452
1292         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
1293         in SFINAE context.
1294
1295         PR c++/48450
1296         * call.c (resolve_args): Take complain.
1297         (build_new_function_call, build_operator_new_call): Pass it.
1298         (build_op_call, build_new_op, build_new_method_call): Pass it.
1299
1300         PR c++/48450
1301         * typeck.c (check_for_casting_away_constness): Take complain.
1302         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
1303         (build_const_cast_1): Pass it.  Take full complain parm.
1304         (build_const_cast, cp_build_c_cast): Adjust.
1305
1306         * tree.c (build_aggr_init_expr): Always return error_mark_node
1307         on abstract violation.
1308
1309         PR c++/48450
1310         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
1311         (bot_manip): Adjust.
1312         * cp-tree.h: Adjust.
1313         * call.c (convert_like_real, build_cxx_call): Adjust.
1314         (perform_direct_initialization_if_possible): Adjust.
1315         * cvt.c (ocp_convert): Adjust.
1316         * init.c (build_value_init): Adjust.
1317         * semantics.c (maybe_add_lambda_conv_op): Adjust.
1318         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
1319         * typeck2.c (build_functional_cast): Adjust.
1320
1321         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
1322         level.
1323         (perform_member_init): Not here.
1324         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
1325         case to templates.
1326         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
1327
1328         PR c++/48449
1329         * typeck2.c (build_functional_cast): Check complain consistently.
1330         Use build_value_init and abstract_virtuals_error_sfinae.
1331         (abstract_virtuals_error_sfinae): Split out.
1332         * cp-tree.h: Declare it.
1333         * init.c (build_new_1): Use it.
1334         (build_value_init_noctor): Handle FUNCTION_TYPE.
1335
1336         * semantics.c (finish_decltype_type): Simplify handling of unknown
1337         type.
1338
1339         * semantics.c (finish_decltype_type): Add complain parm.
1340         * cp-tree.h: Adjust.
1341         * parser.c (cp_parser_decltype): Adjust.
1342         * pt.c (tsubst): Adjust.
1343
1344         PR c++/48450
1345         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
1346
1347 2011-03-31  Jason Merrill  <jason@redhat.com>
1348
1349         PR c++/48277
1350         * semantics.c (finish_call_expr): Remove assert.
1351
1352         PR c++/48280
1353         * method.c (defaultable_fn_check): Templates are not defaultable.
1354
1355         * parser.c (cp_parser_init_declarator): Avoid redundant
1356         cp_finish_decl for member declarations.
1357
1358 2011-03-30  Jason Merrill  <jason@redhat.com>
1359
1360         PR c++/48212
1361         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
1362         is error_mark_node.
1363
1364 2011-03-30  Jason Merrill  <jason@redhat.com>
1365
1366         PR c++/48369
1367         * semantics.c (potential_constant_expression_1): Handle
1368         UNORDERED_EXPR and ORDERED_EXPR.
1369
1370         PR c++/48281
1371         * semantics.c (finish_compound_literal): Do put static/constant
1372         arrays in static variables.
1373
1374         * call.c (convert_like_real) [ck_list]: Build up the
1375         initializer_list object directly.
1376         * decl.c (build_init_list_var_init): Adjust.
1377
1378         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
1379         * decl.c (reshape_init_array_1): Likewise.
1380
1381 2011-03-29  Jason Merrill  <jason@redhat.com>
1382
1383         PR c++/48265
1384         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
1385         the variable is constant before looking at its initializer.
1386
1387         PR c++/48319
1388         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
1389
1390         PR c++/48089
1391         * semantics.c (potential_constant_expression_1): Change error about
1392         use of *this in constructor into sorry.
1393
1394         PR c++/48296
1395         * decl.c (cp_finish_decl): Defer validation of constexpr member
1396         functions.
1397         * class.c (finalize_literal_type_property): Validate them here.
1398         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
1399
1400         * semantics.c (is_valid_constexpr_fn): Specify input location.
1401
1402 2011-03-28  Jason Merrill  <jason@redhat.com>
1403
1404         PR c++/48313
1405         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
1406         from overloaded function.
1407
1408         Core 1232
1409         * call.c (build_array_conv): New.
1410         (implicit_conversion): Use it.
1411
1412         * call.c (reference_binding): Allow direct binding to an array
1413         rvalue.
1414
1415         Core 898
1416         * parser.c (cp_parser_compound_statement): Add function_body parm.
1417         Complain about non-body compound-stmt in constexpr fn.
1418         (cp_parser_primary_expression, cp_parser_statement): Adjust.
1419         (cp_parser_implicitly_scoped_statement): Adjust.
1420         (cp_parser_function_body, cp_parser_try_block): Adjust.
1421         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
1422         (cp_parser_objc_try_catch_finally_statement): Adjust.
1423
1424         Core 898
1425         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
1426         and using-definition.
1427         (register_constexpr_fundef): Call it.
1428
1429         * except.c (build_noexcept_spec): Call cxx_constant_value after
1430         converting to bool.
1431
1432 2011-03-25  Kai Tietz  <ktietz@redhat.com>
1433
1434         * lex.c (interface_strcmp): Handle dos-paths.
1435         (handle_pragma_implementation): Use filename_cmp instead of
1436         strcmp.
1437         (in_main_input_context): Likewise.
1438
1439 2011-03-25  Jason Merrill  <jason@redhat.com>
1440
1441         Core 1135
1442         * method.c (defaulted_late_check): Check for exception spec mismatch.
1443         (defaultable_fn_check): Allow exception spec and virtual.
1444         * class.c (check_for_override): A virtual dtor is non-trivial.
1445
1446         PR c++/48289
1447         * pt.c (build_non_dependent_expr): Keep dereferences outside the
1448         NON_DEPENDENT_EXPR.
1449
1450 2011-03-25  Kai Tietz  <ktietz@redhat.com>
1451
1452         * decl.c (decls_match): Replace target hook
1453         call of comp_type_attributes by version in tree.c file.
1454         * search.c (check_final_overrider): Likewise.
1455         * typeck.c (structural_comptypes): Likewise.
1456
1457 2011-03-21  Kai Tietz  <ktietz@redhat.com>
1458
1459         PR target/12171
1460         * cxx-pretty-print.c (pp_cxx_ptr_operator):
1461         Display allowed attributes for function pointer types.
1462         * error.c (dump_type_prefix): Likewise.
1463
1464         * tree.c (cxx_attribute_table): Adjust table.
1465
1466 2011-03-18  Jason Merrill  <jason@redhat.com>
1467
1468         PR c++/48162
1469         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
1470
1471         PR c++/48118
1472         * call.c (build_over_call): Don't skip ck_rvalue.
1473
1474 2011-03-17  Jason Merrill  <jason@redhat.com>
1475
1476         PR c++/47504
1477         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
1478         the conversion set TREE_OVERFLOW.
1479
1480         Core 1212
1481         * semantics.c (finish_decltype_type): Return T&& for xvalue.
1482         * typeck.c (unlowered_expr_type): Preserve cv-quals.
1483
1484         PR c++/48166
1485         * decl.c (revert_static_member_fn): Strip function-cv-quals.
1486
1487 2011-03-16  Jason Merrill  <jason@redhat.com>
1488
1489         PR c++/48089
1490         * semantics.c (potential_constant_expression_1): Don't allow *this
1491         in a constructor.
1492         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
1493
1494         PR c++/47301
1495         * decl.c (compute_array_index_type): Don't bother trying to deal
1496         with literal classes in ABI v1.
1497
1498         PR c++/46336
1499         * decl.c (duplicate_decls): Return NULL_TREE for clashing
1500         C functions.
1501
1502         PR c++/47570
1503         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
1504         use the generic binary expression handling.
1505
1506 2011-03-16  Diego Novillo  <dnovillo@google.com>
1507
1508         * Make-lang.in (CXX_PARSER_H): New.
1509         (cp/parser.o): Add dependency on CXX_PARSER_H.
1510         Add dependency on tree-pretty-print.h
1511         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
1512         * cp-lang.c: Include parser.h.
1513         * parser.c: Include parser.h.
1514         (struct cp_token): Add bitfield purged_p.
1515         Update all users.
1516         Move to parser.h.
1517         (CPP_PURGED): Remove.  Update all users.
1518         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
1519         Remove field buffer_length.
1520         Update all users.
1521         Move to parser.h.
1522         (struct tree_check): Move to parser.h.
1523         (cp_token_position): Likewise.
1524         (struct cp_token_cache): Likewise.
1525         (CPP_KEYWORD): Likewise.
1526         (CPP_TEMPLATE_ID): Likewise.
1527         (CPP_NESTED_NAME_SPECIFIER): Likewise.
1528         (N_CP_TTYPES): Likewise.
1529         (enum cp_parser_status_kind): Likewise.
1530         (struct cp_parser_context): Likewise.
1531         (struct cp_default_arg_entry_d): Likewise.
1532         (struct cp_unparsed_functions_entry_d): Likewise.
1533         (struct cp_parser): Likewise.
1534         (cp_lexer_dump_tokens): New.
1535         (cp_lexer_debug_tokens): New.
1536         (cp_lexer_finished_p): New.
1537         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
1538         (cp_lexer_new_main): Re-write main lexing loop to push
1539         tokens into the new VEC buffer.
1540         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
1541         Do not abort if the token type is not recognized, just print
1542         its code.
1543         * parser.h: New file.
1544         * config-lang.in (gtfiles): Add cp/parser.h.
1545
1546 2011-03-16  Jason Merrill  <jason@redhat.com>
1547
1548         Core 1148
1549         * typeck.c (check_return_expr): Fix conditions for setting
1550         LOOKUP_PREFER_RVALUE.
1551
1552         * call.c (build_over_call): Remove require_complete_type_sfinae call.
1553
1554         PR c++/48132
1555         * decl.c (check_array_designated_initializer): Allow integer index.
1556         (reshape_init_array_1): Set index on the elements.
1557
1558 2011-03-16  Jason Merrill  <jason@redhat.com>
1559
1560         PR c++/48113
1561         * typeck.c (convert_for_initialization): Use
1562         perform_implicit_conversion_flags.
1563         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
1564         rvaluedness_matches_p on ck_rvalue.
1565         (convert_like_real) [ck_rvalue]: And restore it here.
1566
1567         PR c++/48115
1568         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
1569
1570 2011-03-16  Jason Merrill  <jason@redhat.com>
1571
1572         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
1573         committed to this tentative parse.
1574
1575         PR c++/47999
1576         * semantics.c (finish_call_expr): Preserve reference semantics
1577         in templates.
1578
1579         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
1580
1581 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
1582
1583         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
1584         DECL_LANG_SPECIFIC is NULL.
1585
1586 2011-03-15  Jason Merrill  <jason@redhat.com>
1587
1588         Core 1074
1589         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
1590         check value_dependent_expression_p on the operand.
1591
1592         * semantics.c (push_cx_call_context): Return bool.
1593         (cxx_eval_call_expression): Handle excess depth.
1594
1595         Core 1191
1596         * method.c (synthesized_method_walk): Cleanups don't affect the
1597         triviality of a constructor, but do affect deletion and exception
1598         specification.
1599
1600 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
1601
1602         * decl2.c (cp_check_const_attributes): New.
1603         (cplus_decl_attributes): Call cp_check_const_attributes.
1604
1605 2011-03-15  Jason Merrill  <jason@redhat.com>
1606
1607         PR c++/34758
1608         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
1609         recursion first.
1610         (push_defarg_context, pop_defarg_context): New.
1611         * parser.c (cp_parser_late_parsing_default_args): Use them.
1612         * cp-tree.h: Declare them.
1613
1614 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
1615
1616         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
1617         the argument of the indirection operator should not be dependent.
1618         Fix the comment.
1619
1620 2011-03-11  Jason Merrill  <jason@redhat.com>
1621
1622         PR c++/47125
1623         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
1624
1625         PR c++/47144
1626         * parser.c (cp_parser_template_type_arg): Set
1627         type_definition_forbidden_message.
1628
1629         PR c++/47808
1630         * decl.c (compute_array_index_type): Discard folding
1631         if it didn't produce a constant.
1632
1633 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
1634
1635         PR c++/48035
1636         * init.c (build_zero_init_1): Extracted from build_zero_init.
1637         Add FIELD_SIZE argument, if non-NULL and field bit_position
1638         as not smaller than that, don't add that field's initializer.
1639         Pass DECL_SIZE as last argument to build_zero_init_1
1640         for DECL_FIELD_IS_BASE fields.
1641         (build_zero_init): Use build_zero_init_1.
1642
1643 2011-03-10  Jason Merrill  <jason@redhat.com>
1644
1645         PR c++/48029
1646         * pt.c (iterative_hash_template_arg): Remove special case for
1647         ARRAY_TYPE.
1648
1649         PR c++/47198
1650         * parser.c (cp_parser_single_declaration): Just return if
1651         cp_parser_parse_and_diagnose_invalid_type_name complained.
1652
1653 2011-03-09  Jason Merrill  <jason@redhat.com>
1654
1655         PR c++/44629
1656         * pt.c (unify): An unresolved overload is a nondeduced context.
1657
1658 2011-03-09  Martin Jambor  <mjambor@suse.cz>
1659
1660         PR tree-optimization/47714
1661         * method.c (use_thunk): Clear addressable flag of thunk arguments.
1662
1663 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
1664
1665         PR c++/47705
1666         * pt.c (convert_nontype_argument): Only call decay_conversion on
1667         arrays.
1668
1669 2011-03-08  Jason Merrill  <jason@redhat.com>
1670
1671         PR c++/47488
1672         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
1673
1674         PR c++/47705
1675         * pt.c (convert_nontype_argument): Don't crash on non-pointer
1676         argument to pointer parameter.
1677
1678         PR c++/45651
1679         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
1680         !TREE_PUBLIC decls.
1681
1682 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
1683
1684         PR c++/47957
1685         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
1686         consider scopes of primary template definitions.  Adjust comments.
1687
1688 2011-03-07  Jason Merrill  <jason@redhat.com>
1689
1690         PR c++/48003
1691         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
1692         integer overflow.
1693         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
1694
1695         PR c++/48015
1696         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
1697
1698         PR c++/48008
1699         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
1700         (write_CV_qualifiers_for_type): Not here.
1701
1702 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
1703
1704         * lang-specs.h: Match -save-temps* instead of -save-temps.
1705
1706 2011-03-05  Jason Merrill  <jason@redhat.com>
1707
1708         * mangle.c (write_expression): Change ABI v6 to v5.
1709         (write_type): Likewise.
1710
1711 2011-03-04  Jan Hubicka  <jh@suse.cz>
1712
1713         PR lto/47497
1714         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
1715         and cgraph_add_thunk.
1716         * method.c (make_alias_for_thunk, use_thunk): Likewise.
1717         * mangle.c (mangle_decl): Likewise.
1718
1719 2011-03-04  Jason Merrill  <jason@redhat.com>
1720
1721         PR c++/47971
1722         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
1723         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
1724
1725         PR c++/46220
1726         * search.c (check_final_overrider): Allow pointer to same incomplete
1727         class type with different cv-quals.
1728
1729 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1730
1731         PR c++/47974
1732         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
1733
1734 2011-03-03  Jason Merrill  <jason@redhat.com>
1735
1736         PR c++/47950
1737         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
1738
1739 2011-03-02  Jason Merrill  <jason@redhat.com>
1740
1741         PR c++/47950
1742         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
1743
1744         PR c++/47774
1745         * tree.c (build_vec_init_elt): Split out from...
1746         (build_vec_init_expr): ...here.
1747         (diagnose_non_constexpr_vec_init): New fn.
1748         * semantics.c (potential_constant_expression_1): Use it.
1749         * cp-tree.h: Declare it.
1750
1751 2011-03-01  Jason Merrill  <jason@redhat.com>
1752
1753         PR c++/46159
1754         * parser.c (cp_parser_primary_expression): Don't warn about a
1755         failed tentative parse.
1756
1757         PR c++/47200
1758         * semantics.c (cxx_bind_parameters_in_call): Don't call
1759         adjust_temp_type on non-constant args.
1760
1761         PR c++/47851
1762         * call.c (standard_conversion): Provide requested cv-quals on
1763         class rvalue conversion.
1764
1765         PR c++/46282
1766         * decl2.c (grokbitfield): Handle type-dependent width.
1767
1768 2011-02-28  Jason Merrill  <jason@redhat.com>
1769
1770         PR c++/47873
1771         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
1772         after checking for a non-thunk.
1773
1774 2011-02-26  Jason Merrill  <jason@redhat.com>
1775
1776         PR c++/47904
1777         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
1778         * pt.c (iterative_hash_template_arg): And hash it.
1779
1780         PR c++/47897
1781         * semantics.c (non_const_var_error): Split out from...
1782         (cxx_eval_constant_expression): ...here.
1783         (potential_constant_expression_1) [VAR_DECL]: Use it.
1784         Allow dependent variables.
1785
1786 2011-02-24  Jason Merrill  <jason@redhat.com>
1787
1788         * parser.c (cp_parser_constant_expression): Set
1789         non_integral_constant_expression correctly for C++0x too.
1790         (cp_parser_static_assert): Allow non-constant expression.
1791         (cp_parser_direct_declarator): Expect non_constant_p to be set
1792         properly for C++0x.
1793         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
1794         * semantics.c (maybe_constant_value): Check type_unknown_p too.
1795         (potential_rvalue_constant_expression): New.
1796         (require_potential_rvalue_constant_expression): New.
1797
1798 2011-02-23  Jason Merrill  <jason@redhat.com>
1799
1800         * cp-tree.h (DECL_PARM_LEVEL): New.
1801         (struct lang_decl_parm): Add level field.
1802         * name-lookup.c (function_parm_depth): New fn.
1803         * name-lookup.h: Declare it.
1804         * parser.c (cp_parser_parameter_declaration_list): Use it.
1805         * mangle.c (struct globals): Add parm_depth field.
1806         (write_bare_function_type): Adjust it.
1807         (write_expression): Include the level delta in PARM_DECL mangling
1808         for abi >= 6.
1809
1810         * semantics.c (finish_decltype_type): Remove shortcut for decltype
1811         of id-expression.
1812         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
1813
1814 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
1815
1816         PR c++/46868
1817         * parser.c (cp_parser_class_specifier): Require a closing brace
1818         to attempt error recovery.
1819
1820 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
1821
1822         PR c++/47833
1823         * pt.c (struct pending_template): Add chain_next GTY option.
1824         * decl.c (struct named_label_use_entry): Likewise.
1825
1826 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
1827
1828         PR c++/47242
1829         * semantics.c (build_lambda_object): Bail out if a field is
1830         error_mark_node.
1831
1832 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
1833
1834         PR c++/47666
1835         * class.c (dfs_declare_virt_assop_and_dtor)
1836         (declare_virt_assop_and_dtor): New static functions.
1837         (add_implicitly_declared_members): Use
1838         declare_virt_assop_and_dtor.
1839
1840 2011-02-21  Jason Merrill  <jason@redhat.com>
1841
1842         PR c++/47207
1843         * decl2.c (decl_constant_var_p): A constexpr var needs an
1844         initializer to be constant.
1845         * semantics.c (cxx_eval_constant_expression): Complain about
1846         constexpr var used in its own initializer.
1847         * call.c (set_up_extended_ref_temp): Set
1848         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
1849
1850 2011-02-20  Jason Merrill  <jason@redhat.com>
1851
1852         PR c++/47199
1853         * semantics.c (cxx_eval_call_expression): Call
1854         cxx_eval_constant_expression in trivial shortcut.
1855
1856         PR c++/46831
1857         * call.c (convert_class_to_reference): Don't try to set up a
1858         second conv sequence for non-viable candidates.
1859
1860         PR c++/47703
1861         * error.c (location_of): Handle non-tagged types.
1862
1863         PR c++/46472
1864         * method.c (process_subob_fn): Instantiate constexpr templates.
1865         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
1866
1867 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
1868
1869         PR c++/46394
1870         * pt.c (tsubst_pack_expansion): do not use
1871         cp_tree_equal/same_type_p to detect an expansion of a parameter
1872         pack.
1873
1874 2011-02-19  Jason Merrill  <jason@redhat.com>
1875
1876         PR c++/47503
1877         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
1878
1879 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
1880
1881         PR c++/47795
1882         * semantics.c (finish_non_static_data_member): Early return if
1883         object is error_mark_node.
1884
1885 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
1886
1887         PR c++/47208
1888         * pt.c (do_auto_deduction): Do not mention error_mark_node in
1889         diagnostics.
1890         * semantics.c (finish_id_expression): Do not pass erroneous decl
1891         to decl_constant_var_p.
1892
1893 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
1894
1895         PR c++/47783
1896         * cvt.c (convert_from_reference): Call mark_exp_read.
1897
1898 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
1899
1900         PR c++/47172
1901         * pt.c (finish_call_expr): Consider a call expression that has a
1902         dependent "this" pointer as being dependent.  Add comments.
1903         (dependent_type_p, type_dependent_expression_p): Update comments.
1904
1905 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
1906
1907         PR c++/47326
1908         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
1909         expansion arguments are not evaluated.
1910
1911 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
1912
1913         PR c++/47704
1914         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
1915         instead of TYPE_LANG_FLAG_3.
1916         * pt.c (lookup_template_class): Copy over
1917         ENUM_FIXED_UNDERLYING_TYPE_P.
1918
1919 2011-02-15  Jason Merrill  <jason@redhat.com>
1920
1921         PR c++/46807
1922         * method.c (synthesized_method_walk): Always exit early for
1923         trivial fn in C++98 mode.
1924
1925 2011-02-14  Jason Merrill  <jason@redhat.com>
1926
1927         PR c++/47482
1928         * parser.c (cp_parser_enumerator_definition): Call
1929         fold_non_dependent_expr.
1930
1931 2011-02-09  Jason Merrill  <jason@redhat.com>
1932
1933         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
1934         * semantics.c (finish_fname): Only return the name if we're in
1935         a function.
1936
1937         * decl.c (build_enumerator): Don't perform integral promotions on
1938         non-integral constants.
1939
1940         * cvt.c (convert_to_void): Handle null op1.
1941
1942         * class.c (type_has_constexpr_default_constructor): Make sure the
1943         caller stripped an enclosing array.
1944         * init.c (perform_member_init): Strip arrays before calling it.
1945
1946         PR c++/47511
1947         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
1948
1949 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
1950
1951         PR c++/47398
1952         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
1953         template parameters in account.
1954
1955 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
1956
1957         PR c++/46890
1958         * parser.c (cp_parser_class_specifier): Fix setting of
1959         want_semicolon.
1960
1961 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
1962
1963         PR c++/47416
1964         * semantics.c (build_data_member_initialization): Handle
1965         STATEMENT_LIST always instead of just for CLEANUP_BODY.
1966
1967 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1968
1969         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
1970         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
1971
1972 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
1973
1974         PR c++/47311
1975         * cp-tree.h (fixup_template_parms): Declare.
1976         * pt.c (end_template_parm_list): Do not fixup template parms here.
1977         (fixup_template_parms): Remove static. Fix typo in the
1978         comments. Remove useless code statement.
1979         (fixup_template_parm): For a template template parameter, fixup
1980         its attributes before fixing up its type.
1981         * parser.c
1982         (cp_parser_template_declaration_after_export): After parsing
1983         template parameters fixup their types.
1984
1985 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
1986
1987         PR c++/47476
1988         * semantics.c (potential_constant_expression_1): Handle
1989         TRUTH_XOR_EXPR.
1990
1991 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
1992
1993         PR c++/43601
1994         * semantics.c (expand_or_defer_fn_1): Handle it.
1995         * decl2.c (decl_needed_p): Likewise.
1996
1997 2011-01-21  Jason Merrill  <jason@redhat.com>
1998
1999         PR c++/47041
2000         * semantics.c (build_constexpr_constructor_member_initializers):
2001         Handle trivial copy.
2002
2003 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
2004
2005         PR c++/47388
2006         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
2007         assume init must be NULL if scope is NULL.
2008         (begin_range_for_stmt): Likewise.
2009
2010 2011-01-21  Jason Merrill  <jason@redhat.com>
2011
2012         PR c++/46552
2013         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
2014
2015         PR c++/46977
2016         * semantics.c (potential_constant_expression_1): Split out from
2017         potential_constant_expression.  Add want_rval parm.  Handle
2018         template expression forms.  Don't enforce restriction on address
2019         of automatic variable here.  Add a couple of diagnostics that
2020         had been missing.
2021         (require_potential_constant_expression): New entry point.
2022         (build_data_member_initialization, register_constexpr_fundef): Adjust.
2023         (maybe_constant_value): Check potential_constant_expression.
2024         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
2025         * tree.c (build_vec_init_expr): Adjust.
2026
2027 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
2028
2029         PR c++/47303
2030         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
2031         or DECL_EXTERNAL.
2032
2033 2011-01-17  Jason Merrill  <jason@redhat.com>
2034
2035         PR c++/47067
2036         * semantics.c (base_field_constructor_elt): New fn.
2037         (cxx_eval_bare_aggregate): Use it.
2038         (build_data_member_initialization): Leave COMPONENT_REF for
2039         vfield inits.
2040
2041 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
2042
2043         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
2044         workaround.
2045
2046 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
2047             Jonathan Wakely  <jwakely.gcc@gmail.com>
2048
2049         PR c++/33558
2050         * decl.c (grokdeclarator): Reject mutable reference members.
2051
2052 2011-01-14  Jason Merrill  <jason@redhat.com>
2053
2054         PR c++/47289
2055         * pt.c (coerce_template_parms): Fix error recovery.
2056
2057         PR c++/46903
2058         * typeck2.c (check_narrowing): Only check arithmetic types.
2059
2060         PR c++/46688
2061         * tree.c (build_vec_init_expr): Handle flexible array
2062         properly.
2063
2064 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
2065
2066         PR c++/47213
2067         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
2068         TYPE_MAIN_DECL instead of TYPE_NAME.
2069         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
2070         * decl2.c (determine_visibility): Add check
2071         of CLASS_TYPE_P for underlying_type.
2072
2073 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
2074
2075         * cp-tree.h (begin_for_scope): New prototype.
2076         (begin_for_stmt): Update prototype.
2077         (begin_range_for_stmt): Update prototype.
2078         * init.c (build_vec_init): Update call to begin_for_stmt.
2079         * parser.c (cp_parser_for): New.
2080         (cp_parser_c_for): Add three new parameters.
2081         (cp_parser_range_for): Likewise. Most parsing code removed.
2082         (cp_parser_iteration_statement): Call cp_parser_for instead of
2083         cp_parser_c_for and cp_parser_range_for.
2084         (cp_parser_for_init_statement): Add new parameter and return type.
2085         (cp_parser_block_declaration): Update call to
2086         cp_parser_simple_declaration.
2087         (cp_parser_simple_declaration): Add new parameter.
2088         Update call to cp_parser_init_declarator.
2089         (cp_parser_init_declarator): Add new parameter.
2090         * pt.c (tsubst_expr): Update call to begin_for_stmt.
2091         * semantics.c (begin_for_scope): New.
2092         (begin_for_stmt): Add two new parameters.
2093         (begin_range_for_stmt): Likewise.
2094
2095 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
2096
2097         * parser.c (cp_parser_objc_at_property_declaration): Improved
2098         error message.
2099
2100 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
2101
2102         PR debug/46955
2103         * cp-lang.c (get_template_innermost_arguments_folded)
2104         (get_template_argument_pack_elems_folded)
2105         (template_arg_needs_folding, fold_cplus_constants): New static
2106         functions.
2107         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
2108         get_template_innermost_arguments_folded.
2109         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
2110         get_template_argument_pack_elems_folded.
2111
2112 2011-01-11  Jason Merrill  <jason@redhat.com>
2113
2114         PR c++/46658
2115         * init.c (build_new_1): Handle value-init in templates differently.
2116
2117         PR c++/45520
2118         * tree.c (maybe_dummy_object): Check current_class_ref against
2119         context, not current_class_type.
2120
2121 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
2122
2123         PR objc/47078
2124         * parser.c (cp_parser_objc_typename): If the type is unknown, for
2125         error recovery purposes behave as if it was not specified so that
2126         the default type is used.
2127
2128 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
2129
2130         PR c++/47022
2131         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
2132         for the second build_x_va_arg argument.
2133
2134 2011-01-05  Tom Tromey  <tromey@redhat.com>
2135
2136         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
2137         (lvalue_or_else): Likewise.
2138
2139 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
2140
2141         PR target/38662
2142         * tree.c (cxx_type_hash_eq):
2143         Allow METHOD_TYPE, too.
2144
2145 \f
2146 Copyright (C) 2011 Free Software Foundation, Inc.
2147
2148 Copying and distribution of this file, with or without modification,
2149 are permitted in any medium without royalty provided the copyright
2150 notice and this notice are preserved.