OSDN Git Service

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