OSDN Git Service

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