OSDN Git Service

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