OSDN Git Service

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