OSDN Git Service

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