OSDN Git Service

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