OSDN Git Service

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