OSDN Git Service

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