OSDN Git Service

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