OSDN Git Service

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