OSDN Git Service

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