OSDN Git Service

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