OSDN Git Service

a425e758fc31a5e736d98f1e6a8420c60f5f12aa
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
2
3         PR c++/48994
4         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
5
6 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
7
8         Implement final on class.
9         * class.c (check_bases): Diagnose derivation from a final class.
10         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
11         (CLASSTYPE_FINAL): New.
12         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
13         CLASSTYPE_FINAL.
14         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
15
16 2011-05-13  Jason Merrill  <jason@redhat.com>
17
18         PR c++/48969
19         * pt.c (deduction_tsubst_fntype): New.
20         (fn_type_unification): Use it.
21         (init_template_processing): Initialize hash table.
22         (print_template_statistics): Print hash table stats.
23
24         * call.c (build_op_call): Use timevar_cond_start/stop.
25         (build_user_type_conversion): Likewise.
26
27 2011-05-12  Jason Merrill  <jason@redhat.com>
28
29         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
30         * semantics.c (validate_constexpr_fundecl): Set it.
31         (check_deferred_constexpr_decls): Clear it.
32         (register_constexpr_fundef): Make sure it isn't set.
33         * decl.c (grok_special_member_properties): Check it.
34
35 2011-05-11  Jason Merrill  <jason@redhat.com>
36
37         PR c++/48948
38         * semantics.c (validate_constexpr_fundecl): Defer checking if
39         an argument type is being defined.
40         (is_valid_constexpr_fn): Add defer_ok parm.
41         (cxx_eval_call_expression): Adjust.
42         (check_deferred_constexpr_decls): New.
43         (literal_type_p): Make sure type isn't being defined.
44         (ensure_literal_type_for_constexpr_object): Handle type being defined.
45         * cp-tree.h: Declare check_deferred_constexpr_decls.
46         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
47         (start_preparsed_function, cp_finish_decl): Not here.
48         * class.c (finalize_literal_type_property): Don't call
49         validate_constexpr_fundecl.
50         (finish_struct): Call check_deferred_constexpr_decls.
51         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
52         (instantiate_class_template): Call check_deferred_constexpr_decls.
53
54         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
55         rather than DECL_TEMPLATE_INSTANTIATION.
56         (cxx_eval_call_expression): Likewise.
57
58         * semantics.c (register_constexpr_fundef): Add to hash table here.
59         (validate_constexpr_fundecl): Not here.
60
61         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
62
63         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
64         do call maybe_constant_value in C++0x mode.
65         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
66
67         PR c++/48745
68         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
69
70 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
71
72         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
73         TYPE_VALUES_RAW.
74         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
75         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
76         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
77
78 2011-05-10  Jason Merrill  <jason@redhat.com>
79
80         PR c++/48930
81         * class.c (type_build_ctor_call): New.
82         * cp-tree.h: Declare it.
83         * decl.c (check_initializer): Use it instead of
84         TYPE_NEEDS_CONSTRUCTING.
85         * init.c (build_value_init, build_value_init_noctor): Likewise.
86         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
87         (build_vec_init): Likewise.
88         * typeck2.c (process_init_constructor_array): Likewise.
89         (process_init_constructor_record): Likewise.
90
91         PR c++/48736
92         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
93         expansion producing another expansion.
94
95 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
96
97         Fixes for override/final.
98         * class.c (check_for_override): Diagnose final on a nonvirtual
99         member function, diagnose override for a virtual with no matching
100         override. Don't fiddle around with DECL_VINDEX.
101
102 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
103
104         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
105         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
106         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
107         operand of EXPR_PACK_EXPANSION.
108         (cp_tree_operand_length): Declare.
109         * tree.c (cp_tree_operand_length): Define.
110         (cp_tree_equal): Call it.
111         * pt.c (value_dependent_expr_P): Likewise.
112         * mangle.c (write_expression): Likewise.
113
114 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
115
116         PR c++/48737
117         PR c++/48744
118         * decl.c (reshape_init): Take a complain parameter and do
119         not call error if tf_error is not set.
120         (check_initializer, reshape_init_r, reshape_init_array,
121         reshape_init_array_1, reshape_init_vector, reshape_init_class):
122         Adjust.
123         * typeck2.c (digest_init_r): Take a complain parameter and
124         pass it to convert_for_initialization.
125         (digest_init, digest_init_flags, process_init_constructor_array,
126         process_init_constructor_record, process_init_constructor_union,
127         process_init_constructor, digest_init_r): Adjust.
128         * init.c (expand_default_init, build_new_1): Likewise.
129         * typeck.c (cp_build_modify_expr): Likewise.
130         * decl2.c (grokfield): Likewise.
131         * call.c (convert_like_real, convert_default_arg): Likewise.
132         * semantics.c (finish_compound_literal): Pass complain to
133         reshape_init and digest_init.
134         * cp-tree.h: Adjust declarations.
135
136 2011-05-07  Fabien ChĂȘne  <fabien@gcc.gnu.org>
137
138         PR c++/48859
139         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
140         recursion if there is user defined constructor.
141
142 2011-05-09  Jason Merrill  <jason@redhat.com>
143
144         PR c++/34772
145         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
146         initialization.
147
148 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
149
150         Implement final/override for member functions.
151         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
152         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
153         (cp_virt_specifiers, enum virt_specifier): New.
154         * decl.c (set_virt_specifiers): New.
155         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
156         * parser.c (make_call_declarator): add virt-specifiers parameter.
157         (cp_parser_lambda_declarator_opt): Adjust.
158         (cp_parser_direct_declarator): Likewise.
159         (cp_parser_virt_specifier_seq_opt): New.
160         * search.c (check_final_overrider): Diagnose attempts to override
161         a final member function.
162
163 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
164
165         PR c++/48574
166         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
167         if the instance has a dependent initializer.
168
169 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
170
171         PR c++/48816
172         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
173         effectively unused variable.
174
175 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
176
177         * name-lookup.h (global_bindings_p): Adjust prototype.
178         * name-lookup.c (global_bindings_p): Return bool.
179
180 2011-05-06  Jason Merrill  <jason@redhat.com>
181
182         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
183         appropriate.
184
185         PR c++/48909
186         * semantics.c (cxx_eval_conditional_expression): Check
187         integer_zerop instead.
188         (potential_constant_expression_1): Likewise.
189
190         PR c++/48911
191         * semantics.c (cxx_eval_array_reference): Handle implicit
192         initializers.
193
194 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
195
196         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
197         * call.c (standard_conversion): Call class_of_this_parm.
198         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
199         (pp_cxx_direct_abstract_declarator): Likewise.
200         * decl2.c (change_return_type): Likewise.
201         (cp_reconstruct_complex_type): Likewise.
202         * error.c (dump_type_suffix, dump_function_decl): Likewise.
203         * mangle.c (write_function_type): Likewise.
204         * pt.c (unify): Likewise.
205         * typeck.c (merge_types, type_memfn_quals): Likewise.
206         * decl.c (build_this_parm): Call type_of_this_parm.
207
208 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
209
210         PR c++/48838
211         * cp-tree.h (non_static_member_function_p): Declare new function.
212         * tree.c (non_static_member_function_p): Define it.
213         * semantics.c (finish_call_expr): Use it.
214
215 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
216
217         * decl.c (finish_case_label): Omit the loc argument to
218         build_case_label.
219
220 2011-05-05  Jason Merrill  <jason@redhat.com>
221
222         * cp-tree.h (REFERENCE_REF_P): Just check the type.
223         * cvt.c (convert_from_reference): Adjust.
224         * pt.c (build_non_dependent_expr): Adjust.
225         * semantics.c (finish_offsetof): Adjust.
226         * tree.c (lvalue_kind): Use it.
227
228         PR c++/48873
229         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
230
231 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
232
233         * decl.c (start_preparsed_function): Do not set
234         dont_save_pending_sizes_p.
235
236 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
237
238         * parser.c (cp_parser_objc_method_definition_list): Update call to
239         objc_start_method_definition.
240
241 2011-05-04  Jason Merrill  <jason@redhat.com>
242
243         PR c++/48749
244         * class.c (resolves_to_fixed_type_p): Don't look closely
245         in templates.
246
247 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
248
249         PR c++/28501
250         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
251         IMAGPART_EXPR.
252
253 2011-05-02  Lawrence Crowl  <crowl@google.com>
254
255         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
256         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
257         Change TV_NAME_LOOKUP to start/stop.
258         (define_label): Refactor timevar calls out to a wrapper function.
259         Change TV_NAME_LOOKUP to start/stop.
260         (xref_tag): Likewise.
261         (lookup_label): Refactor timevar calls out to a wrapper function.
262         Change TV_NAME_LOOKUP to start_cond/stop_cond.
263
264         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
265         TV_TEMPLATE_INST.
266         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
267         (lookup_template_class): Refactor timevar calls out to a wrapper
268         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
269         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
270
271         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
272         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
273         (push_namespace): Likewise.
274         (pop_nested_namespace): Likewise.
275         (pushdecl_namespace_level): Likewise.
276         (store_class_bindings): Likewise.
277         (push_to_top_level): Likewise.
278         (identifier_type_value): Refactor timevar calls out to a wrapper
279         function.  Change TV_NAME_LOOKUP to start/stop.
280         (find_binding): Likewise.
281         (push_using_decl): Likewise.
282         (lookup_arg_dependent): Likewise.
283         (push_using_directive): Likewise.
284         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
285         to plain code.  Change TV_NAME_LOOKUP to start/stop.
286         (lookup_type_current_level): Likewise.  Refactor inner return to
287         break.
288         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
289         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
290         (pushdecl_top_level_1): Likewise.
291         (lookup_using_namespace): Likewise.
292         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
293         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
294         (push_overloaded_decl): Likewise.
295         (push_class_level_binding): Likewise.
296         (namespace_binding): Likewise.
297         (set_namespace_binding): Likewise.
298         (supplement_binding): Likewise.
299         (unqualified_namespace_lookup): Likewise.
300         (lookup_name_real): Likewise.
301         (lookup_type_scope): Likewise.
302         (namespace_ancestor): Likewise.
303         (lookup_name_innermost_nonclass_level): Likewise.
304         (pushtag): Likewise.
305         (pop_from_top_level): Likewise.
306         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
307         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
308         lines.
309         (add_using_namespace): Refactor timevar calls out to a wrapper
310         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
311         wrapper on call to self.
312
313         * decl2.c: (cp_write_global_declarations):  Add start/stop of
314         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
315         Remove push/pop calls to TV_VARCONST.
316
317         * parser.c: Add include of "timevar.h".
318         (cp_parser_explicit_instantiation): Add push/pop calls to
319         TV_TEMPLATE_INST.
320         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
321         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
322         TV_PARSE_STRUCT.
323         (cp_parser_function_definition_from_specifiers_and_declarator): Add
324         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
325         (cp_parser_late_parsing_for_member):  Add push/pop calls to
326         new TV_PARSE_INMETH.
327
328         * call.c: Add include of "timevar.h".
329         (convert_class_to_reference): Wrap and add push/pop calls to 
330         TV_OVERLOAD.
331         (build_op_call): Likewise.
332         (build_conditional_expr): Likewise.
333         (build_new_op): Likewise.
334         (build_new_method_call): Likewise.
335         (build_user_type_conversion): Reorganize to single return and add
336         push/pop calls to TV_OVERLOAD.
337         (perform_overload_resolution): Likewise.
338
339         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
340
341 2011-05-02  Jason Merrill  <jason@redhat.com>
342
343         * tree.c (build_vec_init_expr): Take complain parm.
344         (build_vec_init_elt): Likewise.  Free arg vector.
345         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
346         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
347         (VEC_INIT_EXPR_INIT): Likewise.
348         Adjust build_vec_init_expr declaration.
349         * init.c (perform_member_init): Adjust.
350
351         Revert:
352         PR c++/40975
353         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
354         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
355         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
356         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
357         (build_vec_init_elt): Don't expect an array type.
358         (build_array_copy): Adjust.
359         * init.c (perform_member_init): Adjust.
360         (build_new_1): Use build_vec_init_expr.
361
362         PR c++/48834
363         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
364         Protect an explicit target.
365
366         PR c++/48446
367         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
368         (compute_array_index_type): Revert earlier 48446 changes.
369         (grokdeclarator): Use stabilize_vla_size.
370
371 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
372             Eric Botcazou <ebotcazou@adacore.com>
373
374         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
375         instead of inappropriate zero values.
376
377 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
378
379         PR c++/47969
380         * decl.c (compute_array_index_type): Check build_expr_type_conversion
381         return value for NULL_TREE.
382
383 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
384
385         PR c++/48606
386         * init.c (perform_member_init): Check build_value_init return
387         value for error_mark_node.
388
389 2011-04-29  Diego Novillo  <dnovillo@google.com>
390             Le-Chun Wu  <lcwu@google.com>
391
392         * call.c (conversion_null_warnings): Also handle assignments
393         when warning about NULL conversions.
394
395 2011-04-29  Le-Chun Wu  <lcwu@google.com>
396
397         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
398         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
399         (build_over_call): Use it to determine whether to emit a NULL
400         warning for template function instantiations.
401         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
402         EXPLICIT_TARGS is set.
403
404 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
405             Mike Stump <mikestump@comcast.net>
406
407         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
408         in maintainer mode.  Use the --output-file option of gperf instead
409         of > to prevent creating an empty cp/cfns.h when gperf is not
410         available.
411
412 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
413
414         PR c++/48798
415         * semantics.c (finish_base_specifier): cv-qualified base class
416         is fine, per DR 484.
417
418 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
419
420         PR c++/48656
421         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
422         considering call expressions involving a member function.
423
424 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
425
426         PR c++/48530
427         * tree.c (build_cplus_new): Check build_target_expr return
428         value for error_mark_node.
429
430 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
431
432         PR c++/48771
433         * semantics.c (literal_type_p): Reference types are literal types,
434         per the FDIS.
435         (valid_type_in_constexpr_fundecl_p): Remove.
436         (is_valid_constexpr_fn): Adjust.
437
438 2011-04-27  Jason Merrill  <jason@redhat.com>
439
440         PR libstdc++/48760
441         Implement list-initialization of _Complex.
442         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
443         (check_initializer): Likewise.
444         * call.c (build_complex_conv): New.
445         (implicit_conversion): Call it.
446         (convert_like_real): Handle it.
447         * typeck2.c (check_narrowing): Handle it.
448
449         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
450         decide whether to delete.
451         (build_vec_init): Pass sfk_complete_destructor.
452
453         PR c++/40975
454         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
455         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
456         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
457         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
458         (build_vec_init_elt): Don't expect an array type.
459         (build_array_copy): Adjust.
460         * init.c (perform_member_init): Adjust.
461         (build_new_1): Use build_vec_init_expr.
462
463         * class.c (resolve_address_of_overloaded_function): Don't
464         change OVERLOAD to TREE_LIST.
465         * pt.c (print_candidates_1): Remove nonsensical assert.
466
467         PR c++/48046
468         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
469         to tentative parse sooner.
470
471 2011-04-26  Jason Merrill  <jason@redhat.com>
472
473         PR c++/42687
474         * parser.c (cp_parser_primary_expression): Set *idk to
475         CP_ID_KIND_NONE for a parenthesized identifier.
476
477         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
478         (cxx_print_identifier): Correct indentation.
479
480         PR c++/48530
481         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
482         * tree.c (force_target_expr): Add complain parm.
483         (build_target_expr_with_type): Likewise.
484         (get_target_expr_sfinae): Split out.
485         (build_vec_init_expr, bot_manip): Adjust.
486         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
487         (build_delete, build_dtor_call): Likewise.
488         (perform_direct_initialization_if_possible): Adjust.
489         (build_vec_init): Handle error return.
490         * cvt.c (force_rvalue): Add complain parm.
491         Call build_special_member_call directly.
492         * decl2.c (delete_sanity): Add complain parm.
493         (build_cleanup): Adjust.
494         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
495         * semantics.c (finish_stmt_expr_expr): Adjust.
496         (finish_compound_literal): Adjust.
497         * parser.c (cp_parser_delete_expression): Adjust.
498         * typeck2.c (build_functional_cast): Adjust.
499         * cp-tree.h: Adjust.
500
501 2011-04-26  Martin Jambor  <mjambor@suse.cz>
502
503         * class.c (cp_fold_obj_type_ref): Remove.
504         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
505
506 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
507
508         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
509         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
510         (UNDERLYING_TYPE_TYPE): Add.
511         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
512         as TS_COMMON.
513         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
514         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
515         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
516         * semantics.c (finish_underlying_type): New.
517         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
518         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
519         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
520         * tree.c (cp_walk_subtrees): Likewise.
521         * pt.c (for_each_template_parm_r, tsubst, unify,
522         dependent_type_p_r): Likewise.
523         * mangle.c (write_type): Sorry for __underlying_type.
524
525 2011-04-25  Jason Merrill  <jason@redhat.com>
526
527         PR c++/48707
528         * decl.c (type_dependent_init_p): New.
529         (cp_finish_decl): Check it.
530         * pt.c (any_type_dependent_elements_p): New.
531         * cp-tree.h: Declare it.
532
533 2011-04-20  Jason Merrill  <jason@redhat.com>
534
535         * semantics.c (finish_compound_literal): Don't put an array
536         with a dtor in a static variable.
537
538         * call.c (build_over_call): Handle trivial dtor.
539
540         * search.c (lookup_fnfields_slot): Call complete_type.
541
542         PR c++/48594
543         * decl2.c (build_offset_ref_call_from_tree): Move
544         non-dependency of object outside condition.
545
546         PR c++/48657
547         * decl.c (cp_finish_decl): Simplify template handling.
548
549 2011-04-20  Jim Meyering  <meyering@redhat.com>
550
551         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
552
553 2011-04-19  Jason Merrill  <jason@redhat.com>
554
555         PR c++/46304
556         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
557
558         PR c++/45267
559         * decl.c (duplicate_decls): Keep always_inline attribute
560         in sync with DECL_DISREGARD_INLINE_LIMITS.
561
562 2011-04-18  Jason Merrill  <jason@redhat.com>
563
564         PR c++/48569
565         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
566
567         PR c++/48537
568         * init.c (build_value_init): Handle UNION_TYPE the same.
569
570 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
571
572         PR c++/48632
573         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
574         for type dependent pointers.
575
576 2011-04-18  Jim Meyering  <meyering@redhat.com>
577
578         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
579
580 2011-04-17  Jan Hubicka  <jh@suse.cz>
581
582         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
583         gotos.
584
585 2011-04-17  Jason Merrill  <jason@redhat.com>
586
587         PR c++/48531
588         * typeck2.c (build_functional_cast): Disallow array type.
589
590         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
591
592 2011-04-17  Jan Hubicka  <jh@suse.cz>
593
594         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
595
596 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
597
598         Implement N3271
599         * parser.c (cp_convert_range_for): Split into
600         cp_parser_perform_range_for_lookup.
601         (cp_parser_perform_range_for_lookup): New.
602         (cp_parser_range_for_member_function): New.
603         (cp_parser_for_init_statement): Correct error message.
604         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
605
606 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
607
608         * parser.c (cp_parser_objc_protocol_declaration): Updated for
609         change from objc_declare_protocols() to objc_declare_protocol().
610
611 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
612
613         PR objc++/48479
614         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
615         and return immediately.
616
617 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
618
619         * cp-tree.def (SWITCH_STMT): Add an extra operand.
620         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
621         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
622         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
623         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
624
625 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
626
627         * cp-tree.def (IF_STMT): Add an extra operand.
628         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
629         * cp-tree.h (IF_SCOPE): Define.
630         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
631         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
632
633 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
634
635         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
636         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
637         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
638         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
639         Use FOR_SCOPE instead of TREE_CHAIN.
640         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
641         (finish_for_stmt): Likewise.
642
643 2011-04-14  Jason Merrill  <jason@redhat.com>
644
645         * parser.c (cp_parser_postfix_expression): Fix flags passed to
646         build_new_method_call.
647         * semantics.c (finish_call_expr): Likewise.
648
649         PR c++/48531
650         * init.c (build_value_init_noctor): Check complain consistently.
651
652         PR c++/48557
653         * typeck.c (cp_build_binary_op): Don't decay void operands.
654
655         PR c++/48446
656         * decl.c (compute_array_index_type): Use get_temp_regvar instead
657         of variable_size.
658         * init.c (get_temp_regvar): No longer static.
659         * cp-tree.h: Declare it.
660
661 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
662
663         * parser.c (cp_parser_objc_class_declaration): Updated for change
664         in objc_declare_class().
665
666 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
667
668         * decl.c (poplevel): Use block_chainon.
669
670 2011-04-13  Jason Merrill  <jason@redhat.com>
671
672         PR c++/48594
673         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
674         or pointer to (non-member) function.
675
676 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
677
678         PR c++/48570
679         * semantics.c (cxx_eval_array_reference): Handle reading from
680         wchar_t, char16_t and char32_t STRING_CST.
681
682 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
683
684         PR c++/48574
685         * class.c (fixed_type_or_null): We cannot determine the dynamic
686         type of a reference variable if its initializer is dependent.
687
688 2011-04-13  Jason Merrill  <jason@redhat.com>
689
690         PR c++/48581
691         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
692         unqualified lookup failing if we're still in a template.
693
694 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
695
696         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
697         tree_contains_struct initialization to...
698         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
699         macros.
700         * cp-objcp-common.h (cp_common_init_ts): Declare.
701         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
702         calling TREE_CHAIN.
703
704 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
705
706         * parser.c (cp_parser_objc_message_expression): Updated call
707         to objc_build_message_expr.
708
709 2011-04-12  Martin Jambor  <mjambor@suse.cz>
710
711         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
712         cgraph_get_create_node.
713         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
714         instead of cgraph_get_create_node.
715         * method.c (make_alias_for_thunk): Call cgraph_get_node
716         instead of cgraph_get_create_node, assert it returns non-NULL.
717         (use_thunk): Likewise.
718         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
719         when flag_syntax_only is not set.  Call cgraph_get_node instead of
720         cgraph_get_create_node.
721         (maybe_clone_body): Call cgraph_get_node instead of
722         cgraph_get_create_node.
723
724 2011-04-12  Martin Jambor  <mjambor@suse.cz>
725
726         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
727         instead of cgraph_node.
728         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
729         (cp_write_global_declarations): Likewise.
730         * optimize.c (maybe_clone_body): Likewise.
731         * semantics.c (maybe_add_lambda_conv_op): Likewise.
732         * mangle.c (mangle_decl): Likewise.
733         * method.c (make_alias_for_thunk): Likewise.
734         (use_thunk): Likewise.
735
736 2011-04-11  Jason Merrill  <jason@redhat.com>
737
738         PR c++/48535
739         * decl.c (cp_complete_array_type_or_error): New.
740         * semantics.c (finish_compound_literal): Use it.
741         * cp-tree.h: Declare it.
742
743         PR c++/48535
744         * semantics.c (finish_compound_literal): Handle references.
745
746         PR c++/48535
747         * semantics.c (finish_compound_literal): Take complain parm.
748         (build_lambda_object): Adjust.
749         * cp-tree.h: Adjust.
750         * call.c (convert_like_real): Adjust.
751         * decl.c (check_initializer): Adjust.
752         * parser.c (cp_parser_postfix_expression): Adjust.
753         (cp_parser_functional_cast): Adjust.
754         * pt.c (tsubst_copy_and_build): Adjust.
755         * typeck2.c (process_init_constructor_record): Adjust.
756
757         PR c++/48534
758         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
759         of scoped enum.
760
761         PR c++/48523
762         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
763         than cp_build_indirect_ref.
764
765         PR c++/48457, Core 1238
766         * call.c (reference_binding): Allow rvalue reference to bind to
767         function lvalue.
768         * tree.c (lvalue_kind): Functions are always lvalues.
769
770 2011-04-07  Jason Merrill  <jason@redhat.com>
771
772         PR c++/48500
773         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
774         arguments even if we don't know the function.
775
776         PR c++/48481
777         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
778         at the end of the chain.
779         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
780         (iterative_hash_template_arg): Likewise.
781
782         PR c++/48481
783         * cp-tree.h (OVL_ARG_DEPENDENT): New.
784         * name-lookup.c (add_function): Set it.
785         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
786
787         PR c++/48481
788         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
789         Release unused vector.
790
791         PR c++/48451
792         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
793         (type_unification_real): Clear it here instead.
794
795         PR c++/48468
796         * except.c (build_noexcept_spec): Propagate error_mark_node.
797         (finish_noexcept_expr): Likewise.
798
799         PR c++/48452
800         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
801         in SFINAE context.
802
803         PR c++/48450
804         * call.c (resolve_args): Take complain.
805         (build_new_function_call, build_operator_new_call): Pass it.
806         (build_op_call, build_new_op, build_new_method_call): Pass it.
807
808         PR c++/48450
809         * typeck.c (check_for_casting_away_constness): Take complain.
810         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
811         (build_const_cast_1): Pass it.  Take full complain parm.
812         (build_const_cast, cp_build_c_cast): Adjust.
813
814         * tree.c (build_aggr_init_expr): Always return error_mark_node
815         on abstract violation.
816
817         PR c++/48450
818         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
819         (bot_manip): Adjust.
820         * cp-tree.h: Adjust.
821         * call.c (convert_like_real, build_cxx_call): Adjust.
822         (perform_direct_initialization_if_possible): Adjust.
823         * cvt.c (ocp_convert): Adjust.
824         * init.c (build_value_init): Adjust.
825         * semantics.c (maybe_add_lambda_conv_op): Adjust.
826         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
827         * typeck2.c (build_functional_cast): Adjust.
828
829         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
830         level.
831         (perform_member_init): Not here.
832         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
833         case to templates.
834         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
835
836         PR c++/48449
837         * typeck2.c (build_functional_cast): Check complain consistently.
838         Use build_value_init and abstract_virtuals_error_sfinae.
839         (abstract_virtuals_error_sfinae): Split out.
840         * cp-tree.h: Declare it.
841         * init.c (build_new_1): Use it.
842         (build_value_init_noctor): Handle FUNCTION_TYPE.
843
844         * semantics.c (finish_decltype_type): Simplify handling of unknown
845         type.
846
847         * semantics.c (finish_decltype_type): Add complain parm.
848         * cp-tree.h: Adjust.
849         * parser.c (cp_parser_decltype): Adjust.
850         * pt.c (tsubst): Adjust.
851
852         PR c++/48450
853         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
854
855 2011-03-31  Jason Merrill  <jason@redhat.com>
856
857         PR c++/48277
858         * semantics.c (finish_call_expr): Remove assert.
859
860         PR c++/48280
861         * method.c (defaultable_fn_check): Templates are not defaultable.
862
863         * parser.c (cp_parser_init_declarator): Avoid redundant
864         cp_finish_decl for member declarations.
865
866 2011-03-30  Jason Merrill  <jason@redhat.com>
867
868         PR c++/48212
869         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
870         is error_mark_node.
871
872 2011-03-30  Jason Merrill  <jason@redhat.com>
873
874         PR c++/48369
875         * semantics.c (potential_constant_expression_1): Handle
876         UNORDERED_EXPR and ORDERED_EXPR.
877
878         PR c++/48281
879         * semantics.c (finish_compound_literal): Do put static/constant
880         arrays in static variables.
881
882         * call.c (convert_like_real) [ck_list]: Build up the
883         initializer_list object directly.
884         * decl.c (build_init_list_var_init): Adjust.
885
886         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
887         * decl.c (reshape_init_array_1): Likewise.
888
889 2011-03-29  Jason Merrill  <jason@redhat.com>
890
891         PR c++/48265
892         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
893         the variable is constant before looking at its initializer.
894
895         PR c++/48319
896         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
897
898         PR c++/48089
899         * semantics.c (potential_constant_expression_1): Change error about
900         use of *this in constructor into sorry.
901
902         PR c++/48296
903         * decl.c (cp_finish_decl): Defer validation of constexpr member
904         functions.
905         * class.c (finalize_literal_type_property): Validate them here.
906         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
907
908         * semantics.c (is_valid_constexpr_fn): Specify input location.
909
910 2011-03-28  Jason Merrill  <jason@redhat.com>
911
912         PR c++/48313
913         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
914         from overloaded function.
915
916         Core 1232
917         * call.c (build_array_conv): New.
918         (implicit_conversion): Use it.
919
920         * call.c (reference_binding): Allow direct binding to an array
921         rvalue.
922
923         Core 898
924         * parser.c (cp_parser_compound_statement): Add function_body parm.
925         Complain about non-body compound-stmt in constexpr fn.
926         (cp_parser_primary_expression, cp_parser_statement): Adjust.
927         (cp_parser_implicitly_scoped_statement): Adjust.
928         (cp_parser_function_body, cp_parser_try_block): Adjust.
929         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
930         (cp_parser_objc_try_catch_finally_statement): Adjust.
931
932         Core 898
933         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
934         and using-definition.
935         (register_constexpr_fundef): Call it.
936
937         * except.c (build_noexcept_spec): Call cxx_constant_value after
938         converting to bool.
939
940 2011-03-25  Kai Tietz  <ktietz@redhat.com>
941
942         * lex.c (interface_strcmp): Handle dos-paths.
943         (handle_pragma_implementation): Use filename_cmp instead of
944         strcmp.
945         (in_main_input_context): Likewise.
946
947 2011-03-25  Jason Merrill  <jason@redhat.com>
948
949         Core 1135
950         * method.c (defaulted_late_check): Check for exception spec mismatch.
951         (defaultable_fn_check): Allow exception spec and virtual.
952         * class.c (check_for_override): A virtual dtor is non-trivial.
953
954         PR c++/48289
955         * pt.c (build_non_dependent_expr): Keep dereferences outside the
956         NON_DEPENDENT_EXPR.
957
958 2011-03-25  Kai Tietz  <ktietz@redhat.com>
959
960         * decl.c (decls_match): Replace target hook
961         call of comp_type_attributes by version in tree.c file.
962         * search.c (check_final_overrider): Likewise.
963         * typeck.c (structural_comptypes): Likewise.
964
965 2011-03-21  Kai Tietz  <ktietz@redhat.com>
966
967         PR target/12171
968         * cxx-pretty-print.c (pp_cxx_ptr_operator):
969         Display allowed attributes for function pointer types.
970         * error.c (dump_type_prefix): Likewise.
971
972         * tree.c (cxx_attribute_table): Adjust table.
973
974 2011-03-18  Jason Merrill  <jason@redhat.com>
975
976         PR c++/48162
977         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
978
979         PR c++/48118
980         * call.c (build_over_call): Don't skip ck_rvalue.
981
982 2011-03-17  Jason Merrill  <jason@redhat.com>
983
984         PR c++/47504
985         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
986         the conversion set TREE_OVERFLOW.
987
988         Core 1212
989         * semantics.c (finish_decltype_type): Return T&& for xvalue.
990         * typeck.c (unlowered_expr_type): Preserve cv-quals.
991
992         PR c++/48166
993         * decl.c (revert_static_member_fn): Strip function-cv-quals.
994
995 2011-03-16  Jason Merrill  <jason@redhat.com>
996
997         PR c++/48089
998         * semantics.c (potential_constant_expression_1): Don't allow *this
999         in a constructor.
1000         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
1001
1002         PR c++/47301
1003         * decl.c (compute_array_index_type): Don't bother trying to deal
1004         with literal classes in ABI v1.
1005
1006         PR c++/46336
1007         * decl.c (duplicate_decls): Return NULL_TREE for clashing
1008         C functions.
1009
1010         PR c++/47570
1011         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
1012         use the generic binary expression handling.
1013
1014 2011-03-16  Diego Novillo  <dnovillo@google.com>
1015
1016         * Make-lang.in (CXX_PARSER_H): New.
1017         (cp/parser.o): Add dependency on CXX_PARSER_H.
1018         Add dependency on tree-pretty-print.h
1019         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
1020         * cp-lang.c: Include parser.h.
1021         * parser.c: Include parser.h.
1022         (struct cp_token): Add bitfield purged_p.
1023         Update all users.
1024         Move to parser.h.
1025         (CPP_PURGED): Remove.  Update all users.
1026         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
1027         Remove field buffer_length.
1028         Update all users.
1029         Move to parser.h.
1030         (struct tree_check): Move to parser.h.
1031         (cp_token_position): Likewise.
1032         (struct cp_token_cache): Likewise.
1033         (CPP_KEYWORD): Likewise.
1034         (CPP_TEMPLATE_ID): Likewise.
1035         (CPP_NESTED_NAME_SPECIFIER): Likewise.
1036         (N_CP_TTYPES): Likewise.
1037         (enum cp_parser_status_kind): Likewise.
1038         (struct cp_parser_context): Likewise.
1039         (struct cp_default_arg_entry_d): Likewise.
1040         (struct cp_unparsed_functions_entry_d): Likewise.
1041         (struct cp_parser): Likewise.
1042         (cp_lexer_dump_tokens): New.
1043         (cp_lexer_debug_tokens): New.
1044         (cp_lexer_finished_p): New.
1045         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
1046         (cp_lexer_new_main): Re-write main lexing loop to push
1047         tokens into the new VEC buffer.
1048         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
1049         Do not abort if the token type is not recognized, just print
1050         its code.
1051         * parser.h: New file.
1052         * config-lang.in (gtfiles): Add cp/parser.h.
1053
1054 2011-03-16  Jason Merrill  <jason@redhat.com>
1055
1056         Core 1148
1057         * typeck.c (check_return_expr): Fix conditions for setting
1058         LOOKUP_PREFER_RVALUE.
1059
1060         * call.c (build_over_call): Remove require_complete_type_sfinae call.
1061
1062         PR c++/48132
1063         * decl.c (check_array_designated_initializer): Allow integer index.
1064         (reshape_init_array_1): Set index on the elements.
1065
1066 2011-03-16  Jason Merrill  <jason@redhat.com>
1067
1068         PR c++/48113
1069         * typeck.c (convert_for_initialization): Use
1070         perform_implicit_conversion_flags.
1071         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
1072         rvaluedness_matches_p on ck_rvalue.
1073         (convert_like_real) [ck_rvalue]: And restore it here.
1074
1075         PR c++/48115
1076         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
1077
1078 2011-03-16  Jason Merrill  <jason@redhat.com>
1079
1080         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
1081         committed to this tentative parse.
1082
1083         PR c++/47999
1084         * semantics.c (finish_call_expr): Preserve reference semantics
1085         in templates.
1086
1087         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
1088
1089 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
1090
1091         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
1092         DECL_LANG_SPECIFIC is NULL.
1093
1094 2011-03-15  Jason Merrill  <jason@redhat.com>
1095
1096         Core 1074
1097         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
1098         check value_dependent_expression_p on the operand.
1099
1100         * semantics.c (push_cx_call_context): Return bool.
1101         (cxx_eval_call_expression): Handle excess depth.
1102
1103         Core 1191
1104         * method.c (synthesized_method_walk): Cleanups don't affect the
1105         triviality of a constructor, but do affect deletion and exception
1106         specification.
1107
1108 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
1109
1110         * decl2.c (cp_check_const_attributes): New.
1111         (cplus_decl_attributes): Call cp_check_const_attributes.
1112
1113 2011-03-15  Jason Merrill  <jason@redhat.com>
1114
1115         PR c++/34758
1116         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
1117         recursion first.
1118         (push_defarg_context, pop_defarg_context): New.
1119         * parser.c (cp_parser_late_parsing_default_args): Use them.
1120         * cp-tree.h: Declare them.
1121
1122 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
1123
1124         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
1125         the argument of the indirection operator should not be dependent.
1126         Fix the comment.
1127
1128 2011-03-11  Jason Merrill  <jason@redhat.com>
1129
1130         PR c++/47125
1131         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
1132
1133         PR c++/47144
1134         * parser.c (cp_parser_template_type_arg): Set
1135         type_definition_forbidden_message.
1136
1137         PR c++/47808
1138         * decl.c (compute_array_index_type): Discard folding
1139         if it didn't produce a constant.
1140
1141 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
1142
1143         PR c++/48035
1144         * init.c (build_zero_init_1): Extracted from build_zero_init.
1145         Add FIELD_SIZE argument, if non-NULL and field bit_position
1146         as not smaller than that, don't add that field's initializer.
1147         Pass DECL_SIZE as last argument to build_zero_init_1
1148         for DECL_FIELD_IS_BASE fields.
1149         (build_zero_init): Use build_zero_init_1.
1150
1151 2011-03-10  Jason Merrill  <jason@redhat.com>
1152
1153         PR c++/48029
1154         * pt.c (iterative_hash_template_arg): Remove special case for
1155         ARRAY_TYPE.
1156
1157         PR c++/47198
1158         * parser.c (cp_parser_single_declaration): Just return if
1159         cp_parser_parse_and_diagnose_invalid_type_name complained.
1160
1161 2011-03-09  Jason Merrill  <jason@redhat.com>
1162
1163         PR c++/44629
1164         * pt.c (unify): An unresolved overload is a nondeduced context.
1165
1166 2011-03-09  Martin Jambor  <mjambor@suse.cz>
1167
1168         PR tree-optimization/47714
1169         * method.c (use_thunk): Clear addressable flag of thunk arguments.
1170
1171 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
1172
1173         PR c++/47705
1174         * pt.c (convert_nontype_argument): Only call decay_conversion on
1175         arrays.
1176
1177 2011-03-08  Jason Merrill  <jason@redhat.com>
1178
1179         PR c++/47488
1180         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
1181
1182         PR c++/47705
1183         * pt.c (convert_nontype_argument): Don't crash on non-pointer
1184         argument to pointer parameter.
1185
1186         PR c++/45651
1187         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
1188         !TREE_PUBLIC decls.
1189
1190 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
1191
1192         PR c++/47957
1193         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
1194         consider scopes of primary template definitions.  Adjust comments.
1195
1196 2011-03-07  Jason Merrill  <jason@redhat.com>
1197
1198         PR c++/48003
1199         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
1200         integer overflow.
1201         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
1202
1203         PR c++/48015
1204         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
1205
1206         PR c++/48008
1207         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
1208         (write_CV_qualifiers_for_type): Not here.
1209
1210 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
1211
1212         * lang-specs.h: Match -save-temps* instead of -save-temps.
1213
1214 2011-03-05  Jason Merrill  <jason@redhat.com>
1215
1216         * mangle.c (write_expression): Change ABI v6 to v5.
1217         (write_type): Likewise.
1218
1219 2011-03-04  Jan Hubicka  <jh@suse.cz>
1220
1221         PR lto/47497
1222         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
1223         and cgraph_add_thunk.
1224         * method.c (make_alias_for_thunk, use_thunk): Likewise.
1225         * mangle.c (mangle_decl): Likewise.
1226
1227 2011-03-04  Jason Merrill  <jason@redhat.com>
1228
1229         PR c++/47971
1230         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
1231         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
1232
1233         PR c++/46220
1234         * search.c (check_final_overrider): Allow pointer to same incomplete
1235         class type with different cv-quals.
1236
1237 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1238
1239         PR c++/47974
1240         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
1241
1242 2011-03-03  Jason Merrill  <jason@redhat.com>
1243
1244         PR c++/47950
1245         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
1246
1247 2011-03-02  Jason Merrill  <jason@redhat.com>
1248
1249         PR c++/47950
1250         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
1251
1252         PR c++/47774
1253         * tree.c (build_vec_init_elt): Split out from...
1254         (build_vec_init_expr): ...here.
1255         (diagnose_non_constexpr_vec_init): New fn.
1256         * semantics.c (potential_constant_expression_1): Use it.
1257         * cp-tree.h: Declare it.
1258
1259 2011-03-01  Jason Merrill  <jason@redhat.com>
1260
1261         PR c++/46159
1262         * parser.c (cp_parser_primary_expression): Don't warn about a
1263         failed tentative parse.
1264
1265         PR c++/47200
1266         * semantics.c (cxx_bind_parameters_in_call): Don't call
1267         adjust_temp_type on non-constant args.
1268
1269         PR c++/47851
1270         * call.c (standard_conversion): Provide requested cv-quals on
1271         class rvalue conversion.
1272
1273         PR c++/46282
1274         * decl2.c (grokbitfield): Handle type-dependent width.
1275
1276 2011-02-28  Jason Merrill  <jason@redhat.com>
1277
1278         PR c++/47873
1279         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
1280         after checking for a non-thunk.
1281
1282 2011-02-26  Jason Merrill  <jason@redhat.com>
1283
1284         PR c++/47904
1285         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
1286         * pt.c (iterative_hash_template_arg): And hash it.
1287
1288         PR c++/47897
1289         * semantics.c (non_const_var_error): Split out from...
1290         (cxx_eval_constant_expression): ...here.
1291         (potential_constant_expression_1) [VAR_DECL]: Use it.
1292         Allow dependent variables.
1293
1294 2011-02-24  Jason Merrill  <jason@redhat.com>
1295
1296         * parser.c (cp_parser_constant_expression): Set
1297         non_integral_constant_expression correctly for C++0x too.
1298         (cp_parser_static_assert): Allow non-constant expression.
1299         (cp_parser_direct_declarator): Expect non_constant_p to be set
1300         properly for C++0x.
1301         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
1302         * semantics.c (maybe_constant_value): Check type_unknown_p too.
1303         (potential_rvalue_constant_expression): New.
1304         (require_potential_rvalue_constant_expression): New.
1305
1306 2011-02-23  Jason Merrill  <jason@redhat.com>
1307
1308         * cp-tree.h (DECL_PARM_LEVEL): New.
1309         (struct lang_decl_parm): Add level field.
1310         * name-lookup.c (function_parm_depth): New fn.
1311         * name-lookup.h: Declare it.
1312         * parser.c (cp_parser_parameter_declaration_list): Use it.
1313         * mangle.c (struct globals): Add parm_depth field.
1314         (write_bare_function_type): Adjust it.
1315         (write_expression): Include the level delta in PARM_DECL mangling
1316         for abi >= 6.
1317
1318         * semantics.c (finish_decltype_type): Remove shortcut for decltype
1319         of id-expression.
1320         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
1321
1322 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
1323
1324         PR c++/46868
1325         * parser.c (cp_parser_class_specifier): Require a closing brace
1326         to attempt error recovery.
1327
1328 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
1329
1330         PR c++/47833
1331         * pt.c (struct pending_template): Add chain_next GTY option.
1332         * decl.c (struct named_label_use_entry): Likewise.
1333
1334 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
1335
1336         PR c++/47242
1337         * semantics.c (build_lambda_object): Bail out if a field is
1338         error_mark_node.
1339
1340 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
1341
1342         PR c++/47666
1343         * class.c (dfs_declare_virt_assop_and_dtor)
1344         (declare_virt_assop_and_dtor): New static functions.
1345         (add_implicitly_declared_members): Use
1346         declare_virt_assop_and_dtor.
1347
1348 2011-02-21  Jason Merrill  <jason@redhat.com>
1349
1350         PR c++/47207
1351         * decl2.c (decl_constant_var_p): A constexpr var needs an
1352         initializer to be constant.
1353         * semantics.c (cxx_eval_constant_expression): Complain about
1354         constexpr var used in its own initializer.
1355         * call.c (set_up_extended_ref_temp): Set
1356         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
1357
1358 2011-02-20  Jason Merrill  <jason@redhat.com>
1359
1360         PR c++/47199
1361         * semantics.c (cxx_eval_call_expression): Call
1362         cxx_eval_constant_expression in trivial shortcut.
1363
1364         PR c++/46831
1365         * call.c (convert_class_to_reference): Don't try to set up a
1366         second conv sequence for non-viable candidates.
1367
1368         PR c++/47703
1369         * error.c (location_of): Handle non-tagged types.
1370
1371         PR c++/46472
1372         * method.c (process_subob_fn): Instantiate constexpr templates.
1373         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
1374
1375 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
1376
1377         PR c++/46394
1378         * pt.c (tsubst_pack_expansion): do not use
1379         cp_tree_equal/same_type_p to detect an expansion of a parameter
1380         pack.
1381
1382 2011-02-19  Jason Merrill  <jason@redhat.com>
1383
1384         PR c++/47503
1385         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
1386
1387 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
1388
1389         PR c++/47795
1390         * semantics.c (finish_non_static_data_member): Early return if
1391         object is error_mark_node.
1392
1393 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
1394
1395         PR c++/47208
1396         * pt.c (do_auto_deduction): Do not mention error_mark_node in
1397         diagnostics.
1398         * semantics.c (finish_id_expression): Do not pass erroneous decl
1399         to decl_constant_var_p.
1400
1401 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
1402
1403         PR c++/47783
1404         * cvt.c (convert_from_reference): Call mark_exp_read.
1405
1406 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
1407
1408         PR c++/47172
1409         * pt.c (finish_call_expr): Consider a call expression that has a
1410         dependent "this" pointer as being dependent.  Add comments.
1411         (dependent_type_p, type_dependent_expression_p): Update comments.
1412
1413 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
1414
1415         PR c++/47326
1416         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
1417         expansion arguments are not evaluated.
1418
1419 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
1420
1421         PR c++/47704
1422         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
1423         instead of TYPE_LANG_FLAG_3.
1424         * pt.c (lookup_template_class): Copy over
1425         ENUM_FIXED_UNDERLYING_TYPE_P.
1426
1427 2011-02-15  Jason Merrill  <jason@redhat.com>
1428
1429         PR c++/46807
1430         * method.c (synthesized_method_walk): Always exit early for
1431         trivial fn in C++98 mode.
1432
1433 2011-02-14  Jason Merrill  <jason@redhat.com>
1434
1435         PR c++/47482
1436         * parser.c (cp_parser_enumerator_definition): Call
1437         fold_non_dependent_expr.
1438
1439 2011-02-09  Jason Merrill  <jason@redhat.com>
1440
1441         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
1442         * semantics.c (finish_fname): Only return the name if we're in
1443         a function.
1444
1445         * decl.c (build_enumerator): Don't perform integral promotions on
1446         non-integral constants.
1447
1448         * cvt.c (convert_to_void): Handle null op1.
1449
1450         * class.c (type_has_constexpr_default_constructor): Make sure the
1451         caller stripped an enclosing array.
1452         * init.c (perform_member_init): Strip arrays before calling it.
1453
1454         PR c++/47511
1455         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
1456
1457 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
1458
1459         PR c++/47398
1460         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
1461         template parameters in account.
1462
1463 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
1464
1465         PR c++/46890
1466         * parser.c (cp_parser_class_specifier): Fix setting of
1467         want_semicolon.
1468
1469 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
1470
1471         PR c++/47416
1472         * semantics.c (build_data_member_initialization): Handle
1473         STATEMENT_LIST always instead of just for CLEANUP_BODY.
1474
1475 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1476
1477         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
1478         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
1479
1480 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
1481
1482         PR c++/47311
1483         * cp-tree.h (fixup_template_parms): Declare.
1484         * pt.c (end_template_parm_list): Do not fixup template parms here.
1485         (fixup_template_parms): Remove static. Fix typo in the
1486         comments. Remove useless code statement.
1487         (fixup_template_parm): For a template template parameter, fixup
1488         its attributes before fixing up its type.
1489         * parser.c
1490         (cp_parser_template_declaration_after_export): After parsing
1491         template parameters fixup their types.
1492
1493 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
1494
1495         PR c++/47476
1496         * semantics.c (potential_constant_expression_1): Handle
1497         TRUTH_XOR_EXPR.
1498
1499 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
1500
1501         PR c++/43601
1502         * semantics.c (expand_or_defer_fn_1): Handle it.
1503         * decl2.c (decl_needed_p): Likewise.
1504
1505 2011-01-21  Jason Merrill  <jason@redhat.com>
1506
1507         PR c++/47041
1508         * semantics.c (build_constexpr_constructor_member_initializers):
1509         Handle trivial copy.
1510
1511 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
1512
1513         PR c++/47388
1514         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
1515         assume init must be NULL if scope is NULL.
1516         (begin_range_for_stmt): Likewise.
1517
1518 2011-01-21  Jason Merrill  <jason@redhat.com>
1519
1520         PR c++/46552
1521         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
1522
1523         PR c++/46977
1524         * semantics.c (potential_constant_expression_1): Split out from
1525         potential_constant_expression.  Add want_rval parm.  Handle
1526         template expression forms.  Don't enforce restriction on address
1527         of automatic variable here.  Add a couple of diagnostics that
1528         had been missing.
1529         (require_potential_constant_expression): New entry point.
1530         (build_data_member_initialization, register_constexpr_fundef): Adjust.
1531         (maybe_constant_value): Check potential_constant_expression.
1532         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
1533         * tree.c (build_vec_init_expr): Adjust.
1534
1535 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
1536
1537         PR c++/47303
1538         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
1539         or DECL_EXTERNAL.
1540
1541 2011-01-17  Jason Merrill  <jason@redhat.com>
1542
1543         PR c++/47067
1544         * semantics.c (base_field_constructor_elt): New fn.
1545         (cxx_eval_bare_aggregate): Use it.
1546         (build_data_member_initialization): Leave COMPONENT_REF for
1547         vfield inits.
1548
1549 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
1550
1551         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
1552         workaround.
1553
1554 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
1555             Jonathan Wakely  <jwakely.gcc@gmail.com>
1556
1557         PR c++/33558
1558         * decl.c (grokdeclarator): Reject mutable reference members.
1559
1560 2011-01-14  Jason Merrill  <jason@redhat.com>
1561
1562         PR c++/47289
1563         * pt.c (coerce_template_parms): Fix error recovery.
1564
1565         PR c++/46903
1566         * typeck2.c (check_narrowing): Only check arithmetic types.
1567
1568         PR c++/46688
1569         * tree.c (build_vec_init_expr): Handle flexible array
1570         properly.
1571
1572 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
1573
1574         PR c++/47213
1575         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
1576         TYPE_MAIN_DECL instead of TYPE_NAME.
1577         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
1578         * decl2.c (determine_visibility): Add check
1579         of CLASS_TYPE_P for underlying_type.
1580
1581 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
1582
1583         * cp-tree.h (begin_for_scope): New prototype.
1584         (begin_for_stmt): Update prototype.
1585         (begin_range_for_stmt): Update prototype.
1586         * init.c (build_vec_init): Update call to begin_for_stmt.
1587         * parser.c (cp_parser_for): New.
1588         (cp_parser_c_for): Add three new parameters.
1589         (cp_parser_range_for): Likewise. Most parsing code removed.
1590         (cp_parser_iteration_statement): Call cp_parser_for instead of
1591         cp_parser_c_for and cp_parser_range_for.
1592         (cp_parser_for_init_statement): Add new parameter and return type.
1593         (cp_parser_block_declaration): Update call to
1594         cp_parser_simple_declaration.
1595         (cp_parser_simple_declaration): Add new parameter.
1596         Update call to cp_parser_init_declarator.
1597         (cp_parser_init_declarator): Add new parameter.
1598         * pt.c (tsubst_expr): Update call to begin_for_stmt.
1599         * semantics.c (begin_for_scope): New.
1600         (begin_for_stmt): Add two new parameters.
1601         (begin_range_for_stmt): Likewise.
1602
1603 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
1604
1605         * parser.c (cp_parser_objc_at_property_declaration): Improved
1606         error message.
1607
1608 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
1609
1610         PR debug/46955
1611         * cp-lang.c (get_template_innermost_arguments_folded)
1612         (get_template_argument_pack_elems_folded)
1613         (template_arg_needs_folding, fold_cplus_constants): New static
1614         functions.
1615         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
1616         get_template_innermost_arguments_folded.
1617         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
1618         get_template_argument_pack_elems_folded.
1619
1620 2011-01-11  Jason Merrill  <jason@redhat.com>
1621
1622         PR c++/46658
1623         * init.c (build_new_1): Handle value-init in templates differently.
1624
1625         PR c++/45520
1626         * tree.c (maybe_dummy_object): Check current_class_ref against
1627         context, not current_class_type.
1628
1629 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
1630
1631         PR objc/47078
1632         * parser.c (cp_parser_objc_typename): If the type is unknown, for
1633         error recovery purposes behave as if it was not specified so that
1634         the default type is used.
1635
1636 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
1637
1638         PR c++/47022
1639         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
1640         for the second build_x_va_arg argument.
1641
1642 2011-01-05  Tom Tromey  <tromey@redhat.com>
1643
1644         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
1645         (lvalue_or_else): Likewise.
1646
1647 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
1648
1649         PR target/38662
1650         * tree.c (cxx_type_hash_eq):
1651         Allow METHOD_TYPE, too.
1652
1653 \f
1654 Copyright (C) 2011 Free Software Foundation, Inc.
1655
1656 Copying and distribution of this file, with or without modification,
1657 are permitted in any medium without royalty provided the copyright
1658 notice and this notice are preserved.