OSDN Git Service

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