OSDN Git Service

* pt.c (reregister_specialization): Use htab_find instead of
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2011-10-09  Jakub Jelinek  <jakub@redhat.com>
2             Diego Novillo  <dnovillo@google.com>
3
4         * pt.c (reregister_specialization): Use htab_find instead of
5         htab_find_slot with INSERT.
6         (maybe_process_partial_specialization, lookup_template_class_1): Change
7         slot variable type to void ** to avoid aliasing problems.
8         (register_specialization): Likewise.  Use slot != NULL instead of
9         more expensive !optimize_specialization_lookup_p (tmpl) test.
10
11 2011-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
12
13         PR c++/34927
14         * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
15         inform messages in case of cloned destructor.
16
17 2011-10-06  Jason Merrill  <jason@redhat.com>
18
19         PR c++/39164
20         * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
21
22 2011-10-02  Jason Merrill  <jason@redhat.com>
23
24         * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
25         Change unsubstituted_packs to bool.
26
27         * parser.c (cp_parser_range_for): Don't try to deduce from {}
28         in a template.
29
30         PR c++/35722
31         Implement N2555 (expanding pack expansion to fixed parm list)
32         * pt.c (coerce_template_parms): Allow expanding a pack expansion
33         to a fixed-length argument list.
34         (unify_pack_expansion): Handle explicit args properly.
35         (unify) [TREE_VEC]: Handle pack expansions here.
36         [TYPE_ARGUMENT_PACK]: Not here.
37         (tsubst_pack_expansion): Don't try to do partial substitution.
38         (pack_deducible_p): New.
39         (fn_type_unification): Use it.
40         (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
41         of a type parameter.
42         (check_non_deducible_conversion): Split from type_unification_real.
43         (unify_one_argument): Split from type_unification_real...
44         (unify_pack_expansion): ...and here.  Drop call_args_p parm.
45         (type_unification_real, unify, more_specialized_fn): Adjust.
46
47         * class.c (fixed_type_or_null): Handle NSDMI.
48         * method.c (walk_field_subobs): Disable NSDMI noexcept checking
49         for now.
50
51 2011-09-30  Jason Merrill  <jason@redhat.com>
52
53         * cp-tree.h (TREE_NEGATED_INT): Remove.
54         * semantics.c (finish_unary_op_expr): Don't set it.
55
56 2011-09-30  Janis Johnson  <janisjo@codesourcery.com>
57
58         PR c++/44473
59         * mangle.c (write_type): Handle CV qualifiers for decimal classes.
60
61 2011-09-26   Andi Kleen <ak@linux.intel.com>
62
63         * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
64
65 2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>
66
67         PR c++/45278
68         * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
69         comparison of pointer with zero.
70
71 2011-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
72
73         PR c++/31489
74         * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
75         set CLASSTYPE_DECLARED_CLASS.
76
77 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
78
79         * decl.c (duplicate_decls): If compatible stpcpy prototype
80         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
81
82 2011-09-26  Jason Merrill  <jason@redhat.com>
83
84         PR c++/45012
85         * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
86         constant value if we're still in a template.
87
88         PR c++/46105
89         * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
90
91         PR c++/50508
92         * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
93         rather than ==.
94
95 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
96
97         PR c++/45487
98         * error.c (dump_template_bindings): Separate bindings with semicolons
99         instead of commas.
100
101 2011-09-26  Jason Merrill  <jason@redhat.com>
102
103         PR c++/50512
104         * call.c (compare_ics): Only consider rvaluedness_matches_p
105         if the target type is the same or it too differs in rvalueness.
106
107         PR c++/50523
108         * call.c (implicit_conversion): Mask out inappropriate LOOKUP
109         flags at the top of the function.
110
111         * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
112
113 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
114
115         * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
116
117 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
118
119         PR c++/26747
120         * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
121
122 2011-09-25  Jason Merrill  <jason@redhat.com>
123
124         * parser.c (inject_this_parameter): Split out from
125         cp_parser_late_return_type_opt.
126         (cp_parser_class_specifier_1): Use it for NSDMIs.
127         * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
128
129 2011-09-24  Jason Merrill  <jason@redhat.com>
130
131         * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
132         * cp-tree.h: Declare it.
133         * method.c (walk_field_subobs): Use it.
134
135         * init.c (perform_member_init): Instantiate NSDMI here.
136         * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
137
138         Handle deferred parsing of NSDMIs.
139         * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
140         * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
141         (cp_parser_late_parse_one_default_arg): Split out from
142         cp_parser_late_parsing_default_args.
143         (cp_parser_late_parsing_nsdmi): New.
144         (push_unparsed_function_queues): Set it.
145         (cp_parser_parameter_declaration): Save the '=' token.
146         (cp_parser_template_parameter): Likewise.
147         (cp_parser_default_argument): Call cp_parser_initializer
148         rather than cp_parser_initializer_clause.
149         (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
150         (cp_parser_member_declaration): Handle nsdmis.
151         * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
152
153         Implement C++11 non-static data member initializers.
154         * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
155         * error.c (maybe_warn_cpp0x): Handle it.
156         * call.c (convert_like_real) [ck_user]: Don't complain about
157         using an explicit constructor for direct-initialization.
158         * class.c (check_field_decl): Fix ancient typo.
159         (check_field_decls): NSDMIs make the default ctor non-trivial.
160         * decl.c (cp_finish_decl): Record NSDMI.
161         (grokdeclarator): Allow NSDMI.
162         * decl2.c (grokfield): Allow NSDMI.  Correct LOOKUP flags.
163         * init.c (perform_member_init): Use NSDMI.
164         * method.c (walk_field_subobs): Check for NSDMI.
165         * parser.c (cp_parser_member_declaration): Parse { } init.
166         * semantics.c (register_constexpr_fundef): Don't talk about
167         a return statement in a constexpr constructor.
168         (cxx_eval_call_expression): Check DECL_INITIAL instead of
169         DECL_SAVED_TREE.
170
171 2011-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
172
173         PR c++/44267
174         * class.c (build_base_path): Add a tsubst_flags_t parameter.
175         (convert_to_base): Adjust call.
176         * typeck.c (build_class_member_access_expr,
177         get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
178         * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
179         * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
180         * rtti.c (build_dynamic_cast_1): Likewise.
181         * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
182         * call.c (build_over_call, build_special_member_call): Likewise.
183         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
184         build_up_reference): Likewise.
185         * cp-tree.h (build_base_path): Adjust declaration.
186
187 2011-09-23  Jason Merrill  <jason@redhat.com>
188
189         Core 253 - allow const objects with no initializer or
190         user-provided default constructor if the defaulted constructor
191         initializes all the subobjects.
192         PR c++/20039
193         PR c++/42844
194         * class.c (default_init_uninitialized_part): New.
195         * cp-tree.h: Declare it.
196         * decl.c (check_for_uninitialized_const_var): Use it.
197         * init.c (perform_member_init): Likewise.
198         (build_new_1): Likewise.
199         * method.c (walk_field_subobs): Likewise.
200
201 2011-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
202
203         PR c++/50258
204         * decl.c (check_static_variable_definition): Allow in-class
205         initialization of static data member of non-integral type in
206         permissive mode.
207
208 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
209
210         PR c++/50491
211         * semantics.c (potential_constant_expression_1): Handle USING_DECL.
212
213 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
214
215         PR c++/50371
216         * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
217
218 2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
219             Paolo Carlini  <paolo.carlini@oracle.com>
220
221         PR c++/50344
222         * friend.c (make_friend_class): cv-qualification is ok in a
223         friend declaration.
224
225 2011-09-21  Paolo Carlini  <paolo.carlini@oracle.com>
226
227         PR c++/50454
228         * decl.c (grokdeclarator): Consistently handle both __int128
229         and unsigned __int128 with -pedantic; suppress diagnostic in
230         system headers.
231
232 2011-09-20  Jason Merrill  <jason@redhat.com>
233
234         * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
235         (DECL_GENERATED_P): New.
236         * class.c (finalize_literal_type_property): Use them.
237         * semantics.c (is_instantiation_of_constexpr): Likewise.
238         (register_constexpr_fundef): Likewise.
239
240         * call.c (convert_default_arg): Avoid redundant copy.
241         * tree.c (bot_manip): Copy everything.
242
243 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
244
245         * call.c (build_new_method_call_1): Use non-virtual lookup
246         for final virtual functions.
247
248 2011-09-16  Jason Merrill  <jason@redhat.com>
249
250         PR c++/50424
251         * call.c (set_flags_from_callee): Split out from build_call_a.
252         * cp-tree.h: Declare it.
253         * tree.c (bot_manip): Call it.
254
255 2011-09-15  Jason Merrill  <jason@redhat.com>
256
257         PR c++/50365
258         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
259         for clearing current_class_ptr, too.
260
261 2011-09-14   Diego Novillo  <dnovillo@google.com>
262
263         * name-lookup.c (lookup_arg_dependent): Use conditional
264         timevars.
265         * decl.c (xref_tag): Likewise.
266
267 2011-09-14  Paolo Carlini  <paolo.carlini@oracle.com>
268
269         PR c++/50391
270         * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
271         to build_exception_variant.
272
273 2011-09-13  Dodji Seketeli  <dodji@redhat.com>
274
275         PR c++/48320
276         * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
277         nodes.  Add a comment.
278         (arg_from_parm_pack_p):  New static function, factorized out from
279         tsubst_pack_expansion and extended to support non-type parameter
280         packs represented with TEMPLATE_PARM_INDEX nodes.
281         (tsubst_pack_expansion): Use arg_from_parm_pack_p.
282
283 2011-09-12  Jason Merrill  <jason@redhat.com>
284
285         * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
286         with no deducible template parameters.
287         * call.c (rejection_reason_code): Add rr_template_conversion.
288         (print_z_candidate): Handle it.
289         (template_conversion_rejection): New.
290         (build_user_type_conversion_1): Use it.
291
292         * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
293         on all of the second conversion sequence.
294         (build_user_type_conversion_1): Set bad_p on the ck_user conv.
295         (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
296         first section.  Fix loop logic.
297         (initialize_reference): Call convert_like for diagnostics when
298         we have a (bad) conversion.
299
300         * call.c (convert_class_to_reference)
301         (convert_class_to_reference_1): Remove.
302         (reference_binding): Use build_user_type_conversion_1 instead.
303
304         * call.c (initialize_reference): Add flags parm.
305         * decl.c (grok_reference_init): Likewise.
306         (check_initializer): Pass it.
307         * typeck.c (convert_for_initialization): Likewise.
308         * cp-tree.h: Adjust.
309
310         * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
311         * call.c (conditional_conversion): Use it.
312         (reference_binding): Fix handling of xvalues.
313
314 2011-09-09  Jason Merrill  <jason@redhat.com>
315
316         * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
317         before forcing instantiation.
318
319 2011-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
320
321         PR c++/50324
322         * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
323         instead of complete_type_or_else.
324
325 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
326
327         PR c++/33255 - Support -Wunused-local-typedefs warning
328         * name-lookup.c (pushdecl_maybe_friend_1): Use the new
329         record_locally_defined_typedef.
330         * decl.c (finish_function): Use the new
331         maybe_warn_unused_local_typedefs.
332         (grokfield): Use the new record_locally_defined_typedef.
333         * parser.c (lookup_name): Use the new maybe_record_typedef_use.
334
335 2011-09-07  Paolo Carlini  <paolo.carlini@oracle.com>
336
337         PR c++/50309
338         * decl.c (grokdeclarator): Check u.function.exception_specification
339         for error_mark_node.
340
341 2011-09-07  Jason Merrill  <jason@redhat.com>
342
343         PR c++/50298
344         * parser.c (cp_parser_member_declaration): Don't require a constant
345         rvalue here in C++0x.
346
347         * pt.c (type_unification_real): Correct complain arg for tsubsting
348         default template args.
349
350         * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
351
352 2011-09-06  Jason Merrill  <jason@redhat.com>
353
354         PR c++/50296
355         * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
356         (cx_check_missing_mem_inits): Handle bases and empty trivial members.
357         (validate_constexpr_fundecl): Remove.
358         * decl.c (start_preparsed_function): Don't call it.
359         * cp-tree.h: Don't declare it.
360
361 2011-09-04  Jason Merrill  <jason@redhat.com>
362
363         PR c++/49267
364         * call.c (reference_binding): Don't set is_lvalue for an rvalue
365         reference rfrom.
366
367         PR c++/49267
368         PR c++/49458
369         DR 1328
370         * call.c (reference_binding): Set rvaluedness_matches_p properly
371         for reference to function conversion ops.
372         (compare_ics): Adjust.
373
374         * class.c (trivial_default_constructor_is_constexpr): Rename from
375         synthesized_default_constructor_is_constexpr.
376         (type_has_constexpr_default_constructor): Adjust.
377         (add_implicitly_declared_members): Call it instead.
378         (explain_non_literal_class): Explain about non-constexpr default ctor.
379         * cp-tree.h: Adjust.
380         * method.c (synthesized_method_walk): Adjust.
381         * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
382         functions, too.
383
384         PR c++/50248
385         Core 1358
386         * init.c (perform_member_init): Don't diagnose missing inits here.
387         (emit_mem_initializers): Or here.
388         * method.c (process_subob_fn): Don't instantiate constexpr ctors.
389         * semantics.c (cx_check_missing_mem_inits): New.
390         (explain_invalid_constexpr_fn): Call it.
391         (register_constexpr_fundef): Likewise.  Leave
392         DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
393         (cxx_eval_call_expression): Adjust diagnostics.
394         (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
395
396 2011-08-30  Jason Merrill  <jason@redhat.com>
397
398         PR c++/50084
399         * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
400         to type_definition_p.
401         * parser.c (cp_parser_set_decl_spec_type): Likewise.
402         * decl.c (grokdeclarator): Check it.
403
404         PR c++/50089
405         * semantics.c (finish_id_expression): Use
406         current_nonlambda_class_type for qualified-ids.
407
408         PR c++/50114
409         * decl.c (poplevel): Disable for scope compatibility hack
410         in C++11 mode.
411
412         PR c++/50220
413         * semantics.c (add_capture): Call complete_type for copy.
414
415         PR c++/50234
416         * semantics.c (cxx_eval_component_reference): Handle
417         value-initialization for omitted initializers.
418
419 2011-08-29  Jason Merrill  <jason@redhat.com>
420
421         PR c++/50224
422         * semantics.c (finish_id_expression): Mark captured variables used.
423
424 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
425             Jason Merrill  <jason@redhat.com>
426
427         PR c++/50207
428         * class.c (finish_struct_1): Complain if the first field is
429         artificial.
430
431 2011-08-29  Jason Merrill  <jason@redhat.com>
432
433         PR c++/50209
434         Core DR 994
435         * parser.c (cp_parser_default_argument): Use
436         cp_parser_initializer_clause.
437         (cp_parser_late_parsing_default_args): Likewise.
438
439 2011-08-26  Jason Merrill  <jason@redhat.com>
440
441         Core DR 342
442         PR c++/48582
443         * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
444         is valid in C++11.
445         (convert_nontype_argument): Likewise.  Implicitly convert nullptr
446         and do constant folding.
447         * mangle.c (write_template_arg_literal): Mangle null member
448         pointer values as 0.
449         * call.c (null_member_pointer_value_p): New.
450         * cp-tree.h: Declare it.
451
452 2011-08-25  Jason Merrill  <jason@redhat.com>
453
454         * call.c (convert_like_real): Remove redundant complain checks.
455
456         PR c++/50157
457         * call.c (convert_like_real): Exit early if bad and !tf_error.
458
459 2011-08-23  Jason Merrill  <jason@redhat.com>
460
461         * typeck2.c (build_functional_cast): Don't try to avoid calling
462         build_value_init.
463         * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
464
465 2011-08-23  Jason Merrill  <jason@redhat.com>
466
467         PR c++/49045
468         Core 1321
469         * tree.c (dependent_name): New.
470         (cp_tree_equal): Two calls with the same dependent name are
471         equivalent even if the overload sets are different.
472
473 2011-08-23  Jason Merrill  <jason@redhat.com>
474
475         * tree.c (build_target_expr): Set TREE_CONSTANT on
476         literal TARGET_EXPR if the value is constant.
477         * typeck2.c (build_functional_cast): Don't set it here.
478
479 2011-08-23  Jason Merrill  <jason@redhat.com>
480
481         Core 903 (partial)
482         * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
483
484 2011-08-23  Jason Merrill  <jason@redhat.com>
485
486         Core 975
487         * decl.c (cxx_init_decl_processing): Initialize
488         dependent_lambda_return_type_node.
489         * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
490         (dependent_lambda_return_type_node): Define.
491         (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
492         * semantics.c (lambda_return_type): Handle overloaded function.
493         Use dependent_lambda_return_type_node instead of
494         DECLTYPE_FOR_LAMBDA_RETURN.
495         (apply_lambda_return_type): Don't check dependent_type_p.
496         * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
497         (instantiate_class_template_1): Likewise.
498         (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
499         * mangle.c (write_type): Likewise.
500         * typeck.c (structural_comptypes): Likewise.
501         (check_return_expr): Handle dependent_lambda_return_type_node.
502
503 2011-08-23  Jason Merrill  <jason@redhat.com>
504
505         PR c++/50024
506         * semantics.c (maybe_constant_value): Don't try to fold { }.
507         * pt.c (build_non_dependent_expr): Don't wrap { }.
508         * init.c (build_value_init): Allow scalar value-init in templates.
509
510 2011-08-23  Jason Merrill  <jason@redhat.com>
511
512         * semantics.c (potential_constant_expression_1): Allow 'this'.
513
514 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
515
516         PR c++/50158
517         * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
518         if it has side-effects and needs to be preevaluated.
519
520 2011-08-23  Siddhesh Poyarekar  <siddhesh.poyarekar@gmail.com>
521
522         PR c++/50055
523         * except.c (begin_eh_spec_block): Build EH_SPEC block on the
524         same line as the function.
525
526 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
527
528         PR c++/46862
529         * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
530         which doesn't have any fields, clear it and diagnose.
531
532 2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
533             Marc Glisse  <marc.glisse@normalesup.org>
534
535         PR libstdc++-v3/1773
536         * mangle.c (decl_mangling_context): Call
537         targetm.cxx.decl_mangling_context.
538         (write_unscoped_name): Use decl_mangling_context.
539
540 2011-08-18  Dodji Seketeli  <dodji@redhat.com>
541
542         PR c++/45625
543         * pt.c (parameter_of_template_p): Handle comparison with DECLs of
544         template parameters as created by process_template_parm.
545
546 2011-08-16  Jason Merrill  <jason@redhat.com>
547
548         PR c++/50086
549         * pt.c (unify_pack_expansion): Correct overloaded unification
550         logic.
551
552         * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
553         on a member function or static data member, call mark_used.
554
555         PR c++/50054
556         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
557         init_list_type_node.
558
559 2011-08-13  Jason Merrill  <jason@redhat.com>
560
561         PR c++/50075
562         * name-lookup.c (local_bindings_p): New.
563         * name-lookup.h: Declare it.
564         * lex.c (unqualified_name_lookup_error): Use it.
565
566         PR c++/50059
567         * error.c (dump_expr): Handle MODIFY_EXPR properly.
568
569         * decl.c (grok_reference_init): Handle constexpr here.
570         * call.c (initialize_reference): Not here.
571
572 2011-08-12  David Li  <davidxl@google.com>
573
574         * class.c (update_vtable_entry_for_fn): Set
575         LOST_PRIMARY bit properly.
576
577 2011-08-12  Jason Merrill  <jason@redhat.com>
578
579         PR c++/50034
580         * call.c (convert_arg_to_ellipsis): force_rvalue only in
581         potentially evaluated context.
582
583 2011-08-12  Richard Guenther  <rguenther@suse.de>
584
585         * call.c (build_over_call): Instead of memcpy use an
586         assignment of two MEM_REFs.
587
588 2011-08-11  Romain Geissler  <romain.geissler@gmail.com>
589             Brian Hackett  <bhackett1024@gmail.com>
590
591         * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
592
593 2011-08-10  Richard Guenther  <rguenther@suse.de>
594
595         * call.c (build_over_call): Call memcpy unconditionally.
596
597 2011-08-08  Jason Merrill  <jason@redhat.com>
598
599         PR c++/50020
600         * semantics.c (finish_call_expr): Don't look at 'this' if we
601         had an explicit object argument.
602
603         PR c++/50011
604         * typeck2.c (check_narrowing): Fix integer logic.
605
606 2011-08-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
607
608         * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
609
610 2011-08-05  Jason Merrill  <jason@redhat.com>
611
612         PR c++/48993
613         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
614         on 'this' in a constructor.
615
616         PR c++/49921
617         * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
618
619         PR c++/49669
620         * init.c (perform_member_init): Handle invalid array initializer.
621
622         PR c++/49988
623         * semantics.c (cxx_eval_array_reference): Handle failure to
624         reduce the array operand to something we can work with.
625
626 2011-08-05  Gabriel Charette  <gchare@google.com>
627
628         * decl.c (finish_function): Remove unecessary line 0 hack.
629
630 2011-08-05  Jason Merrill  <jason@redhat.com>
631
632         PR c++/47453
633         * typeck.c (build_x_compound_expr_from_list): Also complain
634         about ({...}).
635
636         PR c++/49812
637         * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
638
639         PR c++/49983
640         * parser.c (cp_parser_range_for): Only do auto deduction in
641         template if the range is non-dependent.
642
643         * init.c (perform_member_init): Always build_aggr_init
644         for a class member with an explicit mem-initializer.
645
646         * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
647
648 2011-08-04  Jakub Jelinek  <jakub@redhat.com>
649
650         PR middle-end/49905
651         * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
652         for operator new and operator new [].  Call init_attributes.
653
654 2011-08-02  Jason Merrill  <jason@redhat.com>
655
656         PR c++/43886
657         * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
658
659         PR c++/49577
660         * typeck2.c (check_narrowing): Check unsigned mismatch.
661         * semantics.c (finish_compound_literal): check_narrowing.
662
663         PR c++/49593
664         * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
665
666         PR c++/49803
667         * init.c (sort_mem_initializers): Initialize uses_unions_p here.
668         (build_field_list): Not here.
669
670         PR c++/49834
671         * parser.c (build_range_temp): Split out from...
672         (cp_convert_range_for): ...here.
673         (do_range_for_auto_deduction): New.
674         (cp_parser_range_for): Use it.
675
676 2011-08-02  Jakub Jelinek  <jakub@redhat.com>
677
678         * cp-tree.h (finish_omp_atomic): Adjust prototype.
679         (cxx_omp_const_qual_no_mutable): New prototype.
680         (finish_omp_taskyield): New prototype.
681         * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
682         parsing OpenMP 3.1 atomics.  Adjust finish_omp_atomic caller.
683         (cp_parser_omp_clause_name): Handle final and mergeable clauses.
684         (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
685         functions.
686         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
687         and PRAGMA_OMP_CLAUSE_MERGEABLE.
688         (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
689         (cp_parser_omp_taskyield): New function.
690         (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
691         (cp_parser_omp_clause_reduction): Handle min and max.
692         * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
693         (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
694         OMP_CLAUSE_MERGEABLE.
695         * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
696         arguments.  Handle OpenMP 3.1 atomics.  Adjust c_finish_omp_atomic
697         caller.
698         (finish_omp_clauses): Don't complain about const qualified
699         predetermined vars and static data members in firstprivate clause.
700         Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
701         and MAX_EXPR.
702         (finish_omp_taskyield): New function.
703         * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
704         (cxx_omp_predetermined_sharing): Use it.
705
706 2011-08-02  Jason Merrill  <jason@redhat.com>
707
708         * call.c (build_call_a): Also check at_function_scope_p.
709
710 2011-08-01  Jason Merrill  <jason@redhat.com>
711
712         PR c++/49932
713         * mangle.c (write_prefix): Handle decltype.
714
715         PR c++/49924
716         * semantics.c (cxx_eval_vec_init_1): Fix logic.
717
718         PR c++/49813
719         * semantics.c (potential_constant_expression_1): Allow any builtin.
720         (morally_constexpr_builtin_function_p): Remove.
721
722 2011-07-29  Jason Merrill  <jason@redhat.com>
723
724         PR c++/49867
725         * parser.c (cp_parser_lambda_expression): Also clear in_statement
726         and in_switch_statement_p.
727         (cp_parser_class_specifier): Likewise.
728
729 2011-07-28  Jason Merrill  <jason@redhat.com>
730
731         PR c++/49808
732         * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
733         (convert_nontype_argument, tsubst_template_arg): Handle its output.
734
735 2011-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
736
737         PR c++/49813
738         * semantics.c (potential_constant_expression_1):  Handle FMA_EXPR.
739
740 2011-07-27  Jeffrey Yasskin  <jyasskin@google.com>
741
742         * pt.c (build_template_decl): Copy the function_decl's
743         source location to the new template_decl.
744
745 2011-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
746
747         PR c++/49776
748         * typeck.c (cp_build_modify_expr): Check digest_init return value
749         for error_mark_node.
750
751 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
752
753         PR bootstrap/49845
754         * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
755         and *end before returning.
756
757 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
758
759         PR c++/49838
760         * parser.c (cp_parser_perform_range_for_lookup): Early return if
761         error_operand_p (range).
762
763 2011-07-23  Jason Merrill  <jason@redhat.com>
764
765         PR c++/49823
766         * parser.c (cp_parser_qualifying_entity): Handle templates.
767
768 2011-07-22  Jason Merrill  <jason@redhat.com>
769
770         PR c++/49793
771         * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
772         Make conditional on -Wnarrowing.
773
774 2011-07-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
775
776         Warn about the use of final/override in non-c++0x mode, and
777         add __final for non-c++0x mode.
778         * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
779         * error.c (maybe_warn_cpp0x): Adjust.
780         * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
781         '__final' as a non-c++0x alternative for 'final'.
782
783 2011-07-22  Jason Merrill  <jason@redhat.com>
784             Mark Glisse  <marc.glisse@normalesup.org>
785
786         PR c++/30112
787         * decl.c (cp_finish_decl): Apply pragma redefine_extname in
788         other namespaces as well.
789         * name-lookup.c (c_linkage_bindings): Define.
790         (lookup_extern_c_fun_in_all_ns): Rename from
791         lookup_extern_c_fun_binding_in_all_ns.  Return tree.
792         (pushdecl_maybe_friend_1): Adjust.  Copy DECL_ASSEMBLER_NAME.
793
794 2011-07-20  Jason Merrill  <jason@redhat.com>
795
796         * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
797         designated initializer syntax.
798         * decl.c (check_array_designated_initializer): Add index parm.
799         (maybe_deduce_size_from_array_init): Pass it.
800         (reshape_init_array_1): Likewise.
801
802         PR c++/6709 (DR 743)
803         PR c++/42603 (DR 950)
804         * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
805         (cp_parser_nested_name_specifier_opt): Allow decltype.
806         (cp_parser_qualifying_entity): Likewise.
807         (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
808         (cp_parser_simple_type_specifier): Handle decltype as scope.
809         (cp_parser_base_specifier): Allow decltype.
810         (cp_parser_base_clause): Don't crash on null base.
811         * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
812         (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
813
814 2011-07-19  Jason Merrill  <jason@redhat.com>
815
816         PR c++/49785
817         * pt.c (coerce_template_parms): Handle non-pack after pack.
818
819 2011-07-19  Richard Guenther  <rguenther@suse.de>
820
821         * call.c (build_special_member_call): Use fold_build_pointer_plus.
822         * class.c (build_base_path): Likewise.
823         (convert_to_base_statically): Likewise.
824         (dfs_accumulate_vtbl_inits): Likewise.
825         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
826         * except.c (expand_start_catch_block): Likewise.
827         * init.c (expand_virtual_init): Likewise.
828         (build_new_1): Likewise.
829         (build_vec_delete_1): Likewise.
830         (build_vec_delete): Likewise.
831         * rtti.c (build_headof): Likewise.
832         (tinfo_base_init): Likewise.
833         * typeck.c (get_member_function_from_ptrfunc): Likewise.
834         (cp_build_addr_expr_1): Likewise.
835         * typeck2.c (build_m_component_ref): Likewise.
836
837 2011-07-18  Martin Jambor  <mjambor@suse.cz>
838
839         * parser.c (cp_parser_parameter_declaration_list): Initialize
840         parenthesized_p.
841
842 2011-07-16  Jason Merrill  <jason@redhat.com>
843
844         * pt.c (tinst_level_tick, last_template_error_tick): Replace with
845         last_error_tinst_level.
846         (push_tinst_level, pop_tinst_level): Adjust.
847         (problematic_instantiation_changed): Adjust.
848         (record_last_problematic_instantiation): Adjust.
849         * error.c (cp_print_error_function): Don't print
850         current_function_decl if we're in a template instantiation context.
851         (print_instantiation_full_context): Always print first line.
852
853 2011-07-16  Nathan Froyd  <froydnj@codesourcery.com>
854             Jason Merrill  <jason@redhat.com>
855
856         PR c++/45329
857         PR c++/48934
858         * cp-tree.h (fn_type_unification): Add `bool' parameter.
859         * pt.c (enum template_base_result): Define.
860         (unify_success, unify_unknown): Define.
861         (unify_parameter_deduction_failure): Define.
862         (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
863         (unify_parameter_pack_mismatch): Define.
864         (unify_parameter_pack_inconsistent): Define.
865         (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
866         (unify_expression_unequal, unify_inconsistency): Define.
867         (unify_method_type_error, unify_arity): Likewise.
868         (unify_too_many_parameters, unify_too_few_parameters): Define.
869         (unify_arg_conversion, unify_no_common_base): Define.
870         (unify_illformed_ptrmem_cst_expr): Define.
871         (unify_substitution_failure): Define.
872         (unify_inconsistent_template_template_parameters): Define.
873         (unify_template_deduction_failure): Define.
874         (unify_template_argument_mismatch): Define.
875         (unify_overload_resolution_failure): Define.
876         (comp_template_args_with_info): New function, split out from...
877         (comp_template_args): ...here.  Call it.
878         (deduction_tsubst_fntype): Add `complain' parameter'.  Pass it
879         to tsubst.
880         (unify): Add `explain_p' parameter.  Pass to all relevant calls.
881         Call above status functions when appropriate.
882         (resolve_overloaded_unification, try_one_overload): Likewise.
883         (type_unification, type_unification_real): Likewise.
884         (unify_pack_expansion): Likewise.
885         (get_template_base, try_class_unification): Likewise.
886         (get_bindings, more_specialized_fn): Pass false to unification
887         calls.
888         (get_class_bindings, do_auto_deduction): Likewise.
889         (convert_nontype_argument): Likewise.
890         (fn_type_unification): Likewise.  Pass tf_warning_or_error if
891         explain_p.
892         (get_template_base): Add `explain_p' parameter and pass it to
893         try_class_unification.  Return an enum template_base_result.
894         * class.c (resolve_address_of_overloaded_function): Pass false to
895         fn_type_unification.
896         * call.c (enum rejection_reason_code): Add new codes.
897         (struct rejection_reason): Add template_unification field.
898         Add template_instantiation field.
899         (template_unification_rejection): Define.
900         (template_unification_error_rejection): Define.
901         (template_instantiation_rejection): Define.
902         (invalid_copy_with_fn_template_rejection): Define.
903         (add_template_candidate): Pass false to unify.
904         Provide more rejection reasons when possible.
905         (print_template_unification_rejection): Define.
906         (print_arity_rejection): Define, split out from...
907         (print_z_candidate): ...here.  Add cases for new rejection
908         reasons.
909
910 2011-07-15  Jason Merrill  <jason@redhat.com>
911
912         * Make-lang.in (check-g++-strict-gc): New.
913         (cp/except.o): Depend on gt-cp-except.h
914         * except.c: Include gt-cp-except.h.
915         * config-lang.in (gtfiles): Add cp/except.c.
916         * decl2.c (mark_used): Adjust constexpr condition, set
917         function_depth around template instantiation.
918         * parser.c (cp_parser_lambda_body): Set function_depth.
919         * semantics.c (maybe_add_lambda_conv_op): Likewise.
920
921         PR testsuite/49741
922         * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
923
924 2011-07-13  Jason Merrill  <jason@redhat.com>
925
926         * Make-lang.in (check-c++0x): New.
927
928 2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
929
930         * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
931         rather than a pointer to it.  Return true if the whole of the value
932         was initialized by the generated statements.  Use
933         complete_ctor_at_level_p instead of count_type_elements.
934
935 2011-07-12   Diego Novillo  <dnovillo@google.com>
936
937         * name-lookup.h (cp_binding_level): Rename from cxx_scope.
938         Update all users.
939         (struct cp_binding_level): Fix indentation.
940
941 2011-07-11  Jason Merrill  <jason@redhat.com>
942
943         PR c++/49672
944         * pt.c (extract_fnparm_pack): Split out from...
945         (make_fnparm_pack): ...here.
946         (instantiate_decl): Handle non-pack parms after a pack.
947         * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
948
949         * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
950
951         PR c++/44609
952         * cp-tree.h (struct tinst_level): Add errors field.
953         * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
954         (push_tinst_level): Don't start another decl in that case.
955         (reopen_tinst_level): Adjust errors field.
956         * decl2.c (cp_write_global_declarations): Don't complain about
957         undefined inline if its template was defined.
958         * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
959
960 2011-07-10  Jason Merrill  <jason@redhat.com>
961
962         PR c++/49691
963         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
964         rather than current_class_type to determine whether to set 'this'.
965         (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
966         (cp_parser_init_declarator): Pass down member_p.
967
968 2011-07-09  Jason Merrill  <jason@redhat.com>
969
970         * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
971
972 2011-07-08  Jason Merrill  <jason@redhat.com>
973
974         PR c++/45437
975         * typeck.c (cp_build_modify_expr): Preevaluate RHS.
976
977         * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
978         * optimize.c (maybe_clone_body): Likewise.
979         * semantics.c (maybe_add_lambda_conv_op): Likewise.
980
981         PR c++/45603
982         * decl.c (expand_static_init): Don't get confused by user
983         declaration of __cxa_guard_acquire.
984
985         * typeck.c (cp_apply_type_quals_to_decl): Don't check
986         COMPLETE_TYPE_P either.
987
988         PR c++/49673
989         * typeck.c (cp_apply_type_quals_to_decl): Don't check
990         TYPE_NEEDS_CONSTRUCTING.
991
992 2011-07-07  Jason Merrill  <jason@redhat.com>
993
994         PR c++/49663
995         * pt.c (push_deduction_access_scope): Preserve
996         processing_template_decl across push_to_top_level.
997         And revert:
998         * class.c (pushclass): Accept NULL argument.
999         (popclass): Deal with popping null class.
1000         * pt.c (push_access_scope, pop_access_scope): Use them rather than
1001         push_to_top_level/pop_from_top_level.
1002         * name-lookup.c (lookup_name_real_1): Check current_class_type.
1003
1004 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
1005
1006         PR c/49644
1007         * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
1008         one non-complex and one complex argument, call save_expr on both
1009         operands.
1010
1011 2011-07-06  Jason Merrill  <jason@redhat.com>
1012
1013         PR c++/49353
1014         * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
1015         on kept inlines.
1016
1017         PR c++/49568
1018         * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
1019
1020 2011-07-05  Jason Merrill  <jason@redhat.com>
1021
1022         PR c++/48157
1023         * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
1024         partial instantiation.
1025
1026         PR c++/49598
1027         * semantics.c (finish_id_expression): convert_from_reference.
1028
1029 2011-07-05  Richard Guenther  <rguenther@suse.de>
1030
1031         * decl.c (cxx_init_decl_processing): Defer building common
1032         tree nodes to c_common_nodes_and_builtins.
1033
1034 2011-07-04  Jason Merrill  <jason@redhat.com>
1035
1036         DR 1207
1037         PR c++/49589
1038         * mangle.c (write_expression): Handle 'this'.
1039         * parser.c (cp_parser_postfix_dot_deref_expression): Allow
1040         incomplete *this.
1041         * semantics.c (potential_constant_expression_1): Check that
1042         DECL_CONTEXT is set on 'this'.
1043
1044         * error.c (dump_template_bindings): Don't print typenames
1045         for a partial instantiation.
1046         (dump_function_decl): If we aren't printing function arguments,
1047         print template arguments as <args> rather than [with ...].
1048         (dump_expr): Don't print return type or template header.
1049         [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
1050         * pt.c (dependent_template_arg_p): Handle null arg.
1051
1052         * error.c (type_to_string): Avoid redundant akas.
1053
1054 2011-07-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
1055
1056         PR c++/49605
1057         * init.c (build_delete): Only warn for sfk_deleting_destructor.
1058
1059 2011-07-01  Jakub Jelinek  <jakub@redhat.com>
1060
1061         * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
1062         (cp/class.o): Likewise.
1063         (cp/error.o): Likewise.
1064         (cp/name-lookup.o): Likewise.
1065         (cp/decl2.o): Likewise.  Don't depend on $(POINTER_SET_H).
1066
1067 2011-07-01  Jason Merrill  <jason@redhat.com>
1068
1069         PR c++/48261
1070         * pt.c (lookup_template_function): Handle non-function.
1071
1072         PR c++/48593
1073         * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
1074         * tree.c (build_qualified_name): Set PTRMEM_OK_P.
1075         * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
1076         SCOPE_REF, too.
1077         * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
1078         (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
1079
1080         PR c++/48883
1081         PR c++/49609
1082         * pt.c (resolve_nondeduced_context): Call mark_used.
1083
1084         PR c++/49085
1085         * semantics.c (finish_offsetof): Complain about incomplete type.
1086
1087 2011-06-30  Jason Merrill  <jason@redhat.com>
1088
1089         PR c++/49387
1090         * rtti.c (get_tinfo_decl): Call complete_type.
1091
1092         PR c++/49569
1093         * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
1094         DECL_PARM_INDEX on rhs parm.
1095
1096         * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
1097
1098         PR c++/49355
1099         * tree.c (stabilize_init): Handle aggregate initialization.
1100
1101         PR c++/48481
1102         * name-lookup.c (struct arg_lookup): Add fn_set.
1103         (add_function): Check it.
1104         (lookup_arg_dependent_1): Initialize it.
1105
1106 2011-06-29  Jason Merrill  <jason@redhat.com>
1107
1108         PR c++/49216
1109         * init.c (build_new_1): Pass {} down to build_vec_init.
1110         (build_vec_init): Handle it.
1111
1112         DR 1207
1113         PR c++/49003
1114         * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
1115         x_current_class_ref.
1116         (current_class_ptr, current_class_ref): Use them.
1117         * decl.c (build_this_parm): Handle getting the class type.
1118         * parser.c (cp_parser_late_return_type_opt): Set up 'this'
1119         for use within the trailing return type.
1120
1121         * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
1122         don't tsubst DECL_INITIAL unless our type use auto.
1123
1124         PR c++/49520
1125         * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
1126         (massage_constexpr_body): Not here.
1127
1128         PR c++/49554
1129         * semantics.c (lambda_proxy_type): New.
1130         (build_capture_proxy): Use it.
1131         * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
1132         * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
1133
1134         PR c++/45923
1135         * class.c (explain_non_literal_class): New.
1136         (finalize_literal_type_property): Call it.
1137         * cp-tree.h: Declare it.
1138         * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
1139         (is_valid_constexpr_fn): Likewise.
1140         (massage_constexpr_body): Split out from...
1141         (register_constexpr_fundef): ...here.
1142         (is_instantiation_of_constexpr): New.
1143         (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
1144         (explain_invalid_constexpr_fn): New.
1145         (cxx_eval_call_expression): Call it.
1146         (potential_constant_expression_1): Likewise.  Avoid redundant errors.
1147         * method.c (process_subob_fn): Diagnose non-constexpr.
1148         (walk_field_subobs): Likewise.
1149         (synthesized_method_walk): Don't shortcut if we want diagnostics.
1150         (explain_implicit_non_constexpr): New.
1151         (defaulted_late_check): Use it.
1152         * call.c (build_cxx_call): Remember location.
1153
1154         * method.c (maybe_explain_implicit_delete): Use pointer_set
1155         instead of htab.
1156
1157         * class.c (finalize_literal_type_property): Update conditions.
1158         * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
1159
1160         * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
1161         * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
1162         * semantics.c (cxx_eval_vec_init_1): Correct type.
1163
1164         * init.c (build_value_init): Decide whether or not to zero-initialize
1165         based on user-providedness of default ctor, not any ctor.
1166         (build_value_init_noctor): Adjust assert.
1167
1168         DR 990
1169         * call.c (convert_like_real) [ck_user]: Handle value-initialization.
1170         (build_new_method_call_1): Likewise.
1171         * init.c (expand_default_init): Handle direct list-initialization
1172         of aggregates.
1173
1174 2011-06-27  Jakub Jelinek  <jakub@redhat.com>
1175
1176         * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
1177
1178 2011-06-26  Jason Merrill  <jason@redhat.com>
1179
1180         PR c++/49528
1181         * semantics.c (potential_constant_expression_1): Check
1182         for non-literality rather than cleanup.
1183         (cxx_eval_constant_expression): Likewise.
1184
1185         PR c++/49528
1186         * semantics.c (potential_constant_expression_1): A TARGET_EXPR
1187         with a cleanup isn't constant.
1188         (cxx_eval_constant_expression): Likewise.
1189         * init.c (expand_default_init): Use maybe_constant_init.
1190
1191 2011-06-24  Jakub Jelinek  <jakub@redhat.com>
1192
1193         PR c++/46400
1194         * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
1195         instead of TYPE_CHAIN for chain_next for types.
1196
1197 2011-06-23  Gabriel Charette  <gchare@google.com>
1198
1199         * name-lookup.h (cp_binding_level): Removed unused
1200         member names_size. Update all users.
1201
1202 2011-06-23  Jason Merrill  <jason@redhat.com>
1203
1204         * typeck2.c (build_functional_cast): Strip cv-quals for value init.
1205         * init.c (build_zero_init_1): Not here.
1206
1207         PR c++/35255
1208         * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
1209
1210 2011-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
1211
1212         PR c++/44625
1213         * decl2.c (build_anon_union_vars): Early return error_mark_node
1214         for a nested anonymous struct.
1215
1216 2011-06-23  Jason Merrill  <jason@redhat.com>
1217
1218         PR c++/49507
1219         * decl2.c (mark_used): Don't call synthesize_method for
1220         functions defaulted outside the class.
1221
1222         * optimize.c (maybe_clone_body): Set linkage flags before
1223         cgraph_same_body_alias.
1224
1225         PR c++/49440
1226         * class.c (set_linkage_according_to_type): Hand off to
1227         determine_visibility.
1228
1229         PR c++/49395
1230         * init.c (build_zero_init_1): Strip cv-quals from scalar types.
1231
1232         PR c++/36435
1233         * pt.c (most_specialized_instantiation): Do check return types.
1234
1235 2011-06-22  Jason Merrill  <jason@redhat.com>
1236
1237         PR c++/49260
1238         * call.c (build_call_a): Set cp_function_chain->can_throw here.
1239         (build_cxx_call): Not here.
1240
1241 2011-06-21  Jason Merrill  <jason@redhat.com>
1242
1243         PR c++/49172
1244         * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
1245         (grokdeclarator): constexpr doesn't apply const for refs.
1246         * parser.c (cp_parser_initializer_clause): Don't call
1247         maybe_constant_value here.
1248         * call.c (initialize_reference): Handle constexpr.
1249
1250         PR c++/49482
1251         * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
1252         static fn parameters.
1253
1254         * call.c (add_builtin_candidates): Use cv_unqualified rather than
1255         TYPE_MAIN_VARIANT.
1256         * pt.c (tsubst_arg_types): Likewise.
1257         * except.c (build_throw): Use cv_unqualified.
1258
1259         PR c++/49418
1260         * call.c (cxx_type_promotes_to): Don't strip cv-quals.
1261         * semantics.c (lambda_return_type): Strip them here.
1262
1263 2011-06-21  Andrew MacLeod  <amacleod@redhat.com>
1264
1265         * semantics.c: Add sync_ or SYNC__ to builtin names.
1266
1267 2011-06-20  Jason Merrill  <jason@redhat.com>
1268
1269         PR c++/49216
1270         * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
1271         base is a pointer.
1272         * typeck2.c (process_init_constructor_array): Use {} for classes,
1273         too.
1274         * call.c (convert_like_real): Handle substitution failure.
1275
1276         PR c++/48138
1277         * pt.c (canonicalize_type_argument): New.
1278         (convert_template_argument, unify): Use it.
1279
1280         PR c++/47080
1281         * call.c (rejection_reason_code): Add rr_explicit_conversion.
1282         (print_z_candidate): Handle it.
1283         (explicit_conversion_rejection): New.
1284         (build_user_type_conversion_1): Reject an explicit conversion
1285         function that requires more than a qualification conversion.
1286
1287         PR c++/47635
1288         * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
1289
1290         PR c++/48138
1291         * tree.c (strip_typedefs): Use build_aligned_type.
1292
1293         PR c++/49205
1294         * call.c (sufficient_parms_p): Allow parameter packs too.
1295
1296         PR c++/43321
1297         * semantics.c (describable_type): Remove.
1298         * cp-tree.h: Likewise.
1299         * decl.c (cp_finish_decl): Don't call it.
1300         * init.c (build_new): Likewise.
1301         * parser.c (cp_parser_omp_for_loop): Likewise.
1302         * pt.c (tsubst_decl): Likewise.
1303         (do_auto_deduction): If we fail in a template, try again
1304         at instantiation time.
1305
1306         PR c++/43831
1307         * parser.c (cp_parser_lambda_introducer): Complain about redundant
1308         captures.
1309         * semantics.c (add_capture): Likewise.
1310         (register_capture_members): Clear IDENTIFIER_MARKED.
1311
1312 2011-06-17  Jason Merrill  <jason@redhat.com>
1313
1314         PR c++/49458
1315         * call.c (convert_class_to_reference_1): Allow binding function
1316         lvalue to rvalue reference.
1317
1318         PR c++/43912
1319         Generate proxy VAR_DECLs for better lambda debug info.
1320         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
1321         (LAMBDA_EXPR_PENDING_PROXIES): New.
1322         (struct tree_lambda_expr): Add pending_proxies.
1323         * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
1324         (qualify_lookup): Use is_lambda_ignored_entity.
1325         * parser.c (cp_parser_lambda_expression): Don't adjust field names.
1326         Call insert_pending_capture_proxies.
1327         (cp_parser_lambda_introducer): Use this_identifier.
1328         (cp_parser_lambda_declarator_opt): Call the object parameter
1329         of the op() "__closure" instead of "this".
1330         (cp_parser_lambda_body): Call build_capture_proxy.
1331         * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
1332         (insert_pending_capture_proxies, insert_capture_proxy): New.
1333         (is_normal_capture_proxy, is_capture_proxy): New.
1334         (add_capture): Add __ to field names here, return capture proxy.
1335         (add_default_capture): Use this_identifier, adjust to expect
1336         add_capture to return a capture proxy.
1337         (outer_lambda_capture_p, thisify_lambda_field): Remove.
1338         (finish_id_expression, lambda_expr_this_capture): Adjust.
1339         (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
1340         * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
1341         is null.
1342
1343         * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
1344         of artificial locals.
1345
1346         * parser.c (cp_parser_lambda_expression): Clear
1347         LAMBDA_EXPR_THIS_CAPTURE after parsing.
1348         * pt.c (tsubst_copy_and_build): Make sure it isn't set.
1349
1350         * cp-tree.h (struct tree_lambda_expr): Change common to typed.
1351         Move non-pointers to end of struct.
1352
1353         * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
1354         * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
1355
1356         * semantics.c (finish_non_static_data_member): Preserve dereference
1357         in template.
1358
1359 2011-06-16  Jason Merrill  <jason@redhat.com>
1360
1361         PR c++/44160
1362         * parser.c (cp_parser_lambda_body): Share code between
1363         simple and complex cases instead of using cp_parser_function_body.
1364
1365         PR c++/45378
1366         * decl.c (check_initializer): Check narrowing.
1367
1368         PR c++/49229
1369         * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
1370
1371         PR c++/49251
1372         * semantics.c (finish_id_expression): Mark even dependent
1373         variables as used.
1374
1375         PR c++/49420
1376         * error.c (dump_template_argument): Don't try to omit default
1377         template args from an argument pack.
1378
1379 2011-06-15  H.J. Lu  <hongjiu.lu@intel.com>
1380
1381         PR c++/49412
1382         * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
1383         assembler supports hidden visibility.
1384
1385 2011-06-14  Jason Merrill  <jason@redhat.com>
1386
1387         PR c++/49107
1388         * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
1389         * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
1390         if the declaration had an exception-specifier.
1391         (process_subob_fn): Don't maybe_instantiate_noexcept.
1392         * pt.c (maybe_instantiate_noexcept): Handle overload.
1393         * typeck2.c (nothrow_spec_p_uninst): New.
1394         (merge_exception_specifiers): Add 'fn' parm.  Build up overload.
1395         * typeck.c (merge_types): Adjust.
1396
1397         * pt.c (deduction_tsubst_fntype): Don't save input_location.
1398         (maybe_instantiate_noexcept): Likewise.
1399
1400 2011-06-14  Joseph Myers  <joseph@codesourcery.com>
1401
1402         * Make-lang.in (cp/method.o): Update dependencies.
1403         * method.c: Include common/common-target.h.
1404         (use_thunk): Use targetm_common.have_named_sections.
1405
1406 2011-06-14  Steve Ellcey  <sje@cup.hp.com>
1407
1408         * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
1409
1410 2011-06-14  Jason Merrill  <jason@redhat.com>
1411
1412         * error.c (type_to_string): Print typedef-stripped version too.
1413
1414         PR c++/49117
1415         * call.c (perform_implicit_conversion_flags): Print source type as
1416         well as expression.
1417
1418         PR c++/49389
1419         * typeck2.c (build_m_component_ref): Preserve rvalueness.
1420
1421         PR c++/49369
1422         * class.c (build_base_path): Fix cv-quals in unevaluated context.
1423
1424         PR c++/49290
1425         * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
1426         of fold_indirect_ref_1.
1427         (cxx_eval_indirect_ref): Use it.
1428
1429 2011-06-11  Jan Hubicka  <jh@suse.cz>
1430
1431         * decl2.c (cp_write_global_declarations): Process aliases; look trhough
1432         same body aliases.
1433
1434 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1435
1436         PR c++/41769
1437         * decl.c (grokdeclarator): Reject operator names in parameters.
1438
1439 2011-06-10  Jan Hubicka  <jh@suse.cz>
1440
1441         * decl2.c (clear_decl_external): New functoin.
1442         (cp_write_global_declarations): Use it.
1443
1444 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1445
1446         * cp-tree.h (error_operand_p): Remove.
1447
1448 2011-06-09  David Krauss  <potswa@mac.com>
1449
1450         PR c++/49118
1451         * typeck2.c (build_x_arrow): Push fake template context
1452         to produce diagnostic on acyclic endless operator-> drill-down.
1453         * call.c (build_new_op): Change Boolean overload status
1454         value to a pointer to the overload function.
1455         * cp-tree.h: Likewise.
1456         * typeck.c: Likewise.
1457         * parser.c: Likewise.
1458         * decl2.c: Likewise.
1459         * pt.c: Likewise.
1460
1461 2011-06-09  Jason Merrill  <jason@redhat.com>
1462
1463         * semantics.c (maybe_constant_value): Handle overflowed input.
1464         (non_const_var_error): Handle non-constant DECL_INITIAL.
1465
1466         * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
1467
1468         * parser.c (cp_parser_constant_expression): Just return the
1469         non-constant expression.
1470
1471         * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
1472
1473 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
1474
1475         PR c++/29003
1476         * decl.c (grokdeclarator): Reject operator names in typedefs.
1477
1478 2011-06-08  Jason Merrill  <jason@redhat.com>
1479
1480         PR c++/49107
1481         * cp-tree.def (DEFERRED_NOEXCEPT): New.
1482         * cp-tree.h (struct tree_deferred_noexcept): New.
1483         (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
1484         (DEFERRED_NOEXCEPT_SPEC_P): New.
1485         (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
1486         (union lang_tree_node): Add tree_deferred_noexcept.
1487         (maybe_instantiate_noexcept): Declare.
1488         * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
1489         * error.c (dump_exception_spec): Likewise.
1490         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
1491         * ptree.c (cxx_print_xnode): Likewise.
1492         * tree.c (cp_tree_equal): Likewise.
1493         * decl.c (cp_tree_node_structure): Likewise.
1494         (duplicate_decls): Call maybe_instantiate_noexcept.
1495         * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
1496         (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
1497         DEFERRED_NOEXCEPT_SPEC_P.
1498         * typeck2.c (merge_exception_specifiers): Likewise.
1499         * decl2.c (mark_used): Call maybe_instantiate_noexcept.
1500         * method.c (process_subob_fn, defaulted_late_check): Likewise.
1501         * pt.c (tsubst_exception_specification): Add defer_ok parm.
1502         Build DEFERRED_NOEXCEPT.
1503         (maybe_instantiate_noexcept): New.
1504         (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
1505         * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
1506
1507         * semantics.c (potential_constant_expression_1): Handle destructor
1508         call.
1509
1510 2011-06-08  Jakub Jelinek  <jakub@redhat.com>
1511
1512         * cp-tree.h (struct tinst_level): Add chain_next GTY
1513         markup.
1514
1515 2011-06-08  Jason Merrill  <jason@redhat.com>
1516
1517         PR c++/49322
1518         * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
1519         if a pending_template entry is pointing at it.
1520
1521 2011-06-07  Jason Merrill  <jason@redhat.com>
1522
1523         PR c++/48969
1524         PR c++/44175
1525         * error.c (subst_to_string): New.
1526         (cp_printer): Use it for 'S'.
1527         (print_instantiation_partial_context_line): Handle subst context.
1528         * pt.c (push_tinst_level): Handle subst context.
1529         (deduction_tsubst_fntype): Don't track specific substitutions.
1530         Use push_tinst_level.
1531
1532         * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
1533         (fn_type_unification): Don't call push_deduction_access_scope here.
1534
1535 2011-06-06  Jason Merrill  <jason@redhat.com>
1536
1537         PR c++/48780
1538         * typeck.c (perform_integral_promotions): Don't promote scoped enums.
1539         * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
1540
1541 2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>,
1542
1543         PR obj-c++/48275
1544         * parser.c (cp_parser_objc_at_property_declaration): Allow setter
1545         and getter names to use all the allowed method names.
1546
1547 2011-06-06  Jason Merrill  <jason@redhat.com>
1548
1549         PR c++/49298
1550         * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
1551
1552         PR objc++/49221
1553         * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
1554         at_function_scope_p.
1555
1556         PR c++/49134
1557         * tree.c (build_target_expr): Deal with ARM ABI tweaks.
1558
1559 2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
1560
1561         * init.c (build_delete): Warn when deleting type with non-virtual
1562         destructor.
1563
1564 2011-06-03  Jakub Jelinek  <jakub@redhat.com>
1565
1566         PR c++/49276
1567         * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
1568         DECL_CONTEXT.
1569
1570 2011-06-01  Jason Merrill  <jason@redhat.com>
1571
1572         * pt.c (build_non_dependent_expr): Remove special handling of
1573         REFERENCE_REF_P.
1574
1575         PR c++/44175
1576         * pt.c (template_args_equal): Handle one arg being NULL_TREE.
1577         (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
1578
1579         PR c++/49253
1580         * typeck2.c (build_x_arrow): Don't use build_min_nt.
1581
1582 2010-05-31  Fabien Chêne  <fabien@gcc.gnu.org>
1583
1584         PR c++/48010
1585         * name-lookup.c (supplement_binding_1): If the old binding was a
1586         type name, also check that the DECL actually refers to the same
1587         type or is not a type.
1588
1589 2011-05-31  Jason Merrill  <jason@redhat.com>
1590
1591         PR c++/44870
1592         * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR.  Handle
1593         ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
1594         (build_min_non_dep): Preserve reference refs.
1595         (build_min_non_dep_call_vec): Likewise
1596
1597 2011-05-30  Jakub Jelinek  <jakub@redhat.com>
1598
1599         PR c++/49223
1600         * semantics.c (finish_omp_clauses): Call require_complete_type
1601         even for copyin/copyprivate clauses.  Only call
1602         cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
1603
1604 2011-05-28  Jason Merrill  <jason@redhat.com>
1605
1606         PR c++/46124
1607         * parser.c (cp_parser_lambda_expression): Improve error recovery.
1608         (cp_parser_lambda_declarator_opt): Likewise.  Return bool.
1609
1610 2011-05-27  Jason Merrill  <jason@redhat.com>
1611
1612         PR c++/47277
1613         * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
1614         after we see the ~.
1615
1616         * mangle.c (mangle_decl_string): Make sure we don't try to mangle
1617         templates.
1618
1619         PR c++/47049
1620         * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
1621         * decl.c (start_preparsed_function): Don't call comdat_linkage for
1622         a template.
1623
1624         PR c++/47132
1625         * mangle.c (write_expression): Handle MODOP_EXPR.
1626
1627         PR c++/47277
1628         * parser.c (cp_parser_unqualified_id): Don't check
1629         constructor_name_p for enums.
1630
1631         PR c++/47687
1632         * pt.c (dependent_type_p_r): Avoid infinite recursion.
1633
1634         PR c++/48284
1635         * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
1636         with INDIRECT_REF of REFERENCE_TYPE.
1637
1638         PR c++/49181
1639         * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
1640
1641 2011-05-27  Nathan Froyd  <froydnj@codesourcery.com>
1642
1643         * cp-tree.h (building_stmt_tree): Delete.
1644         * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
1645         (build_aggr_init_full_exprs): Call building_stmt_list_p
1646         instead of building_stmt_tree.
1647         (initialize_local_var): Likewise.
1648         (finish_function): Likewise.
1649         * decl2.c (finish_anon_union): Likewise.
1650         * init.c (begin_init_stmts): Likewise.
1651         (finish_init_stmts): Likewise.
1652         (expand_aggr_init_1): Likewise.
1653         * name-lookup.c (do_local_using_decl): Likewise.
1654         (do_namespace_alias): Likewise.
1655         (do_using_directive): Likewise.
1656         (cp_emit_debug_info_for_using): Likewise.
1657         * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
1658
1659 2011-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
1660
1661         PR c++/42056
1662         * typeck2.c (build_functional_cast): Complain early for invalid uses
1663         of 'auto' and set type to error_mark_node.
1664
1665 2011-05-26  Jason Merrill  <jason@redhat.com>
1666
1667         PR c++/47721
1668         * parser.c (cp_parser_member_declaration): Allow friend T.
1669         * friend.c (make_friend_class): Ignore non-classes.
1670         * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
1671
1672         DR 1004
1673         * pt.c (convert_template_argument): Don't complain about using
1674         injected-class-name as template template argument.
1675
1676         PR c++/47956
1677         * decl.c (check_static_variable_definition): Now static.
1678         (cp_finish_decl): Call it here.
1679         (grokdeclarator): Not here.
1680         * pt.c (instantiate_class_template_1): Or here.
1681         * cp-tree.h: Don't declare it.
1682
1683 2011-05-26  Janis Johnson  <janis187@us.ibm.com>
1684             Nathan Froyd  <froydnj@codesourcery.com>
1685
1686         PR c++/2288
1687         PR c++/18770
1688         * name-lookup.h (enum scope_kind): Add sk_cond.
1689         * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
1690         Detect and report error for redeclaration from for-init or if
1691         or switch condition.
1692         (begin_scope): Handle sk_cond.
1693         * semantics.c (begin_if_stmt): Use sk_cond.
1694         (begin switch_stmt): Ditto.
1695
1696 2011-05-26  Jason Merrill  <jason@redhat.com>
1697
1698         PR c++/48211
1699         * name-lookup.h (cp_class_binding): Make base a pointer.
1700         * name-lookup.c (new_class_binding): Adjust.
1701         (poplevel_class): Adjust.
1702
1703         PR c++/48424
1704         * decl.c (grokparms): Function parameter packs don't need to
1705         go at the end.
1706         * pt.c (type_unification_real): But they aren't deduced otherwise.
1707
1708 2011-05-25  Jason Merrill  <jason@redhat.com>
1709
1710         PR c++/48536
1711         * decl.c (build_enumerator): If incremented enumerator won't fit in
1712         previous integral type, find one it will fit in.
1713
1714         PR c++/48599
1715         * decl.c (create_array_type_for_decl): Complain about array of auto.
1716
1717         PR c++/44994
1718         PR c++/49156
1719         * error.c (dump_template_bindings): Set processing_template_decl
1720         for a partial instantiation.
1721
1722         PR c++/45401
1723         * decl.c (grokdeclarator): Don't change type when adding rvalue ref
1724         to another reference type.
1725
1726         PR c++/44311
1727         * decl.c (case_conversion): New.
1728         (finish_case_label): Use it.
1729
1730         * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
1731
1732         PR c++/45698
1733         * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
1734
1735         PR c++/46005
1736         * decl.c (grokdeclarator): Complain about auto typedef.
1737
1738         PR c++/46245
1739         * decl.c (grokdeclarator): Complain later for auto parameter.
1740         * pt.c (splice_late_return_type): Handle use in a template
1741         type-parameter.
1742
1743         PR c++/46696
1744         * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
1745
1746         PR c++/47184
1747         * parser.c (cp_parser_parameter_declaration): Recognize
1748         list-initialization.
1749         (cp_parser_direct_declarator): Check for the closing
1750         paren before parsing definitely.
1751
1752         PR c++/48935
1753         * parser.c (cp_parser_constructor_declarator_p): Don't check
1754         constructor_name_p for enums.
1755         (cp_parser_diagnose_invalid_type_name): Correct error message.
1756
1757         PR c++/45418
1758         * init.c (perform_member_init): Handle list-initialization
1759         of array of non-trivial class type.
1760
1761         PR c++/45080
1762         * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
1763         * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
1764
1765         PR c++/48292
1766         * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
1767         function parameter pack.
1768         (tsubst_pack_expansion): Likewise.
1769
1770         * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
1771         TS_COMMON.
1772
1773 2011-05-25  Jakub Jelinek  <jakub@redhat.com>
1774
1775         * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
1776         as TS_TYPED.
1777
1778         PR c++/49136
1779         * semantics.c (cxx_eval_bit_field_ref): Handle the
1780         case when BIT_FIELD_REF doesn't cover only a single field.
1781
1782 2011-05-24  Jason Merrill  <jason@redhat.com>
1783
1784         PR c++/49042
1785         * pt.c (get_mostly_instantiated_function_type): Use
1786         push_deferring_access_checks rather than set flag_access_control.
1787
1788 2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>,
1789
1790         * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
1791         syntax error in declaring an ObjC instance variable.
1792
1793 2011-05-24  Jason Merrill  <jason@redhat.com>
1794
1795         PR c++/48884
1796         * class.c (pushclass): Accept NULL argument.
1797         (popclass): Deal with popping null class.
1798         * pt.c (push_access_scope, pop_access_scope): Use them rather than
1799         push_to_top_level/pop_from_top_level.
1800         (push_deduction_access_scope, pop_defarg_context): New.
1801         (fn_type_unification): Use them.
1802         * name-lookup.c (lookup_name_real_1): Check current_class_type.
1803
1804 2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
1805
1806         * decl.c (grokdeclarator): Use current_class_name.
1807
1808 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
1809
1810         * Make-lang.in (GXX_OBJS): Remove prefix.o.
1811         (g++$(exeext)): Use libcommon-target.a.
1812         (CXX_C_OBJS): Remove prefix.o.
1813
1814 2011-05-23  Jason Merrill  <jason@redhat.com>
1815
1816         * pt.c (tsubst_copy_and_build): Use current_class_name.
1817
1818         PR c++/49102
1819         * call.c (convert_arg_to_ellipsis): Call force_rvalue.
1820
1821         PR c++/49105
1822         * typeck.c (cp_build_c_cast): Don't strip cv-quals when
1823         converting to reference.
1824         (build_static_cast_1): Update for glvalues.
1825
1826         PR c++/49105
1827         * typeck.c (build_const_cast_1): Handle rvalue references.
1828
1829         PR c++/47263
1830         * decl.c (use_eh_spec_block): Do use an EH spec block for a
1831         lambda op().
1832
1833         PR c++/49058
1834         * call.c (splice_viable): Be strict in templates.
1835
1836         PR c++/47336
1837         * error.c (dump_template_bindings): Suppress access control.
1838
1839         PR c++/47544
1840         * pt.c (instantiate_decl): Handle =default.
1841
1842         PR c++/48617
1843         * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
1844
1845 2011-05-23  Nathan Froyd  <froydnj@codesourcery.com>
1846
1847         * call.c (build_over_call): Tweak call to check_function_arguments.
1848         * typeck.c (cp_build_function_call_vec): Likewise.
1849
1850 2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
1851
1852         PR c++/18016
1853         * init.c (perform_member_init): Check for self-initialization.
1854
1855 2011-05-22  Jason Merrill  <jason@redhat.com>
1856
1857         PR c++/48647
1858         * typeck.c (composite_pointer_type_r): Return error_mark_node
1859         on error in SFINAE context.
1860
1861 2011-05-20  Jason Merrill  <jason@redhat.com>
1862
1863         PR c++/48945
1864         * decl.c (grokdeclarator): Don't add set const function-cv-qual
1865         for constexpr fns to memfn_quals, just add it to the type.
1866         (revert_static_member_fn): Don't complain about quals.
1867         (check_static_quals): New.
1868         (grokfndecl): Call it.
1869         (start_preparsed_function): Don't call revert_static_member_fn.
1870
1871         PR c++/48945
1872         * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
1873
1874         PR c++/48780
1875         * cvt.c (type_promotes_to): Don't promote scoped enums.
1876
1877         PR c++/49066
1878         * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
1879
1880         PR c++/48873
1881         * tree.c (stabilize_expr): Fix typo.
1882
1883         DR 1073
1884         PR c++/49082
1885         * typeck.c (comp_except_specs): noexcept(false) is not compatible
1886         with throw(type-list).
1887         * typeck2.c (merge_exception_specifiers): noexcept(false)
1888         beats any more limited specification.
1889
1890         PR c++/24163
1891         PR c++/29131
1892         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
1893         unqualified lookup.
1894         * semantics.c (perform_koenig_lookup): Add complain parm.
1895         * cp-tree.h: Adjust.
1896         * parser.c (cp_parser_postfix_expression): Adjust.
1897         (cp_parser_perform_range_for_lookup): Adjust.
1898
1899 2011-05-20  Jason Merrill  <jason@redhat.com>
1900
1901         * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
1902
1903 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
1904
1905         * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
1906
1907 2011-05-19  Jakub Jelinek  <jakub@redhat.com>
1908
1909         PR c++/49043
1910         * decl.c (check_omp_return): Stop searching on sk_function_parms.
1911
1912         PR c++/48869
1913         * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
1914         pass it down to locate_fn_flags.
1915         * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
1916         * semantics.c (cxx_omp_create_clause_info): Adjust callers.
1917         * cp-gimplify.c: Include splay-tree.h.
1918         (splay_tree_compare_decl_uid, omp_var_to_track,
1919         omp_cxx_notice_variable): New functions.
1920         (struct cp_genericize_omp_taskreg): New type.
1921         (struct cp_genericize_data): Add omp_ctx field.
1922         (cp_genericize_r): Attempt to determine implicitly determined
1923         firstprivate class type variables.
1924         (cp_genericize): Clear omp_ctx.
1925         * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
1926
1927 2011-05-18  Jason Merrill  <jason@redhat.com>
1928
1929         PR c++/48948
1930         PR c++/49015
1931         * class.c (finalize_literal_type_property): Do check
1932         for constexpr member functions of non-literal class.
1933         (finish_struct): Don't call check_deferred_constexpr_decls.
1934         * cp-tree.h: Don't declare it.
1935         (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
1936         * decl.c (grok_special_member_properties): Don't check it
1937         (grokfnedcl): Don't call validate_constexpr_fundecl.
1938         (start_preparsed_function): Do call it.
1939         * pt.c (tsubst_decl): Don't call it.
1940         (instantiate_class_template_1): Don't call
1941         check_deferred_constexpr_decls.
1942         * semantics.c (literal_type_p): Check for any incompleteness.
1943         (ensure_literal_type_for_constexpr_object): Likewise.
1944         (is_valid_constexpr_fn): Revert deferral changes.
1945         (validate_constexpr_fundecl): Likewise.
1946         (register_constexpr_fundef): Likewise.
1947         (check_deferred_constexpr_decls): Remove.
1948
1949 2011-05-16  Jason Merrill  <jason@redhat.com>
1950
1951         PR c++/48969
1952         * pt.c (deduction_tsubst_fntype): Use a VEC initially.
1953
1954 2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
1955
1956         * cxx-pretty-print.c: Update comment.
1957         * semantics.c (trait_expr_value, finish_trait_expr):
1958         Reorder the cases.
1959         * parser.c (cp_parser_primary_expression): Likewise.
1960
1961 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
1962
1963         PR c++/48994
1964         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
1965
1966 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
1967
1968         Implement final on class.
1969         * class.c (check_bases): Diagnose derivation from a final class.
1970         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
1971         (CLASSTYPE_FINAL): New.
1972         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
1973         CLASSTYPE_FINAL.
1974         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
1975
1976 2011-05-13  Jason Merrill  <jason@redhat.com>
1977
1978         PR c++/48969
1979         * pt.c (deduction_tsubst_fntype): New.
1980         (fn_type_unification): Use it.
1981         (init_template_processing): Initialize hash table.
1982         (print_template_statistics): Print hash table stats.
1983
1984         * call.c (build_op_call): Use timevar_cond_start/stop.
1985         (build_user_type_conversion): Likewise.
1986
1987 2011-05-12  Jason Merrill  <jason@redhat.com>
1988
1989         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
1990         * semantics.c (validate_constexpr_fundecl): Set it.
1991         (check_deferred_constexpr_decls): Clear it.
1992         (register_constexpr_fundef): Make sure it isn't set.
1993         * decl.c (grok_special_member_properties): Check it.
1994
1995 2011-05-11  Jason Merrill  <jason@redhat.com>
1996
1997         PR c++/48948
1998         * semantics.c (validate_constexpr_fundecl): Defer checking if
1999         an argument type is being defined.
2000         (is_valid_constexpr_fn): Add defer_ok parm.
2001         (cxx_eval_call_expression): Adjust.
2002         (check_deferred_constexpr_decls): New.
2003         (literal_type_p): Make sure type isn't being defined.
2004         (ensure_literal_type_for_constexpr_object): Handle type being defined.
2005         * cp-tree.h: Declare check_deferred_constexpr_decls.
2006         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
2007         (start_preparsed_function, cp_finish_decl): Not here.
2008         * class.c (finalize_literal_type_property): Don't call
2009         validate_constexpr_fundecl.
2010         (finish_struct): Call check_deferred_constexpr_decls.
2011         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
2012         (instantiate_class_template): Call check_deferred_constexpr_decls.
2013
2014         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
2015         rather than DECL_TEMPLATE_INSTANTIATION.
2016         (cxx_eval_call_expression): Likewise.
2017
2018         * semantics.c (register_constexpr_fundef): Add to hash table here.
2019         (validate_constexpr_fundecl): Not here.
2020
2021         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
2022
2023         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
2024         do call maybe_constant_value in C++0x mode.
2025         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
2026
2027         PR c++/48745
2028         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
2029
2030 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
2031
2032         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
2033         TYPE_VALUES_RAW.
2034         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
2035         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
2036         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
2037
2038 2011-05-10  Jason Merrill  <jason@redhat.com>
2039
2040         PR c++/48930
2041         * class.c (type_build_ctor_call): New.
2042         * cp-tree.h: Declare it.
2043         * decl.c (check_initializer): Use it instead of
2044         TYPE_NEEDS_CONSTRUCTING.
2045         * init.c (build_value_init, build_value_init_noctor): Likewise.
2046         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
2047         (build_vec_init): Likewise.
2048         * typeck2.c (process_init_constructor_array): Likewise.
2049         (process_init_constructor_record): Likewise.
2050
2051         PR c++/48736
2052         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
2053         expansion producing another expansion.
2054
2055 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
2056
2057         Fixes for override/final.
2058         * class.c (check_for_override): Diagnose final on a nonvirtual
2059         member function, diagnose override for a virtual with no matching
2060         override. Don't fiddle around with DECL_VINDEX.
2061
2062 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
2063
2064         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
2065         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2066         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
2067         operand of EXPR_PACK_EXPANSION.
2068         (cp_tree_operand_length): Declare.
2069         * tree.c (cp_tree_operand_length): Define.
2070         (cp_tree_equal): Call it.
2071         * pt.c (value_dependent_expr_P): Likewise.
2072         * mangle.c (write_expression): Likewise.
2073
2074 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
2075
2076         PR c++/48737
2077         PR c++/48744
2078         * decl.c (reshape_init): Take a complain parameter and do
2079         not call error if tf_error is not set.
2080         (check_initializer, reshape_init_r, reshape_init_array,
2081         reshape_init_array_1, reshape_init_vector, reshape_init_class):
2082         Adjust.
2083         * typeck2.c (digest_init_r): Take a complain parameter and
2084         pass it to convert_for_initialization.
2085         (digest_init, digest_init_flags, process_init_constructor_array,
2086         process_init_constructor_record, process_init_constructor_union,
2087         process_init_constructor, digest_init_r): Adjust.
2088         * init.c (expand_default_init, build_new_1): Likewise.
2089         * typeck.c (cp_build_modify_expr): Likewise.
2090         * decl2.c (grokfield): Likewise.
2091         * call.c (convert_like_real, convert_default_arg): Likewise.
2092         * semantics.c (finish_compound_literal): Pass complain to
2093         reshape_init and digest_init.
2094         * cp-tree.h: Adjust declarations.
2095
2096 2011-05-07  Fabien Chêne  <fabien@gcc.gnu.org>
2097
2098         PR c++/48859
2099         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
2100         recursion if there is user defined constructor.
2101
2102 2011-05-09  Jason Merrill  <jason@redhat.com>
2103
2104         PR c++/34772
2105         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
2106         initialization.
2107
2108 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
2109
2110         Implement final/override for member functions.
2111         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
2112         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
2113         (cp_virt_specifiers, enum virt_specifier): New.
2114         * decl.c (set_virt_specifiers): New.
2115         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
2116         * parser.c (make_call_declarator): add virt-specifiers parameter.
2117         (cp_parser_lambda_declarator_opt): Adjust.
2118         (cp_parser_direct_declarator): Likewise.
2119         (cp_parser_virt_specifier_seq_opt): New.
2120         * search.c (check_final_overrider): Diagnose attempts to override
2121         a final member function.
2122
2123 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
2124
2125         PR c++/48574
2126         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
2127         if the instance has a dependent initializer.
2128
2129 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
2130
2131         PR c++/48816
2132         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
2133         effectively unused variable.
2134
2135 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2136
2137         * name-lookup.h (global_bindings_p): Adjust prototype.
2138         * name-lookup.c (global_bindings_p): Return bool.
2139
2140 2011-05-06  Jason Merrill  <jason@redhat.com>
2141
2142         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
2143         appropriate.
2144
2145         PR c++/48909
2146         * semantics.c (cxx_eval_conditional_expression): Check
2147         integer_zerop instead.
2148         (potential_constant_expression_1): Likewise.
2149
2150         PR c++/48911
2151         * semantics.c (cxx_eval_array_reference): Handle implicit
2152         initializers.
2153
2154 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
2155
2156         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
2157         * call.c (standard_conversion): Call class_of_this_parm.
2158         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
2159         (pp_cxx_direct_abstract_declarator): Likewise.
2160         * decl2.c (change_return_type): Likewise.
2161         (cp_reconstruct_complex_type): Likewise.
2162         * error.c (dump_type_suffix, dump_function_decl): Likewise.
2163         * mangle.c (write_function_type): Likewise.
2164         * pt.c (unify): Likewise.
2165         * typeck.c (merge_types, type_memfn_quals): Likewise.
2166         * decl.c (build_this_parm): Call type_of_this_parm.
2167
2168 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
2169
2170         PR c++/48838
2171         * cp-tree.h (non_static_member_function_p): Declare new function.
2172         * tree.c (non_static_member_function_p): Define it.
2173         * semantics.c (finish_call_expr): Use it.
2174
2175 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
2176
2177         * decl.c (finish_case_label): Omit the loc argument to
2178         build_case_label.
2179
2180 2011-05-05  Jason Merrill  <jason@redhat.com>
2181
2182         * cp-tree.h (REFERENCE_REF_P): Just check the type.
2183         * cvt.c (convert_from_reference): Adjust.
2184         * pt.c (build_non_dependent_expr): Adjust.
2185         * semantics.c (finish_offsetof): Adjust.
2186         * tree.c (lvalue_kind): Use it.
2187
2188         PR c++/48873
2189         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
2190
2191 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
2192
2193         * decl.c (start_preparsed_function): Do not set
2194         dont_save_pending_sizes_p.
2195
2196 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
2197
2198         * parser.c (cp_parser_objc_method_definition_list): Update call to
2199         objc_start_method_definition.
2200
2201 2011-05-04  Jason Merrill  <jason@redhat.com>
2202
2203         PR c++/48749
2204         * class.c (resolves_to_fixed_type_p): Don't look closely
2205         in templates.
2206
2207 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
2208
2209         PR c++/28501
2210         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
2211         IMAGPART_EXPR.
2212
2213 2011-05-02  Lawrence Crowl  <crowl@google.com>
2214
2215         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
2216         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
2217         Change TV_NAME_LOOKUP to start/stop.
2218         (define_label): Refactor timevar calls out to a wrapper function.
2219         Change TV_NAME_LOOKUP to start/stop.
2220         (xref_tag): Likewise.
2221         (lookup_label): Refactor timevar calls out to a wrapper function.
2222         Change TV_NAME_LOOKUP to start_cond/stop_cond.
2223
2224         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
2225         TV_TEMPLATE_INST.
2226         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
2227         (lookup_template_class): Refactor timevar calls out to a wrapper
2228         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
2229         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
2230
2231         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
2232         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
2233         (push_namespace): Likewise.
2234         (pop_nested_namespace): Likewise.
2235         (pushdecl_namespace_level): Likewise.
2236         (store_class_bindings): Likewise.
2237         (push_to_top_level): Likewise.
2238         (identifier_type_value): Refactor timevar calls out to a wrapper
2239         function.  Change TV_NAME_LOOKUP to start/stop.
2240         (find_binding): Likewise.
2241         (push_using_decl): Likewise.
2242         (lookup_arg_dependent): Likewise.
2243         (push_using_directive): Likewise.
2244         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
2245         to plain code.  Change TV_NAME_LOOKUP to start/stop.
2246         (lookup_type_current_level): Likewise.  Refactor inner return to
2247         break.
2248         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
2249         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2250         (pushdecl_top_level_1): Likewise.
2251         (lookup_using_namespace): Likewise.
2252         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
2253         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
2254         (push_overloaded_decl): Likewise.
2255         (push_class_level_binding): Likewise.
2256         (namespace_binding): Likewise.
2257         (set_namespace_binding): Likewise.
2258         (supplement_binding): Likewise.
2259         (unqualified_namespace_lookup): Likewise.
2260         (lookup_name_real): Likewise.
2261         (lookup_type_scope): Likewise.
2262         (namespace_ancestor): Likewise.
2263         (lookup_name_innermost_nonclass_level): Likewise.
2264         (pushtag): Likewise.
2265         (pop_from_top_level): Likewise.
2266         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
2267         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
2268         lines.
2269         (add_using_namespace): Refactor timevar calls out to a wrapper
2270         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
2271         wrapper on call to self.
2272
2273         * decl2.c: (cp_write_global_declarations):  Add start/stop of
2274         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
2275         Remove push/pop calls to TV_VARCONST.
2276
2277         * parser.c: Add include of "timevar.h".
2278         (cp_parser_explicit_instantiation): Add push/pop calls to
2279         TV_TEMPLATE_INST.
2280         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
2281         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
2282         TV_PARSE_STRUCT.
2283         (cp_parser_function_definition_from_specifiers_and_declarator): Add
2284         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
2285         (cp_parser_late_parsing_for_member):  Add push/pop calls to
2286         new TV_PARSE_INMETH.
2287
2288         * call.c: Add include of "timevar.h".
2289         (convert_class_to_reference): Wrap and add push/pop calls to 
2290         TV_OVERLOAD.
2291         (build_op_call): Likewise.
2292         (build_conditional_expr): Likewise.
2293         (build_new_op): Likewise.
2294         (build_new_method_call): Likewise.
2295         (build_user_type_conversion): Reorganize to single return and add
2296         push/pop calls to TV_OVERLOAD.
2297         (perform_overload_resolution): Likewise.
2298
2299         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
2300
2301 2011-05-02  Jason Merrill  <jason@redhat.com>
2302
2303         * tree.c (build_vec_init_expr): Take complain parm.
2304         (build_vec_init_elt): Likewise.  Free arg vector.
2305         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
2306         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
2307         (VEC_INIT_EXPR_INIT): Likewise.
2308         Adjust build_vec_init_expr declaration.
2309         * init.c (perform_member_init): Adjust.
2310
2311         Revert:
2312         PR c++/40975
2313         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2314         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2315         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2316         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2317         (build_vec_init_elt): Don't expect an array type.
2318         (build_array_copy): Adjust.
2319         * init.c (perform_member_init): Adjust.
2320         (build_new_1): Use build_vec_init_expr.
2321
2322         PR c++/48834
2323         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
2324         Protect an explicit target.
2325
2326         PR c++/48446
2327         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
2328         (compute_array_index_type): Revert earlier 48446 changes.
2329         (grokdeclarator): Use stabilize_vla_size.
2330
2331 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
2332             Eric Botcazou <ebotcazou@adacore.com>
2333
2334         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
2335         instead of inappropriate zero values.
2336
2337 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
2338
2339         PR c++/47969
2340         * decl.c (compute_array_index_type): Check build_expr_type_conversion
2341         return value for NULL_TREE.
2342
2343 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2344
2345         PR c++/48606
2346         * init.c (perform_member_init): Check build_value_init return
2347         value for error_mark_node.
2348
2349 2011-04-29  Diego Novillo  <dnovillo@google.com>
2350             Le-Chun Wu  <lcwu@google.com>
2351
2352         * call.c (conversion_null_warnings): Also handle assignments
2353         when warning about NULL conversions.
2354
2355 2011-04-29  Le-Chun Wu  <lcwu@google.com>
2356
2357         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
2358         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
2359         (build_over_call): Use it to determine whether to emit a NULL
2360         warning for template function instantiations.
2361         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
2362         EXPLICIT_TARGS is set.
2363
2364 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
2365             Mike Stump <mikestump@comcast.net>
2366
2367         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
2368         in maintainer mode.  Use the --output-file option of gperf instead
2369         of > to prevent creating an empty cp/cfns.h when gperf is not
2370         available.
2371
2372 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2373
2374         PR c++/48798
2375         * semantics.c (finish_base_specifier): cv-qualified base class
2376         is fine, per DR 484.
2377
2378 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
2379
2380         PR c++/48656
2381         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
2382         considering call expressions involving a member function.
2383
2384 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2385
2386         PR c++/48530
2387         * tree.c (build_cplus_new): Check build_target_expr return
2388         value for error_mark_node.
2389
2390 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
2391
2392         PR c++/48771
2393         * semantics.c (literal_type_p): Reference types are literal types,
2394         per the FDIS.
2395         (valid_type_in_constexpr_fundecl_p): Remove.
2396         (is_valid_constexpr_fn): Adjust.
2397
2398 2011-04-27  Jason Merrill  <jason@redhat.com>
2399
2400         PR libstdc++/48760
2401         Implement list-initialization of _Complex.
2402         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
2403         (check_initializer): Likewise.
2404         * call.c (build_complex_conv): New.
2405         (implicit_conversion): Call it.
2406         (convert_like_real): Handle it.
2407         * typeck2.c (check_narrowing): Handle it.
2408
2409         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
2410         decide whether to delete.
2411         (build_vec_init): Pass sfk_complete_destructor.
2412
2413         PR c++/40975
2414         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
2415         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
2416         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
2417         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
2418         (build_vec_init_elt): Don't expect an array type.
2419         (build_array_copy): Adjust.
2420         * init.c (perform_member_init): Adjust.
2421         (build_new_1): Use build_vec_init_expr.
2422
2423         * class.c (resolve_address_of_overloaded_function): Don't
2424         change OVERLOAD to TREE_LIST.
2425         * pt.c (print_candidates_1): Remove nonsensical assert.
2426
2427         PR c++/48046
2428         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
2429         to tentative parse sooner.
2430
2431 2011-04-26  Jason Merrill  <jason@redhat.com>
2432
2433         PR c++/42687
2434         * parser.c (cp_parser_primary_expression): Set *idk to
2435         CP_ID_KIND_NONE for a parenthesized identifier.
2436
2437         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
2438         (cxx_print_identifier): Correct indentation.
2439
2440         PR c++/48530
2441         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
2442         * tree.c (force_target_expr): Add complain parm.
2443         (build_target_expr_with_type): Likewise.
2444         (get_target_expr_sfinae): Split out.
2445         (build_vec_init_expr, bot_manip): Adjust.
2446         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
2447         (build_delete, build_dtor_call): Likewise.
2448         (perform_direct_initialization_if_possible): Adjust.
2449         (build_vec_init): Handle error return.
2450         * cvt.c (force_rvalue): Add complain parm.
2451         Call build_special_member_call directly.
2452         * decl2.c (delete_sanity): Add complain parm.
2453         (build_cleanup): Adjust.
2454         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
2455         * semantics.c (finish_stmt_expr_expr): Adjust.
2456         (finish_compound_literal): Adjust.
2457         * parser.c (cp_parser_delete_expression): Adjust.
2458         * typeck2.c (build_functional_cast): Adjust.
2459         * cp-tree.h: Adjust.
2460
2461 2011-04-26  Martin Jambor  <mjambor@suse.cz>
2462
2463         * class.c (cp_fold_obj_type_ref): Remove.
2464         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
2465
2466 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
2467
2468         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
2469         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
2470         (UNDERLYING_TYPE_TYPE): Add.
2471         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
2472         as TS_COMMON.
2473         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
2474         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
2475         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
2476         * semantics.c (finish_underlying_type): New.
2477         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
2478         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
2479         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
2480         * tree.c (cp_walk_subtrees): Likewise.
2481         * pt.c (for_each_template_parm_r, tsubst, unify,
2482         dependent_type_p_r): Likewise.
2483         * mangle.c (write_type): Sorry for __underlying_type.
2484
2485 2011-04-25  Jason Merrill  <jason@redhat.com>
2486
2487         PR c++/48707
2488         * decl.c (type_dependent_init_p): New.
2489         (cp_finish_decl): Check it.
2490         * pt.c (any_type_dependent_elements_p): New.
2491         * cp-tree.h: Declare it.
2492
2493 2011-04-20  Jason Merrill  <jason@redhat.com>
2494
2495         * semantics.c (finish_compound_literal): Don't put an array
2496         with a dtor in a static variable.
2497
2498         * call.c (build_over_call): Handle trivial dtor.
2499
2500         * search.c (lookup_fnfields_slot): Call complete_type.
2501
2502         PR c++/48594
2503         * decl2.c (build_offset_ref_call_from_tree): Move
2504         non-dependency of object outside condition.
2505
2506         PR c++/48657
2507         * decl.c (cp_finish_decl): Simplify template handling.
2508
2509 2011-04-20  Jim Meyering  <meyering@redhat.com>
2510
2511         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
2512
2513 2011-04-19  Jason Merrill  <jason@redhat.com>
2514
2515         PR c++/46304
2516         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
2517
2518         PR c++/45267
2519         * decl.c (duplicate_decls): Keep always_inline attribute
2520         in sync with DECL_DISREGARD_INLINE_LIMITS.
2521
2522 2011-04-18  Jason Merrill  <jason@redhat.com>
2523
2524         PR c++/48569
2525         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
2526
2527         PR c++/48537
2528         * init.c (build_value_init): Handle UNION_TYPE the same.
2529
2530 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
2531
2532         PR c++/48632
2533         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
2534         for type dependent pointers.
2535
2536 2011-04-18  Jim Meyering  <meyering@redhat.com>
2537
2538         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
2539
2540 2011-04-17  Jan Hubicka  <jh@suse.cz>
2541
2542         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
2543         gotos.
2544
2545 2011-04-17  Jason Merrill  <jason@redhat.com>
2546
2547         PR c++/48531
2548         * typeck2.c (build_functional_cast): Disallow array type.
2549
2550         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
2551
2552 2011-04-17  Jan Hubicka  <jh@suse.cz>
2553
2554         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
2555
2556 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
2557
2558         Implement N3271
2559         * parser.c (cp_convert_range_for): Split into
2560         cp_parser_perform_range_for_lookup.
2561         (cp_parser_perform_range_for_lookup): New.
2562         (cp_parser_range_for_member_function): New.
2563         (cp_parser_for_init_statement): Correct error message.
2564         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
2565
2566 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
2567
2568         * parser.c (cp_parser_objc_protocol_declaration): Updated for
2569         change from objc_declare_protocols() to objc_declare_protocol().
2570
2571 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2572
2573         PR objc++/48479
2574         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
2575         and return immediately.
2576
2577 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2578
2579         * cp-tree.def (SWITCH_STMT): Add an extra operand.
2580         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2581         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
2582         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
2583         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
2584
2585 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2586
2587         * cp-tree.def (IF_STMT): Add an extra operand.
2588         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2589         * cp-tree.h (IF_SCOPE): Define.
2590         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
2591         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
2592
2593 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2594
2595         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
2596         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
2597         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
2598         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
2599         Use FOR_SCOPE instead of TREE_CHAIN.
2600         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
2601         (finish_for_stmt): Likewise.
2602
2603 2011-04-14  Jason Merrill  <jason@redhat.com>
2604
2605         * parser.c (cp_parser_postfix_expression): Fix flags passed to
2606         build_new_method_call.
2607         * semantics.c (finish_call_expr): Likewise.
2608
2609         PR c++/48531
2610         * init.c (build_value_init_noctor): Check complain consistently.
2611
2612         PR c++/48557
2613         * typeck.c (cp_build_binary_op): Don't decay void operands.
2614
2615         PR c++/48446
2616         * decl.c (compute_array_index_type): Use get_temp_regvar instead
2617         of variable_size.
2618         * init.c (get_temp_regvar): No longer static.
2619         * cp-tree.h: Declare it.
2620
2621 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
2622
2623         * parser.c (cp_parser_objc_class_declaration): Updated for change
2624         in objc_declare_class().
2625
2626 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
2627
2628         * decl.c (poplevel): Use block_chainon.
2629
2630 2011-04-13  Jason Merrill  <jason@redhat.com>
2631
2632         PR c++/48594
2633         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
2634         or pointer to (non-member) function.
2635
2636 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
2637
2638         PR c++/48570
2639         * semantics.c (cxx_eval_array_reference): Handle reading from
2640         wchar_t, char16_t and char32_t STRING_CST.
2641
2642 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
2643
2644         PR c++/48574
2645         * class.c (fixed_type_or_null): We cannot determine the dynamic
2646         type of a reference variable if its initializer is dependent.
2647
2648 2011-04-13  Jason Merrill  <jason@redhat.com>
2649
2650         PR c++/48581
2651         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
2652         unqualified lookup failing if we're still in a template.
2653
2654 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
2655
2656         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
2657         tree_contains_struct initialization to...
2658         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
2659         macros.
2660         * cp-objcp-common.h (cp_common_init_ts): Declare.
2661         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
2662         calling TREE_CHAIN.
2663
2664 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
2665
2666         * parser.c (cp_parser_objc_message_expression): Updated call
2667         to objc_build_message_expr.
2668
2669 2011-04-12  Martin Jambor  <mjambor@suse.cz>
2670
2671         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
2672         cgraph_get_create_node.
2673         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
2674         instead of cgraph_get_create_node.
2675         * method.c (make_alias_for_thunk): Call cgraph_get_node
2676         instead of cgraph_get_create_node, assert it returns non-NULL.
2677         (use_thunk): Likewise.
2678         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
2679         when flag_syntax_only is not set.  Call cgraph_get_node instead of
2680         cgraph_get_create_node.
2681         (maybe_clone_body): Call cgraph_get_node instead of
2682         cgraph_get_create_node.
2683
2684 2011-04-12  Martin Jambor  <mjambor@suse.cz>
2685
2686         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
2687         instead of cgraph_node.
2688         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
2689         (cp_write_global_declarations): Likewise.
2690         * optimize.c (maybe_clone_body): Likewise.
2691         * semantics.c (maybe_add_lambda_conv_op): Likewise.
2692         * mangle.c (mangle_decl): Likewise.
2693         * method.c (make_alias_for_thunk): Likewise.
2694         (use_thunk): Likewise.
2695
2696 2011-04-11  Jason Merrill  <jason@redhat.com>
2697
2698         PR c++/48535
2699         * decl.c (cp_complete_array_type_or_error): New.
2700         * semantics.c (finish_compound_literal): Use it.
2701         * cp-tree.h: Declare it.
2702
2703         PR c++/48535
2704         * semantics.c (finish_compound_literal): Handle references.
2705
2706         PR c++/48535
2707         * semantics.c (finish_compound_literal): Take complain parm.
2708         (build_lambda_object): Adjust.
2709         * cp-tree.h: Adjust.
2710         * call.c (convert_like_real): Adjust.
2711         * decl.c (check_initializer): Adjust.
2712         * parser.c (cp_parser_postfix_expression): Adjust.
2713         (cp_parser_functional_cast): Adjust.
2714         * pt.c (tsubst_copy_and_build): Adjust.
2715         * typeck2.c (process_init_constructor_record): Adjust.
2716
2717         PR c++/48534
2718         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
2719         of scoped enum.
2720
2721         PR c++/48523
2722         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
2723         than cp_build_indirect_ref.
2724
2725         PR c++/48457, Core 1238
2726         * call.c (reference_binding): Allow rvalue reference to bind to
2727         function lvalue.
2728         * tree.c (lvalue_kind): Functions are always lvalues.
2729
2730 2011-04-07  Jason Merrill  <jason@redhat.com>
2731
2732         PR c++/48500
2733         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
2734         arguments even if we don't know the function.
2735
2736         PR c++/48481
2737         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
2738         at the end of the chain.
2739         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
2740         (iterative_hash_template_arg): Likewise.
2741
2742         PR c++/48481
2743         * cp-tree.h (OVL_ARG_DEPENDENT): New.
2744         * name-lookup.c (add_function): Set it.
2745         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
2746
2747         PR c++/48481
2748         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
2749         Release unused vector.
2750
2751         PR c++/48451
2752         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
2753         (type_unification_real): Clear it here instead.
2754
2755         PR c++/48468
2756         * except.c (build_noexcept_spec): Propagate error_mark_node.
2757         (finish_noexcept_expr): Likewise.
2758
2759         PR c++/48452
2760         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
2761         in SFINAE context.
2762
2763         PR c++/48450
2764         * call.c (resolve_args): Take complain.
2765         (build_new_function_call, build_operator_new_call): Pass it.
2766         (build_op_call, build_new_op, build_new_method_call): Pass it.
2767
2768         PR c++/48450
2769         * typeck.c (check_for_casting_away_constness): Take complain.
2770         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
2771         (build_const_cast_1): Pass it.  Take full complain parm.
2772         (build_const_cast, cp_build_c_cast): Adjust.
2773
2774         * tree.c (build_aggr_init_expr): Always return error_mark_node
2775         on abstract violation.
2776
2777         PR c++/48450
2778         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
2779         (bot_manip): Adjust.
2780         * cp-tree.h: Adjust.
2781         * call.c (convert_like_real, build_cxx_call): Adjust.
2782         (perform_direct_initialization_if_possible): Adjust.
2783         * cvt.c (ocp_convert): Adjust.
2784         * init.c (build_value_init): Adjust.
2785         * semantics.c (maybe_add_lambda_conv_op): Adjust.
2786         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
2787         * typeck2.c (build_functional_cast): Adjust.
2788
2789         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
2790         level.
2791         (perform_member_init): Not here.
2792         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
2793         case to templates.
2794         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
2795
2796         PR c++/48449
2797         * typeck2.c (build_functional_cast): Check complain consistently.
2798         Use build_value_init and abstract_virtuals_error_sfinae.
2799         (abstract_virtuals_error_sfinae): Split out.
2800         * cp-tree.h: Declare it.
2801         * init.c (build_new_1): Use it.
2802         (build_value_init_noctor): Handle FUNCTION_TYPE.
2803
2804         * semantics.c (finish_decltype_type): Simplify handling of unknown
2805         type.
2806
2807         * semantics.c (finish_decltype_type): Add complain parm.
2808         * cp-tree.h: Adjust.
2809         * parser.c (cp_parser_decltype): Adjust.
2810         * pt.c (tsubst): Adjust.
2811
2812         PR c++/48450
2813         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
2814
2815 2011-03-31  Jason Merrill  <jason@redhat.com>
2816
2817         PR c++/48277
2818         * semantics.c (finish_call_expr): Remove assert.
2819
2820         PR c++/48280
2821         * method.c (defaultable_fn_check): Templates are not defaultable.
2822
2823         * parser.c (cp_parser_init_declarator): Avoid redundant
2824         cp_finish_decl for member declarations.
2825
2826 2011-03-30  Jason Merrill  <jason@redhat.com>
2827
2828         PR c++/48212
2829         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
2830         is error_mark_node.
2831
2832 2011-03-30  Jason Merrill  <jason@redhat.com>
2833
2834         PR c++/48369
2835         * semantics.c (potential_constant_expression_1): Handle
2836         UNORDERED_EXPR and ORDERED_EXPR.
2837
2838         PR c++/48281
2839         * semantics.c (finish_compound_literal): Do put static/constant
2840         arrays in static variables.
2841
2842         * call.c (convert_like_real) [ck_list]: Build up the
2843         initializer_list object directly.
2844         * decl.c (build_init_list_var_init): Adjust.
2845
2846         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
2847         * decl.c (reshape_init_array_1): Likewise.
2848
2849 2011-03-29  Jason Merrill  <jason@redhat.com>
2850
2851         PR c++/48265
2852         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
2853         the variable is constant before looking at its initializer.
2854
2855         PR c++/48319
2856         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
2857
2858         PR c++/48089
2859         * semantics.c (potential_constant_expression_1): Change error about
2860         use of *this in constructor into sorry.
2861
2862         PR c++/48296
2863         * decl.c (cp_finish_decl): Defer validation of constexpr member
2864         functions.
2865         * class.c (finalize_literal_type_property): Validate them here.
2866         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
2867
2868         * semantics.c (is_valid_constexpr_fn): Specify input location.
2869
2870 2011-03-28  Jason Merrill  <jason@redhat.com>
2871
2872         PR c++/48313
2873         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
2874         from overloaded function.
2875
2876         Core 1232
2877         * call.c (build_array_conv): New.
2878         (implicit_conversion): Use it.
2879
2880         * call.c (reference_binding): Allow direct binding to an array
2881         rvalue.
2882
2883         Core 898
2884         * parser.c (cp_parser_compound_statement): Add function_body parm.
2885         Complain about non-body compound-stmt in constexpr fn.
2886         (cp_parser_primary_expression, cp_parser_statement): Adjust.
2887         (cp_parser_implicitly_scoped_statement): Adjust.
2888         (cp_parser_function_body, cp_parser_try_block): Adjust.
2889         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
2890         (cp_parser_objc_try_catch_finally_statement): Adjust.
2891
2892         Core 898
2893         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
2894         and using-definition.
2895         (register_constexpr_fundef): Call it.
2896
2897         * except.c (build_noexcept_spec): Call cxx_constant_value after
2898         converting to bool.
2899
2900 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2901
2902         * lex.c (interface_strcmp): Handle dos-paths.
2903         (handle_pragma_implementation): Use filename_cmp instead of
2904         strcmp.
2905         (in_main_input_context): Likewise.
2906
2907 2011-03-25  Jason Merrill  <jason@redhat.com>
2908
2909         Core 1135
2910         * method.c (defaulted_late_check): Check for exception spec mismatch.
2911         (defaultable_fn_check): Allow exception spec and virtual.
2912         * class.c (check_for_override): A virtual dtor is non-trivial.
2913
2914         PR c++/48289
2915         * pt.c (build_non_dependent_expr): Keep dereferences outside the
2916         NON_DEPENDENT_EXPR.
2917
2918 2011-03-25  Kai Tietz  <ktietz@redhat.com>
2919
2920         * decl.c (decls_match): Replace target hook
2921         call of comp_type_attributes by version in tree.c file.
2922         * search.c (check_final_overrider): Likewise.
2923         * typeck.c (structural_comptypes): Likewise.
2924
2925 2011-03-21  Kai Tietz  <ktietz@redhat.com>
2926
2927         PR target/12171
2928         * cxx-pretty-print.c (pp_cxx_ptr_operator):
2929         Display allowed attributes for function pointer types.
2930         * error.c (dump_type_prefix): Likewise.
2931
2932         * tree.c (cxx_attribute_table): Adjust table.
2933
2934 2011-03-18  Jason Merrill  <jason@redhat.com>
2935
2936         PR c++/48162
2937         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
2938
2939         PR c++/48118
2940         * call.c (build_over_call): Don't skip ck_rvalue.
2941
2942 2011-03-17  Jason Merrill  <jason@redhat.com>
2943
2944         PR c++/47504
2945         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
2946         the conversion set TREE_OVERFLOW.
2947
2948         Core 1212
2949         * semantics.c (finish_decltype_type): Return T&& for xvalue.
2950         * typeck.c (unlowered_expr_type): Preserve cv-quals.
2951
2952         PR c++/48166
2953         * decl.c (revert_static_member_fn): Strip function-cv-quals.
2954
2955 2011-03-16  Jason Merrill  <jason@redhat.com>
2956
2957         PR c++/48089
2958         * semantics.c (potential_constant_expression_1): Don't allow *this
2959         in a constructor.
2960         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
2961
2962         PR c++/47301
2963         * decl.c (compute_array_index_type): Don't bother trying to deal
2964         with literal classes in ABI v1.
2965
2966         PR c++/46336
2967         * decl.c (duplicate_decls): Return NULL_TREE for clashing
2968         C functions.
2969
2970         PR c++/47570
2971         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
2972         use the generic binary expression handling.
2973
2974 2011-03-16  Diego Novillo  <dnovillo@google.com>
2975
2976         * Make-lang.in (CXX_PARSER_H): New.
2977         (cp/parser.o): Add dependency on CXX_PARSER_H.
2978         Add dependency on tree-pretty-print.h
2979         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
2980         * cp-lang.c: Include parser.h.
2981         * parser.c: Include parser.h.
2982         (struct cp_token): Add bitfield purged_p.
2983         Update all users.
2984         Move to parser.h.
2985         (CPP_PURGED): Remove.  Update all users.
2986         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
2987         Remove field buffer_length.
2988         Update all users.
2989         Move to parser.h.
2990         (struct tree_check): Move to parser.h.
2991         (cp_token_position): Likewise.
2992         (struct cp_token_cache): Likewise.
2993         (CPP_KEYWORD): Likewise.
2994         (CPP_TEMPLATE_ID): Likewise.
2995         (CPP_NESTED_NAME_SPECIFIER): Likewise.
2996         (N_CP_TTYPES): Likewise.
2997         (enum cp_parser_status_kind): Likewise.
2998         (struct cp_parser_context): Likewise.
2999         (struct cp_default_arg_entry_d): Likewise.
3000         (struct cp_unparsed_functions_entry_d): Likewise.
3001         (struct cp_parser): Likewise.
3002         (cp_lexer_dump_tokens): New.
3003         (cp_lexer_debug_tokens): New.
3004         (cp_lexer_finished_p): New.
3005         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
3006         (cp_lexer_new_main): Re-write main lexing loop to push
3007         tokens into the new VEC buffer.
3008         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
3009         Do not abort if the token type is not recognized, just print
3010         its code.
3011         * parser.h: New file.
3012         * config-lang.in (gtfiles): Add cp/parser.h.
3013
3014 2011-03-16  Jason Merrill  <jason@redhat.com>
3015
3016         Core 1148
3017         * typeck.c (check_return_expr): Fix conditions for setting
3018         LOOKUP_PREFER_RVALUE.
3019
3020         * call.c (build_over_call): Remove require_complete_type_sfinae call.
3021
3022         PR c++/48132
3023         * decl.c (check_array_designated_initializer): Allow integer index.
3024         (reshape_init_array_1): Set index on the elements.
3025
3026 2011-03-16  Jason Merrill  <jason@redhat.com>
3027
3028         PR c++/48113
3029         * typeck.c (convert_for_initialization): Use
3030         perform_implicit_conversion_flags.
3031         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
3032         rvaluedness_matches_p on ck_rvalue.
3033         (convert_like_real) [ck_rvalue]: And restore it here.
3034
3035         PR c++/48115
3036         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
3037
3038 2011-03-16  Jason Merrill  <jason@redhat.com>
3039
3040         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
3041         committed to this tentative parse.
3042
3043         PR c++/47999
3044         * semantics.c (finish_call_expr): Preserve reference semantics
3045         in templates.
3046
3047         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
3048
3049 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
3050
3051         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
3052         DECL_LANG_SPECIFIC is NULL.
3053
3054 2011-03-15  Jason Merrill  <jason@redhat.com>
3055
3056         Core 1074
3057         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
3058         check value_dependent_expression_p on the operand.
3059
3060         * semantics.c (push_cx_call_context): Return bool.
3061         (cxx_eval_call_expression): Handle excess depth.
3062
3063         Core 1191
3064         * method.c (synthesized_method_walk): Cleanups don't affect the
3065         triviality of a constructor, but do affect deletion and exception
3066         specification.
3067
3068 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
3069
3070         * decl2.c (cp_check_const_attributes): New.
3071         (cplus_decl_attributes): Call cp_check_const_attributes.
3072
3073 2011-03-15  Jason Merrill  <jason@redhat.com>
3074
3075         PR c++/34758
3076         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
3077         recursion first.
3078         (push_defarg_context, pop_defarg_context): New.
3079         * parser.c (cp_parser_late_parsing_default_args): Use them.
3080         * cp-tree.h: Declare them.
3081
3082 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
3083
3084         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
3085         the argument of the indirection operator should not be dependent.
3086         Fix the comment.
3087
3088 2011-03-11  Jason Merrill  <jason@redhat.com>
3089
3090         PR c++/47125
3091         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
3092
3093         PR c++/47144
3094         * parser.c (cp_parser_template_type_arg): Set
3095         type_definition_forbidden_message.
3096
3097         PR c++/47808
3098         * decl.c (compute_array_index_type): Discard folding
3099         if it didn't produce a constant.
3100
3101 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
3102
3103         PR c++/48035
3104         * init.c (build_zero_init_1): Extracted from build_zero_init.
3105         Add FIELD_SIZE argument, if non-NULL and field bit_position
3106         as not smaller than that, don't add that field's initializer.
3107         Pass DECL_SIZE as last argument to build_zero_init_1
3108         for DECL_FIELD_IS_BASE fields.
3109         (build_zero_init): Use build_zero_init_1.
3110
3111 2011-03-10  Jason Merrill  <jason@redhat.com>
3112
3113         PR c++/48029
3114         * pt.c (iterative_hash_template_arg): Remove special case for
3115         ARRAY_TYPE.
3116
3117         PR c++/47198
3118         * parser.c (cp_parser_single_declaration): Just return if
3119         cp_parser_parse_and_diagnose_invalid_type_name complained.
3120
3121 2011-03-09  Jason Merrill  <jason@redhat.com>
3122
3123         PR c++/44629
3124         * pt.c (unify): An unresolved overload is a nondeduced context.
3125
3126 2011-03-09  Martin Jambor  <mjambor@suse.cz>
3127
3128         PR tree-optimization/47714
3129         * method.c (use_thunk): Clear addressable flag of thunk arguments.
3130
3131 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3132
3133         PR c++/47705
3134         * pt.c (convert_nontype_argument): Only call decay_conversion on
3135         arrays.
3136
3137 2011-03-08  Jason Merrill  <jason@redhat.com>
3138
3139         PR c++/47488
3140         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
3141
3142         PR c++/47705
3143         * pt.c (convert_nontype_argument): Don't crash on non-pointer
3144         argument to pointer parameter.
3145
3146         PR c++/45651
3147         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
3148         !TREE_PUBLIC decls.
3149
3150 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3151
3152         PR c++/47957
3153         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
3154         consider scopes of primary template definitions.  Adjust comments.
3155
3156 2011-03-07  Jason Merrill  <jason@redhat.com>
3157
3158         PR c++/48003
3159         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
3160         integer overflow.
3161         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
3162
3163         PR c++/48015
3164         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
3165
3166         PR c++/48008
3167         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
3168         (write_CV_qualifiers_for_type): Not here.
3169
3170 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
3171
3172         * lang-specs.h: Match -save-temps* instead of -save-temps.
3173
3174 2011-03-05  Jason Merrill  <jason@redhat.com>
3175
3176         * mangle.c (write_expression): Change ABI v6 to v5.
3177         (write_type): Likewise.
3178
3179 2011-03-04  Jan Hubicka  <jh@suse.cz>
3180
3181         PR lto/47497
3182         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
3183         and cgraph_add_thunk.
3184         * method.c (make_alias_for_thunk, use_thunk): Likewise.
3185         * mangle.c (mangle_decl): Likewise.
3186
3187 2011-03-04  Jason Merrill  <jason@redhat.com>
3188
3189         PR c++/47971
3190         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
3191         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
3192
3193         PR c++/46220
3194         * search.c (check_final_overrider): Allow pointer to same incomplete
3195         class type with different cv-quals.
3196
3197 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3198
3199         PR c++/47974
3200         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
3201
3202 2011-03-03  Jason Merrill  <jason@redhat.com>
3203
3204         PR c++/47950
3205         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
3206
3207 2011-03-02  Jason Merrill  <jason@redhat.com>
3208
3209         PR c++/47950
3210         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
3211
3212         PR c++/47774
3213         * tree.c (build_vec_init_elt): Split out from...
3214         (build_vec_init_expr): ...here.
3215         (diagnose_non_constexpr_vec_init): New fn.
3216         * semantics.c (potential_constant_expression_1): Use it.
3217         * cp-tree.h: Declare it.
3218
3219 2011-03-01  Jason Merrill  <jason@redhat.com>
3220
3221         PR c++/46159
3222         * parser.c (cp_parser_primary_expression): Don't warn about a
3223         failed tentative parse.
3224
3225         PR c++/47200
3226         * semantics.c (cxx_bind_parameters_in_call): Don't call
3227         adjust_temp_type on non-constant args.
3228
3229         PR c++/47851
3230         * call.c (standard_conversion): Provide requested cv-quals on
3231         class rvalue conversion.
3232
3233         PR c++/46282
3234         * decl2.c (grokbitfield): Handle type-dependent width.
3235
3236 2011-02-28  Jason Merrill  <jason@redhat.com>
3237
3238         PR c++/47873
3239         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
3240         after checking for a non-thunk.
3241
3242 2011-02-26  Jason Merrill  <jason@redhat.com>
3243
3244         PR c++/47904
3245         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
3246         * pt.c (iterative_hash_template_arg): And hash it.
3247
3248         PR c++/47897
3249         * semantics.c (non_const_var_error): Split out from...
3250         (cxx_eval_constant_expression): ...here.
3251         (potential_constant_expression_1) [VAR_DECL]: Use it.
3252         Allow dependent variables.
3253
3254 2011-02-24  Jason Merrill  <jason@redhat.com>
3255
3256         * parser.c (cp_parser_constant_expression): Set
3257         non_integral_constant_expression correctly for C++0x too.
3258         (cp_parser_static_assert): Allow non-constant expression.
3259         (cp_parser_direct_declarator): Expect non_constant_p to be set
3260         properly for C++0x.
3261         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
3262         * semantics.c (maybe_constant_value): Check type_unknown_p too.
3263         (potential_rvalue_constant_expression): New.
3264         (require_potential_rvalue_constant_expression): New.
3265
3266 2011-02-23  Jason Merrill  <jason@redhat.com>
3267
3268         * cp-tree.h (DECL_PARM_LEVEL): New.
3269         (struct lang_decl_parm): Add level field.
3270         * name-lookup.c (function_parm_depth): New fn.
3271         * name-lookup.h: Declare it.
3272         * parser.c (cp_parser_parameter_declaration_list): Use it.
3273         * mangle.c (struct globals): Add parm_depth field.
3274         (write_bare_function_type): Adjust it.
3275         (write_expression): Include the level delta in PARM_DECL mangling
3276         for abi >= 6.
3277
3278         * semantics.c (finish_decltype_type): Remove shortcut for decltype
3279         of id-expression.
3280         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
3281
3282 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
3283
3284         PR c++/46868
3285         * parser.c (cp_parser_class_specifier): Require a closing brace
3286         to attempt error recovery.
3287
3288 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
3289
3290         PR c++/47833
3291         * pt.c (struct pending_template): Add chain_next GTY option.
3292         * decl.c (struct named_label_use_entry): Likewise.
3293
3294 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
3295
3296         PR c++/47242
3297         * semantics.c (build_lambda_object): Bail out if a field is
3298         error_mark_node.
3299
3300 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
3301
3302         PR c++/47666
3303         * class.c (dfs_declare_virt_assop_and_dtor)
3304         (declare_virt_assop_and_dtor): New static functions.
3305         (add_implicitly_declared_members): Use
3306         declare_virt_assop_and_dtor.
3307
3308 2011-02-21  Jason Merrill  <jason@redhat.com>
3309
3310         PR c++/47207
3311         * decl2.c (decl_constant_var_p): A constexpr var needs an
3312         initializer to be constant.
3313         * semantics.c (cxx_eval_constant_expression): Complain about
3314         constexpr var used in its own initializer.
3315         * call.c (set_up_extended_ref_temp): Set
3316         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
3317
3318 2011-02-20  Jason Merrill  <jason@redhat.com>
3319
3320         PR c++/47199
3321         * semantics.c (cxx_eval_call_expression): Call
3322         cxx_eval_constant_expression in trivial shortcut.
3323
3324         PR c++/46831
3325         * call.c (convert_class_to_reference): Don't try to set up a
3326         second conv sequence for non-viable candidates.
3327
3328         PR c++/47703
3329         * error.c (location_of): Handle non-tagged types.
3330
3331         PR c++/46472
3332         * method.c (process_subob_fn): Instantiate constexpr templates.
3333         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
3334
3335 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
3336
3337         PR c++/46394
3338         * pt.c (tsubst_pack_expansion): do not use
3339         cp_tree_equal/same_type_p to detect an expansion of a parameter
3340         pack.
3341
3342 2011-02-19  Jason Merrill  <jason@redhat.com>
3343
3344         PR c++/47503
3345         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
3346
3347 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
3348
3349         PR c++/47795
3350         * semantics.c (finish_non_static_data_member): Early return if
3351         object is error_mark_node.
3352
3353 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
3354
3355         PR c++/47208
3356         * pt.c (do_auto_deduction): Do not mention error_mark_node in
3357         diagnostics.
3358         * semantics.c (finish_id_expression): Do not pass erroneous decl
3359         to decl_constant_var_p.
3360
3361 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
3362
3363         PR c++/47783
3364         * cvt.c (convert_from_reference): Call mark_exp_read.
3365
3366 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
3367
3368         PR c++/47172
3369         * pt.c (finish_call_expr): Consider a call expression that has a
3370         dependent "this" pointer as being dependent.  Add comments.
3371         (dependent_type_p, type_dependent_expression_p): Update comments.
3372
3373 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
3374
3375         PR c++/47326
3376         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
3377         expansion arguments are not evaluated.
3378
3379 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
3380
3381         PR c++/47704
3382         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
3383         instead of TYPE_LANG_FLAG_3.
3384         * pt.c (lookup_template_class): Copy over
3385         ENUM_FIXED_UNDERLYING_TYPE_P.
3386
3387 2011-02-15  Jason Merrill  <jason@redhat.com>
3388
3389         PR c++/46807
3390         * method.c (synthesized_method_walk): Always exit early for
3391         trivial fn in C++98 mode.
3392
3393 2011-02-14  Jason Merrill  <jason@redhat.com>
3394
3395         PR c++/47482
3396         * parser.c (cp_parser_enumerator_definition): Call
3397         fold_non_dependent_expr.
3398
3399 2011-02-09  Jason Merrill  <jason@redhat.com>
3400
3401         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
3402         * semantics.c (finish_fname): Only return the name if we're in
3403         a function.
3404
3405         * decl.c (build_enumerator): Don't perform integral promotions on
3406         non-integral constants.
3407
3408         * cvt.c (convert_to_void): Handle null op1.
3409
3410         * class.c (type_has_constexpr_default_constructor): Make sure the
3411         caller stripped an enclosing array.
3412         * init.c (perform_member_init): Strip arrays before calling it.
3413
3414         PR c++/47511
3415         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
3416
3417 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
3418
3419         PR c++/47398
3420         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
3421         template parameters in account.
3422
3423 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
3424
3425         PR c++/46890
3426         * parser.c (cp_parser_class_specifier): Fix setting of
3427         want_semicolon.
3428
3429 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
3430
3431         PR c++/47416
3432         * semantics.c (build_data_member_initialization): Handle
3433         STATEMENT_LIST always instead of just for CLEANUP_BODY.
3434
3435 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3436
3437         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
3438         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
3439
3440 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
3441
3442         PR c++/47311
3443         * cp-tree.h (fixup_template_parms): Declare.
3444         * pt.c (end_template_parm_list): Do not fixup template parms here.
3445         (fixup_template_parms): Remove static. Fix typo in the
3446         comments. Remove useless code statement.
3447         (fixup_template_parm): For a template template parameter, fixup
3448         its attributes before fixing up its type.
3449         * parser.c
3450         (cp_parser_template_declaration_after_export): After parsing
3451         template parameters fixup their types.
3452
3453 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
3454
3455         PR c++/47476
3456         * semantics.c (potential_constant_expression_1): Handle
3457         TRUTH_XOR_EXPR.
3458
3459 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
3460
3461         PR c++/43601
3462         * semantics.c (expand_or_defer_fn_1): Handle it.
3463         * decl2.c (decl_needed_p): Likewise.
3464
3465 2011-01-21  Jason Merrill  <jason@redhat.com>
3466
3467         PR c++/47041
3468         * semantics.c (build_constexpr_constructor_member_initializers):
3469         Handle trivial copy.
3470
3471 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
3472
3473         PR c++/47388
3474         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
3475         assume init must be NULL if scope is NULL.
3476         (begin_range_for_stmt): Likewise.
3477
3478 2011-01-21  Jason Merrill  <jason@redhat.com>
3479
3480         PR c++/46552
3481         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
3482
3483         PR c++/46977
3484         * semantics.c (potential_constant_expression_1): Split out from
3485         potential_constant_expression.  Add want_rval parm.  Handle
3486         template expression forms.  Don't enforce restriction on address
3487         of automatic variable here.  Add a couple of diagnostics that
3488         had been missing.
3489         (require_potential_constant_expression): New entry point.
3490         (build_data_member_initialization, register_constexpr_fundef): Adjust.
3491         (maybe_constant_value): Check potential_constant_expression.
3492         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
3493         * tree.c (build_vec_init_expr): Adjust.
3494
3495 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
3496
3497         PR c++/47303
3498         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
3499         or DECL_EXTERNAL.
3500
3501 2011-01-17  Jason Merrill  <jason@redhat.com>
3502
3503         PR c++/47067
3504         * semantics.c (base_field_constructor_elt): New fn.
3505         (cxx_eval_bare_aggregate): Use it.
3506         (build_data_member_initialization): Leave COMPONENT_REF for
3507         vfield inits.
3508
3509 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3510
3511         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
3512         workaround.
3513
3514 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
3515             Jonathan Wakely  <jwakely.gcc@gmail.com>
3516
3517         PR c++/33558
3518         * decl.c (grokdeclarator): Reject mutable reference members.
3519
3520 2011-01-14  Jason Merrill  <jason@redhat.com>
3521
3522         PR c++/47289
3523         * pt.c (coerce_template_parms): Fix error recovery.
3524
3525         PR c++/46903
3526         * typeck2.c (check_narrowing): Only check arithmetic types.
3527
3528         PR c++/46688
3529         * tree.c (build_vec_init_expr): Handle flexible array
3530         properly.
3531
3532 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
3533
3534         PR c++/47213
3535         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
3536         TYPE_MAIN_DECL instead of TYPE_NAME.
3537         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
3538         * decl2.c (determine_visibility): Add check
3539         of CLASS_TYPE_P for underlying_type.
3540
3541 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3542
3543         * cp-tree.h (begin_for_scope): New prototype.
3544         (begin_for_stmt): Update prototype.
3545         (begin_range_for_stmt): Update prototype.
3546         * init.c (build_vec_init): Update call to begin_for_stmt.
3547         * parser.c (cp_parser_for): New.
3548         (cp_parser_c_for): Add three new parameters.
3549         (cp_parser_range_for): Likewise. Most parsing code removed.
3550         (cp_parser_iteration_statement): Call cp_parser_for instead of
3551         cp_parser_c_for and cp_parser_range_for.
3552         (cp_parser_for_init_statement): Add new parameter and return type.
3553         (cp_parser_block_declaration): Update call to
3554         cp_parser_simple_declaration.
3555         (cp_parser_simple_declaration): Add new parameter.
3556         Update call to cp_parser_init_declarator.
3557         (cp_parser_init_declarator): Add new parameter.
3558         * pt.c (tsubst_expr): Update call to begin_for_stmt.
3559         * semantics.c (begin_for_scope): New.
3560         (begin_for_stmt): Add two new parameters.
3561         (begin_range_for_stmt): Likewise.
3562
3563 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
3564
3565         * parser.c (cp_parser_objc_at_property_declaration): Improved
3566         error message.
3567
3568 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
3569
3570         PR debug/46955
3571         * cp-lang.c (get_template_innermost_arguments_folded)
3572         (get_template_argument_pack_elems_folded)
3573         (template_arg_needs_folding, fold_cplus_constants): New static
3574         functions.
3575         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
3576         get_template_innermost_arguments_folded.
3577         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
3578         get_template_argument_pack_elems_folded.
3579
3580 2011-01-11  Jason Merrill  <jason@redhat.com>
3581
3582         PR c++/46658
3583         * init.c (build_new_1): Handle value-init in templates differently.
3584
3585         PR c++/45520
3586         * tree.c (maybe_dummy_object): Check current_class_ref against
3587         context, not current_class_type.
3588
3589 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
3590
3591         PR objc/47078
3592         * parser.c (cp_parser_objc_typename): If the type is unknown, for
3593         error recovery purposes behave as if it was not specified so that
3594         the default type is used.
3595
3596 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
3597
3598         PR c++/47022
3599         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
3600         for the second build_x_va_arg argument.
3601
3602 2011-01-05  Tom Tromey  <tromey@redhat.com>
3603
3604         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
3605         (lvalue_or_else): Likewise.
3606
3607 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
3608
3609         PR target/38662
3610         * tree.c (cxx_type_hash_eq):
3611         Allow METHOD_TYPE, too.
3612
3613 \f
3614 Copyright (C) 2011 Free Software Foundation, Inc.
3615
3616 Copying and distribution of this file, with or without modification,
3617 are permitted in any medium without royalty provided the copyright
3618 notice and this notice are preserved.