OSDN Git Service

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