OSDN Git Service

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