OSDN Git Service

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