OSDN Git Service

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