OSDN Git Service

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