OSDN Git Service

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