OSDN Git Service

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