OSDN Git Service

* pt.c (convert_nontype_argument): Only integral arguments
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2011-11-09  Jason Merrill  <jason@redhat.com>
2
3         * pt.c (convert_nontype_argument): Only integral arguments
4         get early folding.
5
6         * parser.c (cp_parser_alias_declaration): Don't do semantic
7         processing if parsing failed.
8
9 2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
10
11         PR c++/51045
12         * init.c (build_new_1, build_vec_delete_1, build_delete):
13         Use nullptr_node.
14
15 2011-11-09  Paolo Carlini  <paolo.carlini@oracle.com>
16
17         PR c++/51047
18         * search.c (lookup_member): Change to take also a tsubst_flags_t
19         parameter.
20         (lookup_field, lookup_fnfields): Adjust calls.
21         * typeck.c (lookup_destructor, finish_class_member_access_expr,
22         build_ptrmemfunc_access_expr): Likewise.
23         * class.c (handle_using_decl, maybe_note_name_used_in_class):
24         Likewise.
25         * pt.c (resolve_typename_type): Likewise.
26         * semantics.c (lambda_function): Likewise.
27         * parser.c (cp_parser_perform_range_for_lookup,
28         cp_parser_lookup_name): Likewise.
29         * friend.c (make_friend_class): Likewise.
30         * name-lookup.c (pushdecl_maybe_friend_1, get_class_binding,
31         do_class_using_decl, lookup_qualified_name): Likewise.
32         * cp-tree.h (lookup_member): Adjust declaration.
33
34 2011-11-09  Dodji Seketeli  <dodji@redhat.com>
35
36         PR c++/51027
37         * parser.c (cp_parser_alias_declaration): Require ';' at the end
38         of the declaration.
39
40 2011-11-09  Dodji Seketeli  <dodji@redhat.com>
41
42         PR debug/51032
43         * decl2.c (check_member_template): Accept alias templates and ...
44         * parser.c (cp_parser_alias_declaration): ... use it here.
45
46 2011-11-08  Jason Merrill  <jason@redhat.com>
47
48         PR c++/50835
49         * typeck.c (build_x_conditional_expr): Preserve lvalue/xvalueness.
50         * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Return clk_ordinary
51         in C++98.
52
53 2011-11-08  Richard Guenther  <rguenther@suse.de>
54
55         PR middle-end/51010
56         * error.c (dump_expr): Handle SSA_NAMEs.
57
58 2011-11-07  Richard Henderson  <rth@redhat.com>
59             Aldy Hernandez  <aldyh@redhat.com>
60             Torvald Riegel  <triegel@redhat.com>
61
62         Merged from transactional-memory.
63
64         * call.c (build_new_function_call): Call tm_malloc_replacement.
65         * class.c (check_bases): Compute transaction attributes for the
66         class based on its base classes.
67         (look_for_tm_attr_overrides, set_one_vmethod_tm_attributes,
68         set_method_tm_attributes): New.
69         (finish_struct_1): Call set_method_tm_attributes.
70         * cp-tree.h (begin_transaction_stmt, finish_transaction_stmt,
71         build_transaction_expr): Declare.
72         (TRANSACTION_EXPR_IS_STMT): New.
73         * decl.c (push_cp_library_fn): Set attribute to transaction_safe.
74         * except.c (do_get_exception_ptr): Apply transaction_pure.
75         (do_begin_catch): Mark _ITM_cxa_begin_catch transaction_pure and
76         record as transactional-memory wrapper.
77         (do_end_catch): Similarly for _ITM_cxa_end_catch.
78         (do_allocate_exception): Similarly for _ITM_cxa_allocate_exception.
79         (build_throw): Similarly for _ITM_cxa_throw. Make __cxa_rethrow pure.
80         * parser.h (struct cp_parser): Add in_transaction flag.
81         * parser.c (enum non_integral_constant): Add NIC_TRANSACTION.
82         (cp_parser_non_integral_constant_expression): Handle NIC_TRANSACTION.
83         (enum required_token): Add transaction tokens.
84         (cp_parser_transaction, cp_parser_transaction_expression,
85         cp_parser_function_transaction, cp_parser_transaction_cancel,
86         cp_parser_txn_attribute_opt): New.
87         (cp_parser_unary_expression): Handle RID_TRANSACTION*.
88         (cp_parser_statement, cp_parser_function_definition_after_declarator,
89         cp_parser_token_starts_function_definition_p): Same.
90         (cp_parser_required_error): Handle RT_TRANSACTION*.
91         * pt.c (tsubst_expr): Handle TRANSACTION_EXPR.
92         * semantics.c (begin_transaction_stmt, finish_transaction_stmt,
93         build_transaction_expr): New.
94
95 2011-11-08  Dodji Seketeli  <dodji@redhat.com>
96
97         Fix context handling of alias-declaration
98         * decl.c (start_decl): Update comment.
99         * error.c (dump_alias_template_specialization): Dump the context
100         of the specialization.
101         * parser.c (cp_parser_alias_declaration): Call pop_scope on the
102         pushed scope yielded by start_decl.
103
104 2011-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
105
106         PR c++/50864
107         * parser.c (cp_parser_postfix_dot_deref_expression): Reject invalid
108         uses of '->' and '.' as postfix-expression in namespace scope.
109
110 2011-11-07  Jason Merrill  <jason@redhat.com>
111
112         PR c++/50848
113         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't crash
114         if lookup finds a non-function.
115
116         PR c++/50863
117         * parser.c (cp_parser_initializer_list): Parse C99
118         array designators tentatively.
119
120         PR c++/50870
121         * pt.c (tsubst_copy): Handle NAMESPACE_DECL.
122         (tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent
123         object.
124
125 2011-11-07  Paolo Carlini  <paolo.carlini@oracle.com>
126
127         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
128         call in case COMPONENT_REF.
129
130 2011-11-07  Jason Merrill  <jason@redhat.com>
131             Dodji Seketeli  <dodji@redhat.com>
132
133         Support C++11 alias-declaration
134         PR c++/45114
135         * cp-tree.h (TYPE_DECL_ALIAS_P, TYPE_ALIAS_P)
136         (DECL_TYPE_TEMPLATE_P, DECL_ALIAS_TEMPLATE_P): New accessor
137         macros.
138         (TYPE_TEMPLATE_INFO): Get template info of an alias template
139         specializations from its TYPE_DECL.
140         (SET_TYPE_TEMPLATE_INFO): Set template info of alias template
141         specializations into its TYPE_DECL.
142         (DECL_CLASS_TEMPLATE_P): Re-write using the new
143         DECL_TYPE_TEMPLATE_P.
144         (enum cp_decl_spec): Add new ds_alias enumerator.
145         (alias_type_or_template_p, alias_template_specialization_p):
146         Declare new functions.
147         * parser.c (cp_parser_alias_declaration): New static function.
148         (cp_parser_check_decl_spec): Add "using" name for the `alias'
149         declspec.
150         (cp_parser_type_name): Update comment.  Support simple-template-id
151         representing alias template specializations in c++0x mode.
152         (cp_parser_qualifying_entity): Update comment.  Use
153         cp_parser_type_name.
154         (cp_parser_block_declaration): Handle alias-declaration in c++11.
155         Update comment.
156         (cp_parser_template_id): Handle specializations of alias
157         templates.
158         (cp_parser_member_declaration): Add alias-declaration production
159         to comment.  Support alias-declarations.
160         (cp_parser_template_declaration_after_export): Handle alias
161         templates in c++11.
162         * decl.c (make_typename_type, make_unbound_class_template): Accept
163         alias templates.
164         (grokdeclarator): Set TYPE_DECL_ALIAS_P on alias
165         declarations.
166         * decl2.c (grokfield): Move template creation after setting up the
167         TYPE_DECL of the alias, so that the TEMPLATE_DECL of the alias
168         template actually carries the right type-id of the alias
169         declaration.
170         * pt.c (alias_type_or_template_p)
171         (alias_template_specialization_p): Define new public functions.
172         (maybe_process_partial_specialization): Reject partial
173         specializations of alias templates.
174         (primary_template_instantiation_p): Consider alias template
175         instantiations.
176         (push_template_decl_real): Assert that TYPE_DECLs of alias
177         templates are different from those of class template.  Store
178         template info onto the TYPE_DECL of the alias template.
179         (convert_template_argument): Strip aliases from template
180         arguments.
181         (lookup_template_class_1): Handle the creation of the
182         specialization of an alias template.
183         (tsubst_decl): Create a substituted copy of the TYPE_DECL of an
184         member alias template.
185         (tsubst): Handle substituting into the type of an alias template.
186         Handle substituting UNBOUND_CLASS_TEMPLATE into
187         BOUND_TEMPLATE_TEMPLATE_PARM.
188         (do_type_instantiation): Better diagnostics when trying to
189         explicitely instantiate a non-class template.
190         * search.c (lookup_field_1, lookup_field_r): Support looking up
191         alias templates.
192         * semantics.c (finish_template_type): For instantiations of alias
193         templates, return the TYPE_DECL of the actual alias and not the
194         one of the aliased type.
195         * error.c (dump_alias_template_specialization): New static
196         function.
197         (dump_type): Handle printing of alias templates and their
198         specializations.  templates.
199         (dump_aggr_type): For specialization of alias templates, fetch
200         arguments from the right place.
201         (dump_decl): Print an alias-declaration like `using decl = type;'
202         (dump_template_decl):  Support printing of alias templates.
203
204 2011-11-07  Jason Merrill  <jason@redhat.com>
205
206         PR c++/35688
207         * decl2.c (constrain_visibility): Return void.  Add tmpl parm
208         which gives the constraint priority over an attribute.
209         (constrain_visibility_for_template, determine_visibility): Adjust.
210         * pt.c (instantiate_class_template_1): Call determine_visibility.
211
212         PR c++/33255
213         * decl.c (save_function_data): Clear local_typedefs.
214
215         * decl.c (cp_finish_decl): Only make_tree_vector if we're calling
216         check_initializer.
217
218 2011-11-06  Jason Merrill  <jason@redhat.com>
219
220         PR c++/35688
221         * decl2.c (constrain_visibility): Check decl_has_visibility_attr
222         rather than DECL_VISIBILITY_SPECIFIED.
223
224 2011-11-06  Paolo Carlini  <paolo.carlini@oracle.com>
225
226         PR c++/47695
227         * decl2.c (mark_used): Early return false after error or sorry.
228         * cp-tree.h (mark_used): Adjust declaration.
229         * semantics.c (finish_id_expression): Check mark_used return value.
230
231 2011-11-05  Jason Merrill  <jason@redhat.com>
232
233         PR c++/48370
234         * decl.c (cp_finish_decl): Mostly revert previous change.
235
236 2011-11-04  Jason Merrill  <jason@redhat.com>
237
238         PR c++/26714
239         * init.c (perform_member_init): Strip TARGET_EXPR around NSDMI.
240         Do temporary lifetime extension.
241
242         PR c++/48370
243         * decl.c (cp_finish_decl): Run cleanups in the right order.
244
245 2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>
246
247         PR c++/50608
248         * semantics.c (finish_offsetof): Adjust call to fold_offsetof.
249         * typeck.c (cp_build_addr_expr_1): Call fold_offsetof_1.
250
251 2011-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
252
253         * typeck.c (build_indirect_ref): Use ATTRIBUTE_UNUSED.
254         * mangle.c (write_unnamed_type_name): Likewise.
255
256 2011-11-04  Magnus Fromreide  <magfr@lysator.liu.se>
257
258         * parser.c (cp_parser_enumerator_list): Do not warn about
259         trailing commas in C++0x mode.
260
261 2011-11-04  Olivier Goffart  <olivier@woboq.com>
262             Jason Merrill  <jason@redhat.com>
263
264         PR c++/50965
265         * class.c (check_field_decls): NSDMI makes a class non-aggregate.
266
267 2011-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
268
269         PR c++/48420
270         * call.c (conversion_null_warnings): For 'false' to NULL pointer,
271         just check that TREE_TYPE (expr) is a BOOLEAN_TYPE.
272
273 2011-11-04  Ed Smith-Rowland  <3dw4rd@verizon.net>
274
275         PR c++/50941
276         * parser.c (cp_parser_userdef_string_literal): Fix string length.
277
278 2011-11-04  Jason Merrill  <jason@redhat.com>
279
280         PR c++/48370
281         * call.c (extend_ref_init_temps, extend_ref_init_temps_1): New.
282         (set_up_extended_ref_temp): Use it.  Change cleanup parm to VEC.
283         (initialize_reference): Just call convert_like.
284         * decl.c (grok_reference_init): Just call initialize_reference.
285         (build_init_list_var_init): Remove.
286         (check_initializer): Change cleanup parm to VEC.  Handle references
287         like other types.  Call perform_implicit_conversion instead
288         of build_init_list_var_init.  Don't use build_aggr_init for
289         aggregate initialization of arrays.
290         (cp_finish_decl): Change cleanup to VEC.
291         * typeck2.c (store_init_value): Call extend_ref_init_temps.
292         Use build_vec_init for non-constant arrays.
293         * init.c (expand_aggr_init_1): Adjust.
294         (build_vec_init): Avoid re-converting an initializer
295         that's already digested.
296         * mangle.c (mangle_ref_init_variable): Add a discriminator.
297         * cp-tree.h: Adjust.
298         * typeck.c (convert_for_initialization): Adjust.
299         * decl2.c (maybe_emit_vtables): Adjust.
300
301 2011-11-02  Jason Merrill  <jason@redhat.com>
302
303         PR c++/50930
304         * init.c (build_aggr_init): Don't set LOOKUP_ONLYCONVERTING
305         if the initializer has TARGET_EXPR_DIRECT_INIT_P.
306         (expand_default_init): An initializer with TARGET_EXPR_DIRECT_INIT_P
307         or TARGET_EXPR_LIST_INIT_P doesn't need more processing.
308         * tree.c (bot_manip): Propagate TARGET_EXPR_IMPLICIT_P,
309         TARGET_EXPR_LIST_INIT_P, TARGET_EXPR_DIRECT_INIT_P.
310         * call.c (convert_like_real): Set TARGET_EXPR_DIRECT_INIT_P
311         as appropriate on list-value-initialization.
312
313         * parser.c (cp_parser_decl_specifier_seq): Change "C++0x" to
314         "C++11" in warnings.
315         (cp_lexer_get_preprocessor_token): Likewise.
316         (cp_parser_binary_expression): Likewise.
317
318 2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
319
320         PR c++/50810
321         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
322         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
323         * decl.c (check_initializer): Likewise.
324         * semantics.c (finish_compound_literal): Likewise.
325
326 2011-11-02  Paolo Carlini  <paolo.carlini@oracle.com>
327
328         PR c++/50956
329         * typeck.c (build_const_cast_1): Fix -Wcast-qual for false
330         comp_ptr_ttypes_const.
331
332 2011-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
333
334         * Make-lang.in (g++spec.o): Pass SHLIB instead of SHLIB_LINK.
335
336 2011-11-01  Paolo Carlini  <paolo.carlini@oracle.com>
337
338         PR c++/44277
339         * cvt.c (cp_convert_to_pointer): Warn for zero as null pointer
340         constant.
341         * typeck.c (cp_truthvalue_conversion): Handle pointers and member
342         function pointers under c_inhibit_evaluation_warnings; use
343         nullptr_node for data member pointers.
344         (cp_build_binary_op): Tweak, just forward to cp_convert op1,
345         either a nullptr_node or an integer_zero_node.
346         (build_ptrmemfunc): Use nullptr_node.
347         * init.c (build_zero_init_1): Likewise.
348
349 2011-11-01  Jason Merrill  <jason@redhat.com>
350
351         PR c++/50500
352         DR 1082
353         * search.c (lookup_fnfields_idx_nolazy): Split out from...
354         (lookup_fnfields_1): ...here.
355         (lookup_fnfields_slot_nolazy): Use it.
356         * cp-tree.h: Declare it.
357         * class.c (type_has_move_assign): Use it.
358         (type_has_user_declared_move_assign): Likewise.
359
360 2011-10-31  Jason Merrill  <jason@redhat.com>
361
362         PR c++/50920
363         * class.c (check_field_decl): Change c++0x in diags to c++11.
364         * error.c (maybe_warn_cpp0x): Likewise.
365         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
366         * pt.c (check_default_tmpl_args): Likewise.
367
368 2011-10-31   Diego Novillo  <dnovillo@google.com>
369
370         * mangle.c (get_mangled_id): Factor from ...
371         (mangle_decl): ... here.
372         Call get_mangled_id.
373
374 2011-10-25  Gerald Pfeifer  <gerald@pfeifer.com>
375
376         * NEWS (GCC 2.95): Refer to GNU/Linux instead of Linux.
377         (EGCS 1.0): Ditto.
378
379 2011-10-29  Paolo Carlini  <paolo.carlini@oracle.com>
380
381         PR c++/50901
382         * call.c (build_new_op_1): Handle ABS_EXPR together with the
383         other unary EXPR.
384
385 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
386
387         Revert:
388         2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
389
390         PR c++/50864
391         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
392         call in case COMPONENT_REF.
393
394 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
395
396         * pt.c (unify_pack_expansion): Initialize bad_old_arg and bad_new_arg.
397
398 2011-10-28  Paolo Carlini  <paolo.carlini@oracle.com>
399
400         PR c++/50864
401         * pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
402         call in case COMPONENT_REF.
403
404 2011-10-27  Jason Merrill  <jason@redhat.com>
405
406         * semantics.c (cxx_eval_outermost_constant_expr): Check
407         cp_has_mutable_p.
408         (cxx_eval_component_reference): Check DECL_MUTABLE_P.
409
410 2011-10-27  Roberto Agostino Vitillo  <ravitillo@lbl.gov>
411
412         PR c++/30066
413         * decl2.c (determine_hidden_inline): New function.
414         (determine_visibility): fvisibility-inlines-hidden affects inline
415         functions.
416
417 2011-10-27  Dodji Seketeli  <dodji@redhat.com>
418
419         * cp-tree.h (DECL_DECLARES_TYPE_P): Fix comment.
420
421 2011-10-26  Jason Merrill  <jason@redhat.com>
422
423         * typeck.c (check_literal_operator_args): Avoid building types.
424
425 2011-10-26  Ed Smith-Rowland  <3dw4rd@verizon.net>
426
427         Implement C++11 user-defined literals.
428         * cp-objcp-common.c: (cp_tree_size) Return size of USERDEF_LITERAL tree.
429         * cp-tree.h: (UDLIT_OP_*, UDLIT_OPER_P): Literal operator
430         name tools. New tree code for user-defined literals.
431         * cxx-pretty-print.h: (pp_cxx_userdef_literal) New.
432         * cxx-pretty-print.c: (pp_cxx_userdef_literal) New.
433         (pp_cxx_primary_expression, pp_cxx_expression): Use it.
434         * decl.c: (cp_tree_node_structure): Return new tree code.
435         (duplicate_decls): Check for raw vs. template operator conflicts.
436         (grokfndecl, grokdeclarator): New checks for literal operators.
437         * error.c: (dump_expr): Warn about user-defined literals
438         in C++98 mode. (dump_function_name): Pretty printing.
439         * mangle.c: (write_literal_operator_name): New.
440         (write_unqualified_id, write_unqualified_name): Use it.
441         * parser.c: (cp_parser_operator): Handle operator"".
442         (cp_parser_userdef_char_literal, cp_parser_userdef_numeric_literal,
443         cp_parser_userdef_string_literal): New.
444         (cp_parser_primary_expression): Handle new user-defined literal tokens
445         with new functions.
446         * semantics.c: (potential_constant_expression_1): Add
447         user-defined literals.
448         * typeck.c (check_raw_literal_operator,
449         check_literal_operator_args): New.
450
451 2011-10-26  Paolo Carlini  <paolo.carlini@oracle.com>
452
453         * typeck.c (cp_build_addr_expr_1): Use BASELINK_P.
454         * class.c (instantiate_type): Likewise.
455         * pt.c (convert_nontype_argument_function, uses_template_parms,
456         tsubst_copy, resolve_nondeduced_context, type_dependent_expression_p):
457         Likewise.
458         * semantics.c (finish_decltype_type): Likewise.
459         * decl2.c (mark_used): Likewise.
460         * name-lookup.c (arg_assoc): Likewise.
461
462 2011-10-26  Paolo Carlini  <paolo.carlini@oracle.com>
463
464         PR c++/50870
465         * typeck.c (non_reference): Pass NULL_TREE through.
466
467 2011-10-25  Jason Merrill  <jason@redhat.com>
468
469         PR c++/50866
470         PR c++/41449
471         * semantics.c (maybe_cleanup_point_expr_void): No longer static.
472         * typeck2.c (split_nonconstant_init_1): Use it.
473         * cp-tree.h: Declare it.
474         * decl.c (wrap_cleanups_r): Stop at CLEANUP_POINT_EXPR.
475
476         PR c++/49996
477         * tree.c (stabilize_init): Stabilize scalar elements of a
478         CONSTRUCTOR, too.
479
480 2011-10-25  Paolo Carlini  <paolo.carlini@oracle.com>
481
482         PR c++/50858
483         * typeck.c (composite_pointer_type_r): Check return value of
484         composite_pointer_type_r for error_mark_node.
485
486 2011-10-25  Paolo Carlini  <paolo.carlini@oracle.com>
487
488         PR c++/50861
489         * pt.c (tsubst_copy_and_build): Check return value of
490         tsubst_copy_and_build for error_mark_node.
491
492 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
493
494         PR c++/50841
495         Revert:
496         2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
497
498         PR c++/50810
499         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
500         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
501         * decl.c (check_initializer): Likewise.
502         * semantics.c (finish_compound_literal): Likewise.
503
504 2011-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
505
506         PR c++/50810
507         * typeck2.c (check_narrowing): Adjust OPT_Wnarrowing diagnostics.
508         (digest_init_r): Call check_narrowing irrespective of the C++ dialect.
509         * decl.c (check_initializer): Likewise.
510         * semantics.c (finish_compound_literal): Likewise.
511
512 2011-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
513
514         PR c++/45385
515         * init.c (build_vec_init): Early return error_mark_node if
516         maxindex is -1.
517
518 2011-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
519
520         PR c++/31423
521         * typeck2.c (cxx_incomplete_type_diagnostic): Improve error message
522         for invalid use of member function.
523
524 2011-10-21  Ville Voutilainen  <ville.voutilainen@gmail.com>
525
526         PR c++/50811
527         * parser.c (cp_parser_class_head): Parse virt-specifiers
528         regardless of whether an id is present
529
530 2011-10-20  Jason Merrill  <jason@redhat.com>
531
532         PR c++/41449
533         * typeck2.c (split_nonconstant_init_1): Handle EH cleanup of
534         initialized subobjects.
535
536 2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
537
538         PR c++/13657
539         * class.c (instantiate_type): Fix error message.
540
541 2011-10-19  Jason Merrill  <jason@redhat.com>
542
543         PR c++/50793
544         * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.
545
546 2011-10-19  Roland Stigge  <stigge@antcom.de>
547
548         PR translation/49704
549         * semantics.c (potential_constant_expression_1): Use "AST" instead of
550         "ast" in sorry message.
551
552 2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
553
554         PR c++/38761
555         PR c++/40872
556         * decl.c (duplicate_decls, make_typename_type, grokdeclarator): Use
557         G_() in error message strings to facilitate translation.
558         * semantics.c (finish_id_expression): Likewise.
559         * parser.c (cp_parser_nested_name_specifier_opt,
560         cp_parser_parameter_declaration): Likewise.
561
562 2011-10-18  Jason Merrill  <jason@redhat.com>
563
564         PR c++/50531
565         * pt.c (instantiate_decl): Recognize when a function defaulted
566         outside the class is already instantiated.
567
568         PR c++/50742
569         * decl.c (check_previous_goto_1): Handle using-decl.
570
571 2011-10-18  Jason Merrill  <jason@redhat.com>
572
573         PR c++/50500
574         DR 1082
575         * class.c (type_has_user_declared_move_constructor): New.
576         (type_has_user_declared_move_assign): New.
577         (add_implicitly_declared_members): Add lazy copy ops
578         even if there's a move.
579         * method.c (lazily_declare_fn): Delete implicit copies
580         if there's a move.
581         (maybe_explain_implicit_delete): Explain this.  Use inform rather
582         than error.
583         * cp-tree.h: Declare new fns.
584
585 2011-10-18   Diego Novillo  <dnovillo@google.com>
586
587         * parser.c: Remove ENABLE_CHECKING markers around debugging
588         routines.
589         (cp_lexer_dump_tokens): Add arguments START_TOKEN and CURR_TOKEN.
590         Make static
591         When printing CURR_TOKEN surround it in [[ ]].
592         Start printing at START_TOKEN.
593         Update all users.
594         (cp_debug_print_tree_if_set): New.
595         (cp_debug_print_context): New.
596         (cp_debug_print_context_stack): New.
597         (cp_debug_print_flag): New.
598         (cp_debug_print_unparsed_function): New.
599         (cp_debug_print_unparsed_queues): New.
600         (cp_debug_parser_tokens): New.
601         (cp_debug_parser): New.
602         (cp_lexer_start_debugging): Set cp_lexer_debug_stream to stderr.
603         (cp_lexer_stop_debugging): Set cp_lexer_debug_stream to NULL.
604         * parser.h (cp_lexer_dump_tokens): Remove declaration.
605         (cp_debug_parser): Declare.
606
607 2011-10-17  Michael Spertus  <mike_spertus@symantec.com>
608
609         * cp-tree.def: Add BASES as a new tree code.
610         * cp-tree.h (enum cp_trait_kind): Add CPTK_BASES, CPTK_DIRECT_BASES.
611         (BASES_TYPE, BASES_DIRECT): Define.
612         (calculate_bases, finish_bases, calculate_direct_bases): Declare.
613         * parser.c (cp_parser_trait_expr, cp_parser_template_argument_list,
614         (cp_parser_simple_type_specifier, cp_parser_save_nsdmi): Use them.
615         * pt.c (find_parameter_packs_r, tsubst_pack_expansion): Likewise.
616         * semantics.c (calculate_bases, finish_bases, calculate_direct_bases,
617         dfs_calculate_bases_pre, dfs_calculate_bases_post,
618         calculate_bases_helper): Define.
619
620 2011-10-17  Jason Merrill  <jason@redhat.com>
621
622         PR c++/50736
623         * parser.c (cp_parser_lambda_introducer): Check for more
624         invalid captures.
625
626 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
627
628         PR c++/44524
629         * typeck.c (build_class_member_access_expr): Provide a better error
630         message for X.Y where X is a pointer to class type.
631         (finish_class_member_access_expr): Likewise.
632
633 2011-10-15  Tom Tromey  <tromey@redhat.com>
634             Dodji Seketeli  <dodji@redhat.com>
635
636         * error.c (cp_diagnostic_starter): Pass the relevant location to
637         diagnostic_report_current_module.
638         (cp_diagnostic_finalizer): Call virt_loc_aware_diagnostic_finalizer.
639
640 2011-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
641
642         PR c++/48489
643         * typeck.c (finish_class_member_access_expr): Fix error call
644         for TREE_CODE (access_path) == TREE_BINFO.
645
646 2011-10-15  Paolo Carlini  <paolo.carlini@oracle.com>
647
648         PR c++/50732
649         * semantics.c (finish_trait_expr): Do not try to instantiate the
650         the base type of an __is_base_of trait.
651         (check_trait_type): Return a tree; use complete_type_or_else.
652
653 2011-10-14  Jason Merrill  <jason@redhat.com>
654
655         PR c++/50563
656         * parser.c (cp_parser_cache_group): Handle end==CPP_COMMA.
657         (cp_parser_save_nsdmi): Pass it.
658
659         PR c++/50707
660         * method.c (walk_field_subobs): Check for NSDMI before
661         complaining about uninitialized fields.
662
663         * pt.c (tsubst_decl) [FIELD_DECL]: Use void_zero_node
664         instead of error_mark_node as a placeholder.
665
666 2011-10-14  Paolo Carlini  <paolo.carlini@oracle.com>
667
668         PR c++/38174
669         * call.c (add_builtin_candidate): If two pointers have a composite
670         pointer type, generate a single candidate with that type.
671
672 2011-10-13  Jason Merrill  <jason@redhat.com>
673
674         PR c++/50614
675         * cp-tree.h (VAR_TEMPL_TYPE_FIELD_OR_FUNCTION_DECL_CHECK): New.
676         (DECL_TEMPLATE_INFO): Use it.
677         * pt.c (tsubst_decl) [FIELD_DECL]: Set DECL_TEMPLATE_INFO
678         if the decl has an NSDMI.
679         * init.c (perform_member_init): Use it.
680
681         PR c++/50437
682         * cp-tree.h (struct tree_lambda_expr): Add closure field.
683         (LAMBDA_EXPR_CLOSURE): New.
684         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Likewise.
685         * semantics.c (build_lambda_object): Use it instead of TREE_TYPE.
686         (begin_lambda_type, lambda_function, add_capture): Likewise.
687         (add_default_capture, lambda_expr_this_capture): Likewise.
688
689 2011-10-13   Diego Novillo  <dnovillo@google.com>
690
691         * cp-tree.h (struct language_function): Rename in_function_try_handler
692         to x_in_function_try_handler.
693         Rename in_base_initializer to x_in_base_initializer.
694         Update all users.
695
696 2011-10-13   Diego Novillo  <dnovillo@google.com>
697
698         * class.c (sorted_fields_type_new): Factor out of ...
699         (finish_struct_1): ... here.
700
701 2011-10-13  Jason Merrill  <jason@redhat.com>
702
703         PR c++/50618
704         * init.c (expand_aggr_init_1): Don't zero-initialize virtual
705         bases of a base subobject.
706
707 2011-10-12  Paolo Carlini  <paolo.carlini@oracle.com>
708
709         PR c++/50594
710         * decl.c (cxx_init_decl_processing): Add
711         __attribute__((externally_visible)) to operator new and
712         operator delete library fn.
713
714 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
715
716         * decl.c (duplicate_decls): Delete old interface with two parallel
717         arrays to hold standard builtin declarations, and replace it with
718         a function based interface that can support creating builtins on
719         the fly in the future.  Change all uses, and poison the old
720         names.  Make sure 0 is not a legitimate builtin index.
721         * except.c (build_eh_type_type): Ditto.
722         (choose_personality_routine): Ditto.
723         * semantics.c (finish_omp_atomic): Ditto.
724         (finish_omp_barrier): Ditto.
725         (finish_omp_flush): Ditto.
726         (finish_omp_taskwait): Ditto.
727
728 2011-10-11  Jason Merrill  <jason@redhat.com>
729
730         PR c++/49855
731         PR c++/49896
732         * cp-tree.def (IMPLICIT_CONV_EXPR): New.
733         * call.c (perform_implicit_conversion_flags): Build it
734         instead of NOP_EXPR.
735         * cp-objcp-common.c (cp_common_init_ts): It's typed.
736         * cxx-pretty-print.c (pp_cxx_cast_expression): Handle it.
737         (pp_cxx_expression): Likewise.
738         * error.c (dump_expr): Likewise.
739         * semantics.c (potential_constant_expression_1): Likewise.
740         * tree.c (cp_tree_equal): Likewise.
741         (cp_walk_subtrees): Likewise.
742         * pt.c (iterative_hash_template_arg): Likewise.
743         (for_each_template_parm_r): Likewise.
744         (type_dependent_expression_p): Likewise.
745         (tsubst_copy, tsubst_copy_and_build): Handle IMPLICIT_CONV_EXPR
746         and CONVERT_EXPR.
747         * cp-tree.h (IMPLICIT_CONV_EXPR_DIRECT_INIT): New.
748
749 2011-10-11  Paolo Carlini  <paolo.carlini@oracle.com>
750
751         PR c++/50611
752         * pt.c (tsubst_copy_and_build): If (complain & tf_error) is false
753         do not call unqualified_name_lookup_error.
754
755 2011-10-10  Paolo Carlini  <paolo.carlini@oracle.com>
756
757         PR c++/50660
758         * call.c (conversion_null_warnings): Don't look through references.
759
760 2011-10-09  Paolo Carlini  <paolo.carlini@oracle.com>
761
762         PR c++/38980
763         * init.c (constant_value_1): Add bool parameter.
764         (decl_constant_value_safe): Add.
765         (integral_constant_value): Adjust.
766         (decl_constant_value): Adjust.
767         * cp-tree.h (decl_constant_value_safe): Declare.
768         * typeck.c (decay_conversion): Use decl_constant_value_safe.
769         * call.c (convert_like_real): Likewise.
770
771 2011-10-09  Jakub Jelinek  <jakub@redhat.com>
772             Diego Novillo  <dnovillo@google.com>
773
774         * pt.c (reregister_specialization): Use htab_find instead of
775         htab_find_slot with INSERT.
776         (maybe_process_partial_specialization, lookup_template_class_1): Change
777         slot variable type to void ** to avoid aliasing problems.
778         (register_specialization): Likewise.  Use slot != NULL instead of
779         more expensive !optimize_specialization_lookup_p (tmpl) test.
780
781 2011-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
782
783         PR c++/34927
784         * typeck2.c (abstract_virtuals_error_sfinae): Don't produce duplicate
785         inform messages in case of cloned destructor.
786
787 2011-10-06  Jason Merrill  <jason@redhat.com>
788
789         PR c++/39164
790         * decl.c (grokfndecl): Diagnose redefinition of defaulted fn.
791
792 2011-10-02  Jason Merrill  <jason@redhat.com>
793
794         * pt.c (tsubst_pack_expansion): Re-use ARGUMENT_PACK_SELECTs.
795         Change unsubstituted_packs to bool.
796
797         * parser.c (cp_parser_range_for): Don't try to deduce from {}
798         in a template.
799
800         PR c++/35722
801         Implement N2555 (expanding pack expansion to fixed parm list)
802         * pt.c (coerce_template_parms): Allow expanding a pack expansion
803         to a fixed-length argument list.
804         (unify_pack_expansion): Handle explicit args properly.
805         (unify) [TREE_VEC]: Handle pack expansions here.
806         [TYPE_ARGUMENT_PACK]: Not here.
807         (tsubst_pack_expansion): Don't try to do partial substitution.
808         (pack_deducible_p): New.
809         (fn_type_unification): Use it.
810         (find_parameter_packs_r): Take the TYPE_MAIN_VARIANT
811         of a type parameter.
812         (check_non_deducible_conversion): Split from type_unification_real.
813         (unify_one_argument): Split from type_unification_real...
814         (unify_pack_expansion): ...and here.  Drop call_args_p parm.
815         (type_unification_real, unify, more_specialized_fn): Adjust.
816
817         * class.c (fixed_type_or_null): Handle NSDMI.
818         * method.c (walk_field_subobs): Disable NSDMI noexcept checking
819         for now.
820
821 2011-09-30  Jason Merrill  <jason@redhat.com>
822
823         * cp-tree.h (TREE_NEGATED_INT): Remove.
824         * semantics.c (finish_unary_op_expr): Don't set it.
825
826 2011-09-30  Janis Johnson  <janisjo@codesourcery.com>
827
828         PR c++/44473
829         * mangle.c (write_type): Handle CV qualifiers for decimal classes.
830
831 2011-09-26   Andi Kleen <ak@linux.intel.com>
832
833         * repo.c (finish_repo): Use HOST_WIDE_INT_PRINT_HEX_PURE.
834
835 2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>
836
837         PR c++/45278
838         * typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
839         comparison of pointer with zero.
840
841 2011-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
842
843         PR c++/31489
844         * parser.c (cp_parser_elaborated_type_specifier): For RECORD_TYPE,
845         set CLASSTYPE_DECLARED_CLASS.
846
847 2011-09-27  Jakub Jelinek  <jakub@redhat.com>
848
849         * decl.c (duplicate_decls): If compatible stpcpy prototype
850         is seen, set implicit_built_in_decls[BUILT_IN_STPCPY].
851
852 2011-09-26  Jason Merrill  <jason@redhat.com>
853
854         PR c++/45012
855         * pt.c (tsubst_copy_and_build) [CONST_DECL]: Don't pull out
856         constant value if we're still in a template.
857
858         PR c++/46105
859         * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
860
861         PR c++/50508
862         * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
863         rather than ==.
864
865 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
866
867         PR c++/45487
868         * error.c (dump_template_bindings): Separate bindings with semicolons
869         instead of commas.
870
871 2011-09-26  Jason Merrill  <jason@redhat.com>
872
873         PR c++/50512
874         * call.c (compare_ics): Only consider rvaluedness_matches_p
875         if the target type is the same or it too differs in rvalueness.
876
877         PR c++/50523
878         * call.c (implicit_conversion): Mask out inappropriate LOOKUP
879         flags at the top of the function.
880
881         * pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
882
883 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
884
885         * pt.c (convert_nontype_argument): Handle NULLPTR_TYPE.
886
887 2011-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
888
889         PR c++/26747
890         * cp-gimplify.c (get_bc_label): Remove obsolete diagnostics.
891
892 2011-09-25  Jason Merrill  <jason@redhat.com>
893
894         * parser.c (inject_this_parameter): Split out from
895         cp_parser_late_return_type_opt.
896         (cp_parser_class_specifier_1): Use it for NSDMIs.
897         * tree.c (bot_replace): Replace NSDMI 'this' with real 'this'.
898
899 2011-09-24  Jason Merrill  <jason@redhat.com>
900
901         * except.c (expr_noexcept_p): Split out from finish_noexcept_expr.
902         * cp-tree.h: Declare it.
903         * method.c (walk_field_subobs): Use it.
904
905         * init.c (perform_member_init): Instantiate NSDMI here.
906         * pt.c (tsubst_decl) [FIELD_DECL]: Not here.
907
908         Handle deferred parsing of NSDMIs.
909         * parser.h (cp_unparsed_functions_entry): Add nsdmis field.
910         * parser.c (unparsed_nsdmis, cp_parser_save_nsdmi): New.
911         (cp_parser_late_parse_one_default_arg): Split out from
912         cp_parser_late_parsing_default_args.
913         (cp_parser_late_parsing_nsdmi): New.
914         (push_unparsed_function_queues): Set it.
915         (cp_parser_parameter_declaration): Save the '=' token.
916         (cp_parser_template_parameter): Likewise.
917         (cp_parser_default_argument): Call cp_parser_initializer
918         rather than cp_parser_initializer_clause.
919         (cp_parser_class_specifier_1): Parse unparsed_nsdmis.
920         (cp_parser_member_declaration): Handle nsdmis.
921         * decl2.c (grokfield): Handle DEFAULT_ARG for a function.
922
923         Implement C++11 non-static data member initializers.
924         * cp-tree.h (enum cpp_warn_str): Add CPP0X_NSDMI.
925         * error.c (maybe_warn_cpp0x): Handle it.
926         * call.c (convert_like_real) [ck_user]: Don't complain about
927         using an explicit constructor for direct-initialization.
928         * class.c (check_field_decl): Fix ancient typo.
929         (check_field_decls): NSDMIs make the default ctor non-trivial.
930         * decl.c (cp_finish_decl): Record NSDMI.
931         (grokdeclarator): Allow NSDMI.
932         * decl2.c (grokfield): Allow NSDMI.  Correct LOOKUP flags.
933         * init.c (perform_member_init): Use NSDMI.
934         * method.c (walk_field_subobs): Check for NSDMI.
935         * parser.c (cp_parser_member_declaration): Parse { } init.
936         * semantics.c (register_constexpr_fundef): Don't talk about
937         a return statement in a constexpr constructor.
938         (cxx_eval_call_expression): Check DECL_INITIAL instead of
939         DECL_SAVED_TREE.
940
941 2011-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
942
943         PR c++/44267
944         * class.c (build_base_path): Add a tsubst_flags_t parameter.
945         (convert_to_base): Adjust call.
946         * typeck.c (build_class_member_access_expr,
947         get_member_function_from_ptrfunc, build_static_cast_1): Likewise.
948         * init.c (dfs_initialize_vtbl_ptrs, emit_mem_initializers): Likewise.
949         * method.c (do_build_copy_constructor, do_build_copy_assign): Likewise.
950         * rtti.c (build_dynamic_cast_1): Likewise.
951         * typeck2.c (build_scoped_ref, build_m_component_ref): Likewise.
952         * call.c (build_over_call, build_special_member_call): Likewise.
953         * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
954         build_up_reference): Likewise.
955         * cp-tree.h (build_base_path): Adjust declaration.
956
957 2011-09-23  Jason Merrill  <jason@redhat.com>
958
959         Core 253 - allow const objects with no initializer or
960         user-provided default constructor if the defaulted constructor
961         initializes all the subobjects.
962         PR c++/20039
963         PR c++/42844
964         * class.c (default_init_uninitialized_part): New.
965         * cp-tree.h: Declare it.
966         * decl.c (check_for_uninitialized_const_var): Use it.
967         * init.c (perform_member_init): Likewise.
968         (build_new_1): Likewise.
969         * method.c (walk_field_subobs): Likewise.
970
971 2011-09-23  Paolo Carlini  <paolo.carlini@oracle.com>
972
973         PR c++/50258
974         * decl.c (check_static_variable_definition): Allow in-class
975         initialization of static data member of non-integral type in
976         permissive mode.
977
978 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
979
980         PR c++/50491
981         * semantics.c (potential_constant_expression_1): Handle USING_DECL.
982
983 2011-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
984
985         PR c++/50371
986         * pt.c (invalid_nontype_parm_type_p): Handle NULLPTR_TYPE.
987
988 2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
989             Paolo Carlini  <paolo.carlini@oracle.com>
990
991         PR c++/50344
992         * friend.c (make_friend_class): cv-qualification is ok in a
993         friend declaration.
994
995 2011-09-21  Paolo Carlini  <paolo.carlini@oracle.com>
996
997         PR c++/50454
998         * decl.c (grokdeclarator): Consistently handle both __int128
999         and unsigned __int128 with -pedantic; suppress diagnostic in
1000         system headers.
1001
1002 2011-09-20  Jason Merrill  <jason@redhat.com>
1003
1004         * cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
1005         (DECL_GENERATED_P): New.
1006         * class.c (finalize_literal_type_property): Use them.
1007         * semantics.c (is_instantiation_of_constexpr): Likewise.
1008         (register_constexpr_fundef): Likewise.
1009
1010         * call.c (convert_default_arg): Avoid redundant copy.
1011         * tree.c (bot_manip): Copy everything.
1012
1013 2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
1014
1015         * call.c (build_new_method_call_1): Use non-virtual lookup
1016         for final virtual functions.
1017
1018 2011-09-16  Jason Merrill  <jason@redhat.com>
1019
1020         PR c++/50424
1021         * call.c (set_flags_from_callee): Split out from build_call_a.
1022         * cp-tree.h: Declare it.
1023         * tree.c (bot_manip): Call it.
1024
1025 2011-09-15  Jason Merrill  <jason@redhat.com>
1026
1027         PR c++/50365
1028         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
1029         for clearing current_class_ptr, too.
1030
1031 2011-09-14   Diego Novillo  <dnovillo@google.com>
1032
1033         * name-lookup.c (lookup_arg_dependent): Use conditional
1034         timevars.
1035         * decl.c (xref_tag): Likewise.
1036
1037 2011-09-14  Paolo Carlini  <paolo.carlini@oracle.com>
1038
1039         PR c++/50391
1040         * pt.c (regenerate_decl_from_template): Don't pass an error_mark_node
1041         to build_exception_variant.
1042
1043 2011-09-13  Dodji Seketeli  <dodji@redhat.com>
1044
1045         PR c++/48320
1046         * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
1047         nodes.  Add a comment.
1048         (arg_from_parm_pack_p):  New static function, factorized out from
1049         tsubst_pack_expansion and extended to support non-type parameter
1050         packs represented with TEMPLATE_PARM_INDEX nodes.
1051         (tsubst_pack_expansion): Use arg_from_parm_pack_p.
1052
1053 2011-09-12  Jason Merrill  <jason@redhat.com>
1054
1055         * pt.c (type_unification_real): Fix handling of DEDUCE_CONV
1056         with no deducible template parameters.
1057         * call.c (rejection_reason_code): Add rr_template_conversion.
1058         (print_z_candidate): Handle it.
1059         (template_conversion_rejection): New.
1060         (build_user_type_conversion_1): Use it.
1061
1062         * call.c (merge_conversion_sequences): Set bad_p and user_conv_p
1063         on all of the second conversion sequence.
1064         (build_user_type_conversion_1): Set bad_p on the ck_user conv.
1065         (convert_like_real): Handle bad ck_ref_bind with user_conv_p in the
1066         first section.  Fix loop logic.
1067         (initialize_reference): Call convert_like for diagnostics when
1068         we have a (bad) conversion.
1069
1070         * call.c (convert_class_to_reference)
1071         (convert_class_to_reference_1): Remove.
1072         (reference_binding): Use build_user_type_conversion_1 instead.
1073
1074         * call.c (initialize_reference): Add flags parm.
1075         * decl.c (grok_reference_init): Likewise.
1076         (check_initializer): Pass it.
1077         * typeck.c (convert_for_initialization): Likewise.
1078         * cp-tree.h: Adjust.
1079
1080         * cp-tree.h (LOOKUP_NO_RVAL_BIND): New.
1081         * call.c (conditional_conversion): Use it.
1082         (reference_binding): Fix handling of xvalues.
1083
1084 2011-09-09  Jason Merrill  <jason@redhat.com>
1085
1086         * call.c (implicit_conversion): Check BRACE_ENCLOSED_INITIALIZER_P
1087         before forcing instantiation.
1088
1089 2011-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
1090
1091         PR c++/50324
1092         * typeck2.c (digest_init_r): Call complete_type_or_maybe_complain
1093         instead of complete_type_or_else.
1094
1095 2011-09-08  Dodji Seketeli  <dodji@redhat.com>
1096
1097         PR c++/33255 - Support -Wunused-local-typedefs warning
1098         * name-lookup.c (pushdecl_maybe_friend_1): Use the new
1099         record_locally_defined_typedef.
1100         * decl.c (finish_function): Use the new
1101         maybe_warn_unused_local_typedefs.
1102         (grokfield): Use the new record_locally_defined_typedef.
1103         * parser.c (lookup_name): Use the new maybe_record_typedef_use.
1104
1105 2011-09-07  Paolo Carlini  <paolo.carlini@oracle.com>
1106
1107         PR c++/50309
1108         * decl.c (grokdeclarator): Check u.function.exception_specification
1109         for error_mark_node.
1110
1111 2011-09-07  Jason Merrill  <jason@redhat.com>
1112
1113         PR c++/50298
1114         * parser.c (cp_parser_member_declaration): Don't require a constant
1115         rvalue here in C++0x.
1116
1117         * pt.c (type_unification_real): Correct complain arg for tsubsting
1118         default template args.
1119
1120         * pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
1121
1122 2011-09-06  Jason Merrill  <jason@redhat.com>
1123
1124         PR c++/50296
1125         * semantics.c (register_constexpr_fundef): Call is_valid_constexpr_fn.
1126         (cx_check_missing_mem_inits): Handle bases and empty trivial members.
1127         (validate_constexpr_fundecl): Remove.
1128         * decl.c (start_preparsed_function): Don't call it.
1129         * cp-tree.h: Don't declare it.
1130
1131 2011-09-04  Jason Merrill  <jason@redhat.com>
1132
1133         PR c++/49267
1134         * call.c (reference_binding): Don't set is_lvalue for an rvalue
1135         reference rfrom.
1136
1137         PR c++/49267
1138         PR c++/49458
1139         DR 1328
1140         * call.c (reference_binding): Set rvaluedness_matches_p properly
1141         for reference to function conversion ops.
1142         (compare_ics): Adjust.
1143
1144         * class.c (trivial_default_constructor_is_constexpr): Rename from
1145         synthesized_default_constructor_is_constexpr.
1146         (type_has_constexpr_default_constructor): Adjust.
1147         (add_implicitly_declared_members): Call it instead.
1148         (explain_non_literal_class): Explain about non-constexpr default ctor.
1149         * cp-tree.h: Adjust.
1150         * method.c (synthesized_method_walk): Adjust.
1151         * semantics.c (explain_invalid_constexpr_fn): Handle defaulted
1152         functions, too.
1153
1154         PR c++/50248
1155         Core 1358
1156         * init.c (perform_member_init): Don't diagnose missing inits here.
1157         (emit_mem_initializers): Or here.
1158         * method.c (process_subob_fn): Don't instantiate constexpr ctors.
1159         * semantics.c (cx_check_missing_mem_inits): New.
1160         (explain_invalid_constexpr_fn): Call it.
1161         (register_constexpr_fundef): Likewise.  Leave
1162         DECL_DECLARED_CONSTEXPR_P set when the body is unsuitable.
1163         (cxx_eval_call_expression): Adjust diagnostics.
1164         (cxx_eval_constant_expression): Catch use of 'this' in a constructor.
1165
1166 2011-08-30  Jason Merrill  <jason@redhat.com>
1167
1168         PR c++/50084
1169         * cp-tree.h (cp_decl_specifier_seq): Rename user_defined_type_p
1170         to type_definition_p.
1171         * parser.c (cp_parser_set_decl_spec_type): Likewise.
1172         * decl.c (grokdeclarator): Check it.
1173
1174         PR c++/50089
1175         * semantics.c (finish_id_expression): Use
1176         current_nonlambda_class_type for qualified-ids.
1177
1178         PR c++/50114
1179         * decl.c (poplevel): Disable for scope compatibility hack
1180         in C++11 mode.
1181
1182         PR c++/50220
1183         * semantics.c (add_capture): Call complete_type for copy.
1184
1185         PR c++/50234
1186         * semantics.c (cxx_eval_component_reference): Handle
1187         value-initialization for omitted initializers.
1188
1189 2011-08-29  Jason Merrill  <jason@redhat.com>
1190
1191         PR c++/50224
1192         * semantics.c (finish_id_expression): Mark captured variables used.
1193
1194 2011-08-29  Jakub Jelinek  <jakub@redhat.com>
1195             Jason Merrill  <jason@redhat.com>
1196
1197         PR c++/50207
1198         * class.c (finish_struct_1): Complain if the first field is
1199         artificial.
1200
1201 2011-08-29  Jason Merrill  <jason@redhat.com>
1202
1203         PR c++/50209
1204         Core DR 994
1205         * parser.c (cp_parser_default_argument): Use
1206         cp_parser_initializer_clause.
1207         (cp_parser_late_parsing_default_args): Likewise.
1208
1209 2011-08-26  Jason Merrill  <jason@redhat.com>
1210
1211         Core DR 342
1212         PR c++/48582
1213         * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value
1214         is valid in C++11.
1215         (convert_nontype_argument): Likewise.  Implicitly convert nullptr
1216         and do constant folding.
1217         * mangle.c (write_template_arg_literal): Mangle null member
1218         pointer values as 0.
1219         * call.c (null_member_pointer_value_p): New.
1220         * cp-tree.h: Declare it.
1221
1222 2011-08-25  Jason Merrill  <jason@redhat.com>
1223
1224         * call.c (convert_like_real): Remove redundant complain checks.
1225
1226         PR c++/50157
1227         * call.c (convert_like_real): Exit early if bad and !tf_error.
1228
1229 2011-08-23  Jason Merrill  <jason@redhat.com>
1230
1231         * typeck2.c (build_functional_cast): Don't try to avoid calling
1232         build_value_init.
1233         * pt.c (instantiate_class_template_1): Don't copy TYPE_HAS_* flags.
1234
1235 2011-08-23  Jason Merrill  <jason@redhat.com>
1236
1237         PR c++/49045
1238         Core 1321
1239         * tree.c (dependent_name): New.
1240         (cp_tree_equal): Two calls with the same dependent name are
1241         equivalent even if the overload sets are different.
1242
1243 2011-08-23  Jason Merrill  <jason@redhat.com>
1244
1245         * tree.c (build_target_expr): Set TREE_CONSTANT on
1246         literal TARGET_EXPR if the value is constant.
1247         * typeck2.c (build_functional_cast): Don't set it here.
1248
1249 2011-08-23  Jason Merrill  <jason@redhat.com>
1250
1251         Core 903 (partial)
1252         * call.c (null_ptr_cst_p): Only 0 qualifies in C++11.
1253
1254 2011-08-23  Jason Merrill  <jason@redhat.com>
1255
1256         Core 975
1257         * decl.c (cxx_init_decl_processing): Initialize
1258         dependent_lambda_return_type_node.
1259         * cp-tree.h (cp_tree_index): Add CPTI_DEPENDENT_LAMBDA_RETURN_TYPE.
1260         (dependent_lambda_return_type_node): Define.
1261         (DECLTYPE_FOR_LAMBDA_RETURN): Remove.
1262         * semantics.c (lambda_return_type): Handle overloaded function.
1263         Use dependent_lambda_return_type_node instead of
1264         DECLTYPE_FOR_LAMBDA_RETURN.
1265         (apply_lambda_return_type): Don't check dependent_type_p.
1266         * pt.c (tsubst_copy_and_build): Handle lambda return type deduction.
1267         (instantiate_class_template_1): Likewise.
1268         (tsubst): Don't use DECLTYPE_FOR_LAMBDA_RETURN.
1269         * mangle.c (write_type): Likewise.
1270         * typeck.c (structural_comptypes): Likewise.
1271         (check_return_expr): Handle dependent_lambda_return_type_node.
1272
1273 2011-08-23  Jason Merrill  <jason@redhat.com>
1274
1275         PR c++/50024
1276         * semantics.c (maybe_constant_value): Don't try to fold { }.
1277         * pt.c (build_non_dependent_expr): Don't wrap { }.
1278         * init.c (build_value_init): Allow scalar value-init in templates.
1279
1280 2011-08-23  Jason Merrill  <jason@redhat.com>
1281
1282         * semantics.c (potential_constant_expression_1): Allow 'this'.
1283
1284 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
1285
1286         PR c++/50158
1287         * typeck.c (cp_build_modify_expr): Call mark_rvalue_use on rhs
1288         if it has side-effects and needs to be preevaluated.
1289
1290 2011-08-23  Siddhesh Poyarekar  <siddhesh.poyarekar@gmail.com>
1291
1292         PR c++/50055
1293         * except.c (begin_eh_spec_block): Build EH_SPEC block on the
1294         same line as the function.
1295
1296 2011-08-23  Jakub Jelinek  <jakub@redhat.com>
1297
1298         PR c++/46862
1299         * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
1300         which doesn't have any fields, clear it and diagnose.
1301
1302 2011-08-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1303             Marc Glisse  <marc.glisse@normalesup.org>
1304
1305         PR libstdc++-v3/1773
1306         * mangle.c (decl_mangling_context): Call
1307         targetm.cxx.decl_mangling_context.
1308         (write_unscoped_name): Use decl_mangling_context.
1309
1310 2011-08-18  Dodji Seketeli  <dodji@redhat.com>
1311
1312         PR c++/45625
1313         * pt.c (parameter_of_template_p): Handle comparison with DECLs of
1314         template parameters as created by process_template_parm.
1315
1316 2011-08-16  Jason Merrill  <jason@redhat.com>
1317
1318         PR c++/50086
1319         * pt.c (unify_pack_expansion): Correct overloaded unification
1320         logic.
1321
1322         * pt.c (instantiate_class_template_1): If DECL_PRESERVE_P is set
1323         on a member function or static data member, call mark_used.
1324
1325         PR c++/50054
1326         * typeck2.c (cxx_incomplete_type_diagnostic): Handle
1327         init_list_type_node.
1328
1329 2011-08-13  Jason Merrill  <jason@redhat.com>
1330
1331         PR c++/50075
1332         * name-lookup.c (local_bindings_p): New.
1333         * name-lookup.h: Declare it.
1334         * lex.c (unqualified_name_lookup_error): Use it.
1335
1336         PR c++/50059
1337         * error.c (dump_expr): Handle MODIFY_EXPR properly.
1338
1339         * decl.c (grok_reference_init): Handle constexpr here.
1340         * call.c (initialize_reference): Not here.
1341
1342 2011-08-12  David Li  <davidxl@google.com>
1343
1344         * class.c (update_vtable_entry_for_fn): Set
1345         LOST_PRIMARY bit properly.
1346
1347 2011-08-12  Jason Merrill  <jason@redhat.com>
1348
1349         PR c++/50034
1350         * call.c (convert_arg_to_ellipsis): force_rvalue only in
1351         potentially evaluated context.
1352
1353 2011-08-12  Richard Guenther  <rguenther@suse.de>
1354
1355         * call.c (build_over_call): Instead of memcpy use an
1356         assignment of two MEM_REFs.
1357
1358 2011-08-11  Romain Geissler  <romain.geissler@gmail.com>
1359             Brian Hackett  <bhackett1024@gmail.com>
1360
1361         * decl.c (cp_finish_decl): Invoke callbacks on finish_decl event.
1362
1363 2011-08-10  Richard Guenther  <rguenther@suse.de>
1364
1365         * call.c (build_over_call): Call memcpy unconditionally.
1366
1367 2011-08-08  Jason Merrill  <jason@redhat.com>
1368
1369         PR c++/50020
1370         * semantics.c (finish_call_expr): Don't look at 'this' if we
1371         had an explicit object argument.
1372
1373         PR c++/50011
1374         * typeck2.c (check_narrowing): Fix integer logic.
1375
1376 2011-08-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1377
1378         * Make-lang.in (g++$(exeext)): Add $(EXTRA_GCC_LIBS).
1379
1380 2011-08-05  Jason Merrill  <jason@redhat.com>
1381
1382         PR c++/48993
1383         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
1384         on 'this' in a constructor.
1385
1386         PR c++/49921
1387         * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
1388
1389         PR c++/49669
1390         * init.c (perform_member_init): Handle invalid array initializer.
1391
1392         PR c++/49988
1393         * semantics.c (cxx_eval_array_reference): Handle failure to
1394         reduce the array operand to something we can work with.
1395
1396 2011-08-05  Gabriel Charette  <gchare@google.com>
1397
1398         * decl.c (finish_function): Remove unecessary line 0 hack.
1399
1400 2011-08-05  Jason Merrill  <jason@redhat.com>
1401
1402         PR c++/47453
1403         * typeck.c (build_x_compound_expr_from_list): Also complain
1404         about ({...}).
1405
1406         PR c++/49812
1407         * typeck.c (cp_build_unary_op) [POSTINCREMENT_EXPR]: Strip cv-quals.
1408
1409         PR c++/49983
1410         * parser.c (cp_parser_range_for): Only do auto deduction in
1411         template if the range is non-dependent.
1412
1413         * init.c (perform_member_init): Always build_aggr_init
1414         for a class member with an explicit mem-initializer.
1415
1416         * pt.c (unify) [TEMPLATE_TYPE_PARM]: Allow VLA for C++0x 'auto'.
1417
1418 2011-08-04  Jakub Jelinek  <jakub@redhat.com>
1419
1420         PR middle-end/49905
1421         * decl.c (cxx_init_decl_processing): Add alloc_size (1) attribute
1422         for operator new and operator new [].  Call init_attributes.
1423
1424 2011-08-02  Jason Merrill  <jason@redhat.com>
1425
1426         PR c++/43886
1427         * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
1428
1429         PR c++/49577
1430         * typeck2.c (check_narrowing): Check unsigned mismatch.
1431         * semantics.c (finish_compound_literal): check_narrowing.
1432
1433         PR c++/49593
1434         * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
1435
1436         PR c++/49803
1437         * init.c (sort_mem_initializers): Initialize uses_unions_p here.
1438         (build_field_list): Not here.
1439
1440         PR c++/49834
1441         * parser.c (build_range_temp): Split out from...
1442         (cp_convert_range_for): ...here.
1443         (do_range_for_auto_deduction): New.
1444         (cp_parser_range_for): Use it.
1445
1446 2011-08-02  Jakub Jelinek  <jakub@redhat.com>
1447
1448         * cp-tree.h (finish_omp_atomic): Adjust prototype.
1449         (cxx_omp_const_qual_no_mutable): New prototype.
1450         (finish_omp_taskyield): New prototype.
1451         * parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
1452         parsing OpenMP 3.1 atomics.  Adjust finish_omp_atomic caller.
1453         (cp_parser_omp_clause_name): Handle final and mergeable clauses.
1454         (cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
1455         functions.
1456         (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
1457         and PRAGMA_OMP_CLAUSE_MERGEABLE.
1458         (OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
1459         (cp_parser_omp_taskyield): New function.
1460         (cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
1461         (cp_parser_omp_clause_reduction): Handle min and max.
1462         * pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
1463         (tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
1464         OMP_CLAUSE_MERGEABLE.
1465         * semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
1466         arguments.  Handle OpenMP 3.1 atomics.  Adjust c_finish_omp_atomic
1467         caller.
1468         (finish_omp_clauses): Don't complain about const qualified
1469         predetermined vars and static data members in firstprivate clause.
1470         Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
1471         and MAX_EXPR.
1472         (finish_omp_taskyield): New function.
1473         * cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
1474         (cxx_omp_predetermined_sharing): Use it.
1475
1476 2011-08-02  Jason Merrill  <jason@redhat.com>
1477
1478         * call.c (build_call_a): Also check at_function_scope_p.
1479
1480 2011-08-01  Jason Merrill  <jason@redhat.com>
1481
1482         PR c++/49932
1483         * mangle.c (write_prefix): Handle decltype.
1484
1485         PR c++/49924
1486         * semantics.c (cxx_eval_vec_init_1): Fix logic.
1487
1488         PR c++/49813
1489         * semantics.c (potential_constant_expression_1): Allow any builtin.
1490         (morally_constexpr_builtin_function_p): Remove.
1491
1492 2011-07-29  Jason Merrill  <jason@redhat.com>
1493
1494         PR c++/49867
1495         * parser.c (cp_parser_lambda_expression): Also clear in_statement
1496         and in_switch_statement_p.
1497         (cp_parser_class_specifier): Likewise.
1498
1499 2011-07-28  Jason Merrill  <jason@redhat.com>
1500
1501         PR c++/49808
1502         * pt.c (tsubst) [TEMPLATE_PARM_INDEX]: Call convert_from_reference.
1503         (convert_nontype_argument, tsubst_template_arg): Handle its output.
1504
1505 2011-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
1506
1507         PR c++/49813
1508         * semantics.c (potential_constant_expression_1):  Handle FMA_EXPR.
1509
1510 2011-07-27  Jeffrey Yasskin  <jyasskin@google.com>
1511
1512         * pt.c (build_template_decl): Copy the function_decl's
1513         source location to the new template_decl.
1514
1515 2011-07-26  Paolo Carlini  <paolo.carlini@oracle.com>
1516
1517         PR c++/49776
1518         * typeck.c (cp_build_modify_expr): Check digest_init return value
1519         for error_mark_node.
1520
1521 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
1522
1523         PR bootstrap/49845
1524         * parser.c (cp_parser_perform_range_for_lookup): Always assign *being
1525         and *end before returning.
1526
1527 2011-07-25  Paolo Carlini  <paolo.carlini@oracle.com>
1528
1529         PR c++/49838
1530         * parser.c (cp_parser_perform_range_for_lookup): Early return if
1531         error_operand_p (range).
1532
1533 2011-07-23  Jason Merrill  <jason@redhat.com>
1534
1535         PR c++/49823
1536         * parser.c (cp_parser_qualifying_entity): Handle templates.
1537
1538 2011-07-22  Jason Merrill  <jason@redhat.com>
1539
1540         PR c++/49793
1541         * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
1542         Make conditional on -Wnarrowing.
1543
1544 2011-07-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1545
1546         Warn about the use of final/override in non-c++0x mode, and
1547         add __final for non-c++0x mode.
1548         * cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
1549         * error.c (maybe_warn_cpp0x): Adjust.
1550         * parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
1551         '__final' as a non-c++0x alternative for 'final'.
1552
1553 2011-07-22  Jason Merrill  <jason@redhat.com>
1554             Mark Glisse  <marc.glisse@normalesup.org>
1555
1556         PR c++/30112
1557         * decl.c (cp_finish_decl): Apply pragma redefine_extname in
1558         other namespaces as well.
1559         * name-lookup.c (c_linkage_bindings): Define.
1560         (lookup_extern_c_fun_in_all_ns): Rename from
1561         lookup_extern_c_fun_binding_in_all_ns.  Return tree.
1562         (pushdecl_maybe_friend_1): Adjust.  Copy DECL_ASSEMBLER_NAME.
1563
1564 2011-07-20  Jason Merrill  <jason@redhat.com>
1565
1566         * parser.c (cp_parser_initializer_list): Handle C99 .id= and [N]=
1567         designated initializer syntax.
1568         * decl.c (check_array_designated_initializer): Add index parm.
1569         (maybe_deduce_size_from_array_init): Pass it.
1570         (reshape_init_array_1): Likewise.
1571
1572         PR c++/6709 (DR 743)
1573         PR c++/42603 (DR 950)
1574         * parser.c (token_is_decltype, cp_lexer_next_token_is_decltype): New.
1575         (cp_parser_nested_name_specifier_opt): Allow decltype.
1576         (cp_parser_qualifying_entity): Likewise.
1577         (cp_parser_decltype): Replace source tokens with CPP_DECLTYPE.
1578         (cp_parser_simple_type_specifier): Handle decltype as scope.
1579         (cp_parser_base_specifier): Allow decltype.
1580         (cp_parser_base_clause): Don't crash on null base.
1581         * parser.h (CPP_KEYWORD, CPP_TEMPLATE_ID): Move to c-common.h.
1582         (CPP_NESTED_NAME_SPECIFIER, N_CP_TTYPES): Likewise.
1583
1584 2011-07-19  Jason Merrill  <jason@redhat.com>
1585
1586         PR c++/49785
1587         * pt.c (coerce_template_parms): Handle non-pack after pack.
1588
1589 2011-07-19  Richard Guenther  <rguenther@suse.de>
1590
1591         * call.c (build_special_member_call): Use fold_build_pointer_plus.
1592         * class.c (build_base_path): Likewise.
1593         (convert_to_base_statically): Likewise.
1594         (dfs_accumulate_vtbl_inits): Likewise.
1595         * cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
1596         * except.c (expand_start_catch_block): Likewise.
1597         * init.c (expand_virtual_init): Likewise.
1598         (build_new_1): Likewise.
1599         (build_vec_delete_1): Likewise.
1600         (build_vec_delete): Likewise.
1601         * rtti.c (build_headof): Likewise.
1602         (tinfo_base_init): Likewise.
1603         * typeck.c (get_member_function_from_ptrfunc): Likewise.
1604         (cp_build_addr_expr_1): Likewise.
1605         * typeck2.c (build_m_component_ref): Likewise.
1606
1607 2011-07-18  Martin Jambor  <mjambor@suse.cz>
1608
1609         * parser.c (cp_parser_parameter_declaration_list): Initialize
1610         parenthesized_p.
1611
1612 2011-07-16  Jason Merrill  <jason@redhat.com>
1613
1614         * pt.c (tinst_level_tick, last_template_error_tick): Replace with
1615         last_error_tinst_level.
1616         (push_tinst_level, pop_tinst_level): Adjust.
1617         (problematic_instantiation_changed): Adjust.
1618         (record_last_problematic_instantiation): Adjust.
1619         * error.c (cp_print_error_function): Don't print
1620         current_function_decl if we're in a template instantiation context.
1621         (print_instantiation_full_context): Always print first line.
1622
1623 2011-07-16  Nathan Froyd  <froydnj@codesourcery.com>
1624             Jason Merrill  <jason@redhat.com>
1625
1626         PR c++/45329
1627         PR c++/48934
1628         * cp-tree.h (fn_type_unification): Add `bool' parameter.
1629         * pt.c (enum template_base_result): Define.
1630         (unify_success, unify_unknown): Define.
1631         (unify_parameter_deduction_failure): Define.
1632         (unify_invalid, unify_cv_qual_mismatch, unify_type_mismatch): Define.
1633         (unify_parameter_pack_mismatch): Define.
1634         (unify_parameter_pack_inconsistent): Define.
1635         (unify_ptrmem_cst_mismatch, unify_vla_arg): Define.
1636         (unify_expression_unequal, unify_inconsistency): Define.
1637         (unify_method_type_error, unify_arity): Likewise.
1638         (unify_too_many_parameters, unify_too_few_parameters): Define.
1639         (unify_arg_conversion, unify_no_common_base): Define.
1640         (unify_illformed_ptrmem_cst_expr): Define.
1641         (unify_substitution_failure): Define.
1642         (unify_inconsistent_template_template_parameters): Define.
1643         (unify_template_deduction_failure): Define.
1644         (unify_template_argument_mismatch): Define.
1645         (unify_overload_resolution_failure): Define.
1646         (comp_template_args_with_info): New function, split out from...
1647         (comp_template_args): ...here.  Call it.
1648         (deduction_tsubst_fntype): Add `complain' parameter'.  Pass it
1649         to tsubst.
1650         (unify): Add `explain_p' parameter.  Pass to all relevant calls.
1651         Call above status functions when appropriate.
1652         (resolve_overloaded_unification, try_one_overload): Likewise.
1653         (type_unification, type_unification_real): Likewise.
1654         (unify_pack_expansion): Likewise.
1655         (get_template_base, try_class_unification): Likewise.
1656         (get_bindings, more_specialized_fn): Pass false to unification
1657         calls.
1658         (get_class_bindings, do_auto_deduction): Likewise.
1659         (convert_nontype_argument): Likewise.
1660         (fn_type_unification): Likewise.  Pass tf_warning_or_error if
1661         explain_p.
1662         (get_template_base): Add `explain_p' parameter and pass it to
1663         try_class_unification.  Return an enum template_base_result.
1664         * class.c (resolve_address_of_overloaded_function): Pass false to
1665         fn_type_unification.
1666         * call.c (enum rejection_reason_code): Add new codes.
1667         (struct rejection_reason): Add template_unification field.
1668         Add template_instantiation field.
1669         (template_unification_rejection): Define.
1670         (template_unification_error_rejection): Define.
1671         (template_instantiation_rejection): Define.
1672         (invalid_copy_with_fn_template_rejection): Define.
1673         (add_template_candidate): Pass false to unify.
1674         Provide more rejection reasons when possible.
1675         (print_template_unification_rejection): Define.
1676         (print_arity_rejection): Define, split out from...
1677         (print_z_candidate): ...here.  Add cases for new rejection
1678         reasons.
1679
1680 2011-07-15  Jason Merrill  <jason@redhat.com>
1681
1682         * Make-lang.in (check-g++-strict-gc): New.
1683         (cp/except.o): Depend on gt-cp-except.h
1684         * except.c: Include gt-cp-except.h.
1685         * config-lang.in (gtfiles): Add cp/except.c.
1686         * decl2.c (mark_used): Adjust constexpr condition, set
1687         function_depth around template instantiation.
1688         * parser.c (cp_parser_lambda_body): Set function_depth.
1689         * semantics.c (maybe_add_lambda_conv_op): Likewise.
1690
1691         PR testsuite/49741
1692         * Make-lang.in (check-c++0x): Use --extra_opts instead of--tool_opts.
1693
1694 2011-07-13  Jason Merrill  <jason@redhat.com>
1695
1696         * Make-lang.in (check-c++0x): New.
1697
1698 2011-07-13  Richard Sandiford  <richard.sandiford@linaro.org>
1699
1700         * typeck2.c (split_nonconstant_init_1): Pass the initializer directly,
1701         rather than a pointer to it.  Return true if the whole of the value
1702         was initialized by the generated statements.  Use
1703         complete_ctor_at_level_p instead of count_type_elements.
1704
1705 2011-07-12   Diego Novillo  <dnovillo@google.com>
1706
1707         * name-lookup.h (cp_binding_level): Rename from cxx_scope.
1708         Update all users.
1709         (struct cp_binding_level): Fix indentation.
1710
1711 2011-07-11  Jason Merrill  <jason@redhat.com>
1712
1713         PR c++/49672
1714         * pt.c (extract_fnparm_pack): Split out from...
1715         (make_fnparm_pack): ...here.
1716         (instantiate_decl): Handle non-pack parms after a pack.
1717         * semantics.c (maybe_add_lambda_conv_op): Don't in a template.
1718
1719         * decl2.c (decl_constant_var_p): Use decl_maybe_constant_var_p.
1720
1721         PR c++/44609
1722         * cp-tree.h (struct tinst_level): Add errors field.
1723         * pt.c (neglectable_inst_p, limit_bad_template_recurson): New.
1724         (push_tinst_level): Don't start another decl in that case.
1725         (reopen_tinst_level): Adjust errors field.
1726         * decl2.c (cp_write_global_declarations): Don't complain about
1727         undefined inline if its template was defined.
1728         * mangle.c (mangle_decl_string): Handle failure from push_tinst_level.
1729
1730 2011-07-10  Jason Merrill  <jason@redhat.com>
1731
1732         PR c++/49691
1733         * parser.c (cp_parser_late_return_type_opt): Check quals parameter
1734         rather than current_class_type to determine whether to set 'this'.
1735         (cp_parser_direct_declarator): Pass -1 to quals if member_p is false.
1736         (cp_parser_init_declarator): Pass down member_p.
1737
1738 2011-07-09  Jason Merrill  <jason@redhat.com>
1739
1740         * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
1741
1742 2011-07-08  Jason Merrill  <jason@redhat.com>
1743
1744         PR c++/45437
1745         * typeck.c (cp_build_modify_expr): Preevaluate RHS.
1746
1747         * method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
1748         * optimize.c (maybe_clone_body): Likewise.
1749         * semantics.c (maybe_add_lambda_conv_op): Likewise.
1750
1751         PR c++/45603
1752         * decl.c (expand_static_init): Don't get confused by user
1753         declaration of __cxa_guard_acquire.
1754
1755         * typeck.c (cp_apply_type_quals_to_decl): Don't check
1756         COMPLETE_TYPE_P either.
1757
1758         PR c++/49673
1759         * typeck.c (cp_apply_type_quals_to_decl): Don't check
1760         TYPE_NEEDS_CONSTRUCTING.
1761
1762 2011-07-07  Jason Merrill  <jason@redhat.com>
1763
1764         PR c++/49663
1765         * pt.c (push_deduction_access_scope): Preserve
1766         processing_template_decl across push_to_top_level.
1767         And revert:
1768         * class.c (pushclass): Accept NULL argument.
1769         (popclass): Deal with popping null class.
1770         * pt.c (push_access_scope, pop_access_scope): Use them rather than
1771         push_to_top_level/pop_from_top_level.
1772         * name-lookup.c (lookup_name_real_1): Check current_class_type.
1773
1774 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
1775
1776         PR c/49644
1777         * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
1778         one non-complex and one complex argument, call save_expr on both
1779         operands.
1780
1781 2011-07-06  Jason Merrill  <jason@redhat.com>
1782
1783         PR c++/49353
1784         * semantics.c (expand_or_defer_fn_1): Clear DECL_EXTERNAL
1785         on kept inlines.
1786
1787         PR c++/49568
1788         * method.c (make_thunk, use_thunk): Copy DECL_COMDAT.
1789
1790 2011-07-05  Jason Merrill  <jason@redhat.com>
1791
1792         PR c++/48157
1793         * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
1794         partial instantiation.
1795
1796         PR c++/49598
1797         * semantics.c (finish_id_expression): convert_from_reference.
1798
1799 2011-07-05  Richard Guenther  <rguenther@suse.de>
1800
1801         * decl.c (cxx_init_decl_processing): Defer building common
1802         tree nodes to c_common_nodes_and_builtins.
1803
1804 2011-07-04  Jason Merrill  <jason@redhat.com>
1805
1806         DR 1207
1807         PR c++/49589
1808         * mangle.c (write_expression): Handle 'this'.
1809         * parser.c (cp_parser_postfix_dot_deref_expression): Allow
1810         incomplete *this.
1811         * semantics.c (potential_constant_expression_1): Check that
1812         DECL_CONTEXT is set on 'this'.
1813
1814         * error.c (dump_template_bindings): Don't print typenames
1815         for a partial instantiation.
1816         (dump_function_decl): If we aren't printing function arguments,
1817         print template arguments as <args> rather than [with ...].
1818         (dump_expr): Don't print return type or template header.
1819         [BASELINK]: Use BASELINK_FUNCTIONS rather than get_first_fn.
1820         * pt.c (dependent_template_arg_p): Handle null arg.
1821
1822         * error.c (type_to_string): Avoid redundant akas.
1823
1824 2011-07-01  Jonathan Wakely  <jwakely.gcc@gmail.com>
1825
1826         PR c++/49605
1827         * init.c (build_delete): Only warn for sfk_deleting_destructor.
1828
1829 2011-07-01  Jakub Jelinek  <jakub@redhat.com>
1830
1831         * Make-lang.in (cp/decl.o): Depend on pointer-set.h.
1832         (cp/class.o): Likewise.
1833         (cp/error.o): Likewise.
1834         (cp/name-lookup.o): Likewise.
1835         (cp/decl2.o): Likewise.  Don't depend on $(POINTER_SET_H).
1836
1837 2011-07-01  Jason Merrill  <jason@redhat.com>
1838
1839         PR c++/48261
1840         * pt.c (lookup_template_function): Handle non-function.
1841
1842         PR c++/48593
1843         * pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
1844         * tree.c (build_qualified_name): Set PTRMEM_OK_P.
1845         * semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
1846         SCOPE_REF, too.
1847         * cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
1848         (QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.
1849
1850         PR c++/48883
1851         PR c++/49609
1852         * pt.c (resolve_nondeduced_context): Call mark_used.
1853
1854         PR c++/49085
1855         * semantics.c (finish_offsetof): Complain about incomplete type.
1856
1857 2011-06-30  Jason Merrill  <jason@redhat.com>
1858
1859         PR c++/49387
1860         * rtti.c (get_tinfo_decl): Call complete_type.
1861
1862         PR c++/49569
1863         * method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
1864         DECL_PARM_INDEX on rhs parm.
1865
1866         * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
1867
1868         PR c++/49355
1869         * tree.c (stabilize_init): Handle aggregate initialization.
1870
1871         PR c++/48481
1872         * name-lookup.c (struct arg_lookup): Add fn_set.
1873         (add_function): Check it.
1874         (lookup_arg_dependent_1): Initialize it.
1875
1876 2011-06-29  Jason Merrill  <jason@redhat.com>
1877
1878         PR c++/49216
1879         * init.c (build_new_1): Pass {} down to build_vec_init.
1880         (build_vec_init): Handle it.
1881
1882         DR 1207
1883         PR c++/49003
1884         * cp-tree.h (struct saved_scope): Add x_current_class_ptr,
1885         x_current_class_ref.
1886         (current_class_ptr, current_class_ref): Use them.
1887         * decl.c (build_this_parm): Handle getting the class type.
1888         * parser.c (cp_parser_late_return_type_opt): Set up 'this'
1889         for use within the trailing return type.
1890
1891         * pt.c (tsubst_decl) [VAR_DECL]: In unevaluated operand,
1892         don't tsubst DECL_INITIAL unless our type use auto.
1893
1894         PR c++/49520
1895         * semantics.c (constexpr_fn_retval): Handle CLEANUP_POINT_EXPR here.
1896         (massage_constexpr_body): Not here.
1897
1898         PR c++/49554
1899         * semantics.c (lambda_proxy_type): New.
1900         (build_capture_proxy): Use it.
1901         * cp-tree.h (DECLTYPE_FOR_LAMBDA_PROXY): New.
1902         * pt.c (tsubst) [DECLTYPE_TYPE]: Use them.
1903
1904         PR c++/45923
1905         * class.c (explain_non_literal_class): New.
1906         (finalize_literal_type_property): Call it.
1907         * cp-tree.h: Declare it.
1908         * semantics.c (ensure_literal_type_for_constexpr_object): Call it.
1909         (is_valid_constexpr_fn): Likewise.
1910         (massage_constexpr_body): Split out from...
1911         (register_constexpr_fundef): ...here.
1912         (is_instantiation_of_constexpr): New.
1913         (expand_or_defer_fn_1): Leave DECL_SAVED_TREE alone in that case.
1914         (explain_invalid_constexpr_fn): New.
1915         (cxx_eval_call_expression): Call it.
1916         (potential_constant_expression_1): Likewise.  Avoid redundant errors.
1917         * method.c (process_subob_fn): Diagnose non-constexpr.
1918         (walk_field_subobs): Likewise.
1919         (synthesized_method_walk): Don't shortcut if we want diagnostics.
1920         (explain_implicit_non_constexpr): New.
1921         (defaulted_late_check): Use it.
1922         * call.c (build_cxx_call): Remember location.
1923
1924         * method.c (maybe_explain_implicit_delete): Use pointer_set
1925         instead of htab.
1926
1927         * class.c (finalize_literal_type_property): Update conditions.
1928         * method.c (defaulted_late_check): Set TYPE_HAS_CONSTEXPR_CTOR.
1929
1930         * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
1931         * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
1932         * semantics.c (cxx_eval_vec_init_1): Correct type.
1933
1934         * init.c (build_value_init): Decide whether or not to zero-initialize
1935         based on user-providedness of default ctor, not any ctor.
1936         (build_value_init_noctor): Adjust assert.
1937
1938         DR 990
1939         * call.c (convert_like_real) [ck_user]: Handle value-initialization.
1940         (build_new_method_call_1): Likewise.
1941         * init.c (expand_default_init): Handle direct list-initialization
1942         of aggregates.
1943
1944 2011-06-27  Jakub Jelinek  <jakub@redhat.com>
1945
1946         * cp-tree.h (union lang_tree_node): Use it in chain_next expression.
1947
1948 2011-06-26  Jason Merrill  <jason@redhat.com>
1949
1950         PR c++/49528
1951         * semantics.c (potential_constant_expression_1): Check
1952         for non-literality rather than cleanup.
1953         (cxx_eval_constant_expression): Likewise.
1954
1955         PR c++/49528
1956         * semantics.c (potential_constant_expression_1): A TARGET_EXPR
1957         with a cleanup isn't constant.
1958         (cxx_eval_constant_expression): Likewise.
1959         * init.c (expand_default_init): Use maybe_constant_init.
1960
1961 2011-06-24  Jakub Jelinek  <jakub@redhat.com>
1962
1963         PR c++/46400
1964         * cp-tree.h (union lang_tree_node): Use TYPE_NEXT_VARIANT
1965         instead of TYPE_CHAIN for chain_next for types.
1966
1967 2011-06-23  Gabriel Charette  <gchare@google.com>
1968
1969         * name-lookup.h (cp_binding_level): Removed unused
1970         member names_size. Update all users.
1971
1972 2011-06-23  Jason Merrill  <jason@redhat.com>
1973
1974         * typeck2.c (build_functional_cast): Strip cv-quals for value init.
1975         * init.c (build_zero_init_1): Not here.
1976
1977         PR c++/35255
1978         * pt.c (resolve_overloaded_unification): Fix DR 115 handling.
1979
1980 2011-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
1981
1982         PR c++/44625
1983         * decl2.c (build_anon_union_vars): Early return error_mark_node
1984         for a nested anonymous struct.
1985
1986 2011-06-23  Jason Merrill  <jason@redhat.com>
1987
1988         PR c++/49507
1989         * decl2.c (mark_used): Don't call synthesize_method for
1990         functions defaulted outside the class.
1991
1992         * optimize.c (maybe_clone_body): Set linkage flags before
1993         cgraph_same_body_alias.
1994
1995         PR c++/49440
1996         * class.c (set_linkage_according_to_type): Hand off to
1997         determine_visibility.
1998
1999         PR c++/49395
2000         * init.c (build_zero_init_1): Strip cv-quals from scalar types.
2001
2002         PR c++/36435
2003         * pt.c (most_specialized_instantiation): Do check return types.
2004
2005 2011-06-22  Jason Merrill  <jason@redhat.com>
2006
2007         PR c++/49260
2008         * call.c (build_call_a): Set cp_function_chain->can_throw here.
2009         (build_cxx_call): Not here.
2010
2011 2011-06-21  Jason Merrill  <jason@redhat.com>
2012
2013         PR c++/49172
2014         * decl.c (cp_finish_decl): Adjust init_const_expr_p for refs.
2015         (grokdeclarator): constexpr doesn't apply const for refs.
2016         * parser.c (cp_parser_initializer_clause): Don't call
2017         maybe_constant_value here.
2018         * call.c (initialize_reference): Handle constexpr.
2019
2020         PR c++/49482
2021         * semantics.c (maybe_add_lambda_conv_op): Call mark_exp_read for
2022         static fn parameters.
2023
2024         * call.c (add_builtin_candidates): Use cv_unqualified rather than
2025         TYPE_MAIN_VARIANT.
2026         * pt.c (tsubst_arg_types): Likewise.
2027         * except.c (build_throw): Use cv_unqualified.
2028
2029         PR c++/49418
2030         * call.c (cxx_type_promotes_to): Don't strip cv-quals.
2031         * semantics.c (lambda_return_type): Strip them here.
2032
2033 2011-06-21  Andrew MacLeod  <amacleod@redhat.com>
2034
2035         * semantics.c: Add sync_ or SYNC__ to builtin names.
2036
2037 2011-06-20  Jason Merrill  <jason@redhat.com>
2038
2039         PR c++/49216
2040         * init.c (build_vec_init): Don't try to use a CONSTRUCTOR when
2041         base is a pointer.
2042         * typeck2.c (process_init_constructor_array): Use {} for classes,
2043         too.
2044         * call.c (convert_like_real): Handle substitution failure.
2045
2046         PR c++/48138
2047         * pt.c (canonicalize_type_argument): New.
2048         (convert_template_argument, unify): Use it.
2049
2050         PR c++/47080
2051         * call.c (rejection_reason_code): Add rr_explicit_conversion.
2052         (print_z_candidate): Handle it.
2053         (explicit_conversion_rejection): New.
2054         (build_user_type_conversion_1): Reject an explicit conversion
2055         function that requires more than a qualification conversion.
2056
2057         PR c++/47635
2058         * decl.c (grokdeclarator): Don't set ctype to an ENUMERAL_TYPE.
2059
2060         PR c++/48138
2061         * tree.c (strip_typedefs): Use build_aligned_type.
2062
2063         PR c++/49205
2064         * call.c (sufficient_parms_p): Allow parameter packs too.
2065
2066         PR c++/43321
2067         * semantics.c (describable_type): Remove.
2068         * cp-tree.h: Likewise.
2069         * decl.c (cp_finish_decl): Don't call it.
2070         * init.c (build_new): Likewise.
2071         * parser.c (cp_parser_omp_for_loop): Likewise.
2072         * pt.c (tsubst_decl): Likewise.
2073         (do_auto_deduction): If we fail in a template, try again
2074         at instantiation time.
2075
2076         PR c++/43831
2077         * parser.c (cp_parser_lambda_introducer): Complain about redundant
2078         captures.
2079         * semantics.c (add_capture): Likewise.
2080         (register_capture_members): Clear IDENTIFIER_MARKED.
2081
2082 2011-06-17  Jason Merrill  <jason@redhat.com>
2083
2084         PR c++/49458
2085         * call.c (convert_class_to_reference_1): Allow binding function
2086         lvalue to rvalue reference.
2087
2088         PR c++/43912
2089         Generate proxy VAR_DECLs for better lambda debug info.
2090         * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): Add lambda operator().
2091         (LAMBDA_EXPR_PENDING_PROXIES): New.
2092         (struct tree_lambda_expr): Add pending_proxies.
2093         * name-lookup.c (pushdecl_maybe_friend_1): Handle capture shadowing.
2094         (qualify_lookup): Use is_lambda_ignored_entity.
2095         * parser.c (cp_parser_lambda_expression): Don't adjust field names.
2096         Call insert_pending_capture_proxies.
2097         (cp_parser_lambda_introducer): Use this_identifier.
2098         (cp_parser_lambda_declarator_opt): Call the object parameter
2099         of the op() "__closure" instead of "this".
2100         (cp_parser_lambda_body): Call build_capture_proxy.
2101         * semantics.c (build_capture_proxy, is_lambda_ignored_entity): New.
2102         (insert_pending_capture_proxies, insert_capture_proxy): New.
2103         (is_normal_capture_proxy, is_capture_proxy): New.
2104         (add_capture): Add __ to field names here, return capture proxy.
2105         (add_default_capture): Use this_identifier, adjust to expect
2106         add_capture to return a capture proxy.
2107         (outer_lambda_capture_p, thisify_lambda_field): Remove.
2108         (finish_id_expression, lambda_expr_this_capture): Adjust.
2109         (build_lambda_expr): Initialize LAMBDA_EXPR_PENDING_PROXIES.
2110         * pt.c (tsubst_copy_and_build): Check that LAMBDA_EXPR_PENDING_PROXIES
2111         is null.
2112
2113         * name-lookup.c (pushdecl_maybe_friend_1): Do check for shadowing
2114         of artificial locals.
2115
2116         * parser.c (cp_parser_lambda_expression): Clear
2117         LAMBDA_EXPR_THIS_CAPTURE after parsing.
2118         * pt.c (tsubst_copy_and_build): Make sure it isn't set.
2119
2120         * cp-tree.h (struct tree_lambda_expr): Change common to typed.
2121         Move non-pointers to end of struct.
2122
2123         * pt.c (tsubst_decl): Handle DECL_VALUE_EXPR on reference.
2124         * decl.c (check_initializer): Handle DECL_VALUE_EXPR_P.
2125
2126         * semantics.c (finish_non_static_data_member): Preserve dereference
2127         in template.
2128
2129 2011-06-16  Jason Merrill  <jason@redhat.com>
2130
2131         PR c++/44160
2132         * parser.c (cp_parser_lambda_body): Share code between
2133         simple and complex cases instead of using cp_parser_function_body.
2134
2135         PR c++/45378
2136         * decl.c (check_initializer): Check narrowing.
2137
2138         PR c++/49229
2139         * pt.c (tsubst_decl) [FUNCTION_DECL]: Handle substitution failure.
2140
2141         PR c++/49251
2142         * semantics.c (finish_id_expression): Mark even dependent
2143         variables as used.
2144
2145         PR c++/49420
2146         * error.c (dump_template_argument): Don't try to omit default
2147         template args from an argument pack.
2148
2149 2011-06-15  H.J. Lu  <hongjiu.lu@intel.com>
2150
2151         PR c++/49412
2152         * decl.c (get_dso_handle_node): Mark __dso_handle hidden if
2153         assembler supports hidden visibility.
2154
2155 2011-06-14  Jason Merrill  <jason@redhat.com>
2156
2157         PR c++/49107
2158         * cp-tree.h (DEFERRED_NOEXCEPT_SPEC_P): Handle overload.
2159         * method.c (defaulted_late_check): Only maybe_instantiate_noexcept
2160         if the declaration had an exception-specifier.
2161         (process_subob_fn): Don't maybe_instantiate_noexcept.
2162         * pt.c (maybe_instantiate_noexcept): Handle overload.
2163         * typeck2.c (nothrow_spec_p_uninst): New.
2164         (merge_exception_specifiers): Add 'fn' parm.  Build up overload.
2165         * typeck.c (merge_types): Adjust.
2166
2167         * pt.c (deduction_tsubst_fntype): Don't save input_location.
2168         (maybe_instantiate_noexcept): Likewise.
2169
2170 2011-06-14  Joseph Myers  <joseph@codesourcery.com>
2171
2172         * Make-lang.in (cp/method.o): Update dependencies.
2173         * method.c: Include common/common-target.h.
2174         (use_thunk): Use targetm_common.have_named_sections.
2175
2176 2011-06-14  Steve Ellcey  <sje@cup.hp.com>
2177
2178         * decl.c (cxx_init_decl_processing): Use ptr_mode instead of Pmode.
2179
2180 2011-06-14  Jason Merrill  <jason@redhat.com>
2181
2182         * error.c (type_to_string): Print typedef-stripped version too.
2183
2184         PR c++/49117
2185         * call.c (perform_implicit_conversion_flags): Print source type as
2186         well as expression.
2187
2188         PR c++/49389
2189         * typeck2.c (build_m_component_ref): Preserve rvalueness.
2190
2191         PR c++/49369
2192         * class.c (build_base_path): Fix cv-quals in unevaluated context.
2193
2194         PR c++/49290
2195         * semantics.c (cxx_fold_indirect_ref): Local, more permissive copy
2196         of fold_indirect_ref_1.
2197         (cxx_eval_indirect_ref): Use it.
2198
2199 2011-06-11  Jan Hubicka  <jh@suse.cz>
2200
2201         * decl2.c (cp_write_global_declarations): Process aliases; look trhough
2202         same body aliases.
2203
2204 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
2205
2206         PR c++/41769
2207         * decl.c (grokdeclarator): Reject operator names in parameters.
2208
2209 2011-06-10  Jan Hubicka  <jh@suse.cz>
2210
2211         * decl2.c (clear_decl_external): New functoin.
2212         (cp_write_global_declarations): Use it.
2213
2214 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
2215
2216         * cp-tree.h (error_operand_p): Remove.
2217
2218 2011-06-09  David Krauss  <potswa@mac.com>
2219
2220         PR c++/49118
2221         * typeck2.c (build_x_arrow): Push fake template context
2222         to produce diagnostic on acyclic endless operator-> drill-down.
2223         * call.c (build_new_op): Change Boolean overload status
2224         value to a pointer to the overload function.
2225         * cp-tree.h: Likewise.
2226         * typeck.c: Likewise.
2227         * parser.c: Likewise.
2228         * decl2.c: Likewise.
2229         * pt.c: Likewise.
2230
2231 2011-06-09  Jason Merrill  <jason@redhat.com>
2232
2233         * semantics.c (maybe_constant_value): Handle overflowed input.
2234         (non_const_var_error): Handle non-constant DECL_INITIAL.
2235
2236         * pt.c (build_non_dependent_expr): Use fold_non_dependent_expr_sfinae.
2237
2238         * parser.c (cp_parser_constant_expression): Just return the
2239         non-constant expression.
2240
2241         * semantics.c (finish_compound_literal): Set TREE_HAS_CONSTRUCTOR.
2242
2243 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
2244
2245         PR c++/29003
2246         * decl.c (grokdeclarator): Reject operator names in typedefs.
2247
2248 2011-06-08  Jason Merrill  <jason@redhat.com>
2249
2250         PR c++/49107
2251         * cp-tree.def (DEFERRED_NOEXCEPT): New.
2252         * cp-tree.h (struct tree_deferred_noexcept): New.
2253         (DEFERRED_NOEXCEPT_PATTERN, DEFERRED_NOEXCEPT_ARGS): New.
2254         (DEFERRED_NOEXCEPT_SPEC_P): New.
2255         (enum cp_tree_node_structure_enum): Add TS_CP_DEFERRED_NOEXCEPT.
2256         (union lang_tree_node): Add tree_deferred_noexcept.
2257         (maybe_instantiate_noexcept): Declare.
2258         * cp-objcp-common.c (cp_tree_size): Handle DEFERRED_NOEXCEPT.
2259         * error.c (dump_exception_spec): Likewise.
2260         * cxx-pretty-print.c (pp_cxx_exception_specification): Likewise.
2261         * ptree.c (cxx_print_xnode): Likewise.
2262         * tree.c (cp_tree_equal): Likewise.
2263         * decl.c (cp_tree_node_structure): Likewise.
2264         (duplicate_decls): Call maybe_instantiate_noexcept.
2265         * except.c (build_noexcept_spec): Handle DEFERRED_NOEXCEPT.
2266         (nothrow_spec_p, type_noexcept_p, type_throw_all_p): Check
2267         DEFERRED_NOEXCEPT_SPEC_P.
2268         * typeck2.c (merge_exception_specifiers): Likewise.
2269         * decl2.c (mark_used): Call maybe_instantiate_noexcept.
2270         * method.c (process_subob_fn, defaulted_late_check): Likewise.
2271         * pt.c (tsubst_exception_specification): Add defer_ok parm.
2272         Build DEFERRED_NOEXCEPT.
2273         (maybe_instantiate_noexcept): New.
2274         (tsubst, regenerate_decl_from_template, instantiate_decl): Adjust.
2275         * search.c (check_final_overrider): Call maybe_instantiate_noexcept.
2276
2277         * semantics.c (potential_constant_expression_1): Handle destructor
2278         call.
2279
2280 2011-06-08  Jakub Jelinek  <jakub@redhat.com>
2281
2282         * cp-tree.h (struct tinst_level): Add chain_next GTY
2283         markup.
2284
2285 2011-06-08  Jason Merrill  <jason@redhat.com>
2286
2287         PR c++/49322
2288         * pt.c (deduction_tsubst_fntype): Don't free the tinst entry
2289         if a pending_template entry is pointing at it.
2290
2291 2011-06-07  Jason Merrill  <jason@redhat.com>
2292
2293         PR c++/48969
2294         PR c++/44175
2295         * error.c (subst_to_string): New.
2296         (cp_printer): Use it for 'S'.
2297         (print_instantiation_partial_context_line): Handle subst context.
2298         * pt.c (push_tinst_level): Handle subst context.
2299         (deduction_tsubst_fntype): Don't track specific substitutions.
2300         Use push_tinst_level.
2301
2302         * pt.c (deduction_tsubst_fntype): Use push_deduction_access_scope.
2303         (fn_type_unification): Don't call push_deduction_access_scope here.
2304
2305 2011-06-06  Jason Merrill  <jason@redhat.com>
2306
2307         PR c++/48780
2308         * typeck.c (perform_integral_promotions): Don't promote scoped enums.
2309         * call.c (convert_arg_to_ellipsis): Promote them here in old ABI.
2310
2311 2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>,
2312
2313         PR obj-c++/48275
2314         * parser.c (cp_parser_objc_at_property_declaration): Allow setter
2315         and getter names to use all the allowed method names.
2316
2317 2011-06-06  Jason Merrill  <jason@redhat.com>
2318
2319         PR c++/49298
2320         * semantics.c (potential_constant_expression_1): Handle FIELD_DECL.
2321
2322         PR objc++/49221
2323         * decl.c (cp_finish_decl): Check DECL_FUNCTION_SCOPE_P rather than
2324         at_function_scope_p.
2325
2326         PR c++/49134
2327         * tree.c (build_target_expr): Deal with ARM ABI tweaks.
2328
2329 2011-06-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
2330
2331         * init.c (build_delete): Warn when deleting type with non-virtual
2332         destructor.
2333
2334 2011-06-03  Jakub Jelinek  <jakub@redhat.com>
2335
2336         PR c++/49276
2337         * mangle.c (write_nested_name): Use CP_DECL_CONTEXT instead of
2338         DECL_CONTEXT.
2339
2340 2011-06-01  Jason Merrill  <jason@redhat.com>
2341
2342         * pt.c (build_non_dependent_expr): Remove special handling of
2343         REFERENCE_REF_P.
2344
2345         PR c++/44175
2346         * pt.c (template_args_equal): Handle one arg being NULL_TREE.
2347         (deduction_tsubst_fntype): Handle excessive non-infinite recursion.
2348
2349         PR c++/49253
2350         * typeck2.c (build_x_arrow): Don't use build_min_nt.
2351
2352 2010-05-31  Fabien Chêne  <fabien@gcc.gnu.org>
2353
2354         PR c++/48010
2355         * name-lookup.c (supplement_binding_1): If the old binding was a
2356         type name, also check that the DECL actually refers to the same
2357         type or is not a type.
2358
2359 2011-05-31  Jason Merrill  <jason@redhat.com>
2360
2361         PR c++/44870
2362         * tree.c (lvalue_kind): Recurse on NON_DEPENDENT_EXPR.  Handle
2363         ARROW_EXPR, TYPEID_EXPR, and arbitrary class-valued expressions.
2364         (build_min_non_dep): Preserve reference refs.
2365         (build_min_non_dep_call_vec): Likewise
2366
2367 2011-05-30  Jakub Jelinek  <jakub@redhat.com>
2368
2369         PR c++/49223
2370         * semantics.c (finish_omp_clauses): Call require_complete_type
2371         even for copyin/copyprivate clauses.  Only call
2372         cxx_omp_create_clause_info if inner_type is COMPLETE_TYPE_P.
2373
2374 2011-05-28  Jason Merrill  <jason@redhat.com>
2375
2376         PR c++/46124
2377         * parser.c (cp_parser_lambda_expression): Improve error recovery.
2378         (cp_parser_lambda_declarator_opt): Likewise.  Return bool.
2379
2380 2011-05-27  Jason Merrill  <jason@redhat.com>
2381
2382         PR c++/47277
2383         * parser.c (cp_parser_pseudo_destructor_name): Commit to parse
2384         after we see the ~.
2385
2386         * mangle.c (mangle_decl_string): Make sure we don't try to mangle
2387         templates.
2388
2389         PR c++/47049
2390         * semantics.c (maybe_add_lambda_conv_op): Fix COMDAT sharing.
2391         * decl.c (start_preparsed_function): Don't call comdat_linkage for
2392         a template.
2393
2394         PR c++/47132
2395         * mangle.c (write_expression): Handle MODOP_EXPR.
2396
2397         PR c++/47277
2398         * parser.c (cp_parser_unqualified_id): Don't check
2399         constructor_name_p for enums.
2400
2401         PR c++/47687
2402         * pt.c (dependent_type_p_r): Avoid infinite recursion.
2403
2404         PR c++/48284
2405         * error.c (dump_expr) [COMPONENT_REF]: Use pp_cxx_dot
2406         with INDIRECT_REF of REFERENCE_TYPE.
2407
2408         PR c++/49181
2409         * pt.c (get_mostly_instantiated_function_type): Use push_access_scope.
2410
2411 2011-05-27  Nathan Froyd  <froydnj@codesourcery.com>
2412
2413         * cp-tree.h (building_stmt_tree): Delete.
2414         * decl.c (save_function_data): Tweak initializer for x_cur_stmt_list.
2415         (build_aggr_init_full_exprs): Call building_stmt_list_p
2416         instead of building_stmt_tree.
2417         (initialize_local_var): Likewise.
2418         (finish_function): Likewise.
2419         * decl2.c (finish_anon_union): Likewise.
2420         * init.c (begin_init_stmts): Likewise.
2421         (finish_init_stmts): Likewise.
2422         (expand_aggr_init_1): Likewise.
2423         * name-lookup.c (do_local_using_decl): Likewise.
2424         (do_namespace_alias): Likewise.
2425         (do_using_directive): Likewise.
2426         (cp_emit_debug_info_for_using): Likewise.
2427         * semantics.c (add_stmt): Assert that stmt_list_stack is non-empty.
2428
2429 2011-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
2430
2431         PR c++/42056
2432         * typeck2.c (build_functional_cast): Complain early for invalid uses
2433         of 'auto' and set type to error_mark_node.
2434
2435 2011-05-26  Jason Merrill  <jason@redhat.com>
2436
2437         PR c++/47721
2438         * parser.c (cp_parser_member_declaration): Allow friend T.
2439         * friend.c (make_friend_class): Ignore non-classes.
2440         * pt.c (instantiate_class_template_1): Handle TEMPLATE_TYPE_PARM.
2441
2442         DR 1004
2443         * pt.c (convert_template_argument): Don't complain about using
2444         injected-class-name as template template argument.
2445
2446         PR c++/47956
2447         * decl.c (check_static_variable_definition): Now static.
2448         (cp_finish_decl): Call it here.
2449         (grokdeclarator): Not here.
2450         * pt.c (instantiate_class_template_1): Or here.
2451         * cp-tree.h: Don't declare it.
2452
2453 2011-05-26  Janis Johnson  <janis187@us.ibm.com>
2454             Nathan Froyd  <froydnj@codesourcery.com>
2455
2456         PR c++/2288
2457         PR c++/18770
2458         * name-lookup.h (enum scope_kind): Add sk_cond.
2459         * name-lookup.c (pushdecl_maybe_friend): Get scope of shadowed local.
2460         Detect and report error for redeclaration from for-init or if
2461         or switch condition.
2462         (begin_scope): Handle sk_cond.
2463         * semantics.c (begin_if_stmt): Use sk_cond.
2464         (begin switch_stmt): Ditto.
2465
2466 2011-05-26  Jason Merrill  <jason@redhat.com>
2467
2468         PR c++/48211
2469         * name-lookup.h (cp_class_binding): Make base a pointer.
2470         * name-lookup.c (new_class_binding): Adjust.
2471         (poplevel_class): Adjust.
2472
2473         PR c++/48424
2474         * decl.c (grokparms): Function parameter packs don't need to
2475         go at the end.
2476         * pt.c (type_unification_real): But they aren't deduced otherwise.
2477
2478 2011-05-25  Jason Merrill  <jason@redhat.com>
2479
2480         PR c++/48536
2481         * decl.c (build_enumerator): If incremented enumerator won't fit in
2482         previous integral type, find one it will fit in.
2483
2484         PR c++/48599
2485         * decl.c (create_array_type_for_decl): Complain about array of auto.
2486
2487         PR c++/44994
2488         PR c++/49156
2489         * error.c (dump_template_bindings): Set processing_template_decl
2490         for a partial instantiation.
2491
2492         PR c++/45401
2493         * decl.c (grokdeclarator): Don't change type when adding rvalue ref
2494         to another reference type.
2495
2496         PR c++/44311
2497         * decl.c (case_conversion): New.
2498         (finish_case_label): Use it.
2499
2500         * ptree.c (cxx_print_xnode): Handle ARGUMENT_PACK_SELECT.
2501
2502         PR c++/45698
2503         * pt.c (dependent_template_arg_p): See through ARGUMENT_PACK_SELECT.
2504
2505         PR c++/46005
2506         * decl.c (grokdeclarator): Complain about auto typedef.
2507
2508         PR c++/46245
2509         * decl.c (grokdeclarator): Complain later for auto parameter.
2510         * pt.c (splice_late_return_type): Handle use in a template
2511         type-parameter.
2512
2513         PR c++/46696
2514         * typeck.c (cp_build_modify_expr): Check DECL_DEFAULTED_FN.
2515
2516         PR c++/47184
2517         * parser.c (cp_parser_parameter_declaration): Recognize
2518         list-initialization.
2519         (cp_parser_direct_declarator): Check for the closing
2520         paren before parsing definitely.
2521
2522         PR c++/48935
2523         * parser.c (cp_parser_constructor_declarator_p): Don't check
2524         constructor_name_p for enums.
2525         (cp_parser_diagnose_invalid_type_name): Correct error message.
2526
2527         PR c++/45418
2528         * init.c (perform_member_init): Handle list-initialization
2529         of array of non-trivial class type.
2530
2531         PR c++/45080
2532         * pt.c (instantiate_class_template_1): Call maybe_add_lambda_conv_op.
2533         * semantics.c (lambda_function): Check COMPLETE_OR_OPEN_TYPE_P.
2534
2535         PR c++/48292
2536         * pt.c (tsubst_decl) [PARM_DECL]: Handle partial instantiation of
2537         function parameter pack.
2538         (tsubst_pack_expansion): Likewise.
2539
2540         * cp-objcp-common.c (cp_common_init_ts): TYPE_ARGUMENT_PACK has
2541         TS_COMMON.
2542
2543 2011-05-25  Jakub Jelinek  <jakub@redhat.com>
2544
2545         * cp-objcp-common.c (cp_common_init_ts): Mark CTOR_INITIALIZER
2546         as TS_TYPED.
2547
2548         PR c++/49136
2549         * semantics.c (cxx_eval_bit_field_ref): Handle the
2550         case when BIT_FIELD_REF doesn't cover only a single field.
2551
2552 2011-05-24  Jason Merrill  <jason@redhat.com>
2553
2554         PR c++/49042
2555         * pt.c (get_mostly_instantiated_function_type): Use
2556         push_deferring_access_checks rather than set flag_access_control.
2557
2558 2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>,
2559
2560         * parser.c (cp_parser_objc_class_ivars): Deal gracefully with a
2561         syntax error in declaring an ObjC instance variable.
2562
2563 2011-05-24  Jason Merrill  <jason@redhat.com>
2564
2565         PR c++/48884
2566         * class.c (pushclass): Accept NULL argument.
2567         (popclass): Deal with popping null class.
2568         * pt.c (push_access_scope, pop_access_scope): Use them rather than
2569         push_to_top_level/pop_from_top_level.
2570         (push_deduction_access_scope, pop_defarg_context): New.
2571         (fn_type_unification): Use them.
2572         * name-lookup.c (lookup_name_real_1): Check current_class_type.
2573
2574 2011-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
2575
2576         * decl.c (grokdeclarator): Use current_class_name.
2577
2578 2011-05-24  Joseph Myers  <joseph@codesourcery.com>
2579
2580         * Make-lang.in (GXX_OBJS): Remove prefix.o.
2581         (g++$(exeext)): Use libcommon-target.a.
2582         (CXX_C_OBJS): Remove prefix.o.
2583
2584 2011-05-23  Jason Merrill  <jason@redhat.com>
2585
2586         * pt.c (tsubst_copy_and_build): Use current_class_name.
2587
2588         PR c++/49102
2589         * call.c (convert_arg_to_ellipsis): Call force_rvalue.
2590
2591         PR c++/49105
2592         * typeck.c (cp_build_c_cast): Don't strip cv-quals when
2593         converting to reference.
2594         (build_static_cast_1): Update for glvalues.
2595
2596         PR c++/49105
2597         * typeck.c (build_const_cast_1): Handle rvalue references.
2598
2599         PR c++/47263
2600         * decl.c (use_eh_spec_block): Do use an EH spec block for a
2601         lambda op().
2602
2603         PR c++/49058
2604         * call.c (splice_viable): Be strict in templates.
2605
2606         PR c++/47336
2607         * error.c (dump_template_bindings): Suppress access control.
2608
2609         PR c++/47544
2610         * pt.c (instantiate_decl): Handle =default.
2611
2612         PR c++/48617
2613         * pt.c (invalid_nontype_parm_type_p): Allow DECLTYPE_TYPE.
2614
2615 2011-05-23  Nathan Froyd  <froydnj@codesourcery.com>
2616
2617         * call.c (build_over_call): Tweak call to check_function_arguments.
2618         * typeck.c (cp_build_function_call_vec): Likewise.
2619
2620 2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
2621
2622         PR c++/18016
2623         * init.c (perform_member_init): Check for self-initialization.
2624
2625 2011-05-22  Jason Merrill  <jason@redhat.com>
2626
2627         PR c++/48647
2628         * typeck.c (composite_pointer_type_r): Return error_mark_node
2629         on error in SFINAE context.
2630
2631 2011-05-20  Jason Merrill  <jason@redhat.com>
2632
2633         PR c++/48945
2634         * decl.c (grokdeclarator): Don't add set const function-cv-qual
2635         for constexpr fns to memfn_quals, just add it to the type.
2636         (revert_static_member_fn): Don't complain about quals.
2637         (check_static_quals): New.
2638         (grokfndecl): Call it.
2639         (start_preparsed_function): Don't call revert_static_member_fn.
2640
2641         PR c++/48945
2642         * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
2643
2644         PR c++/48780
2645         * cvt.c (type_promotes_to): Don't promote scoped enums.
2646
2647         PR c++/49066
2648         * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
2649
2650         PR c++/48873
2651         * tree.c (stabilize_expr): Fix typo.
2652
2653         DR 1073
2654         PR c++/49082
2655         * typeck.c (comp_except_specs): noexcept(false) is not compatible
2656         with throw(type-list).
2657         * typeck2.c (merge_exception_specifiers): noexcept(false)
2658         beats any more limited specification.
2659
2660         PR c++/24163
2661         PR c++/29131
2662         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
2663         unqualified lookup.
2664         * semantics.c (perform_koenig_lookup): Add complain parm.
2665         * cp-tree.h: Adjust.
2666         * parser.c (cp_parser_postfix_expression): Adjust.
2667         (cp_parser_perform_range_for_lookup): Adjust.
2668
2669 2011-05-20  Jason Merrill  <jason@redhat.com>
2670
2671         * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
2672
2673 2011-05-20  Joseph Myers  <joseph@codesourcery.com>
2674
2675         * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
2676
2677 2011-05-19  Jakub Jelinek  <jakub@redhat.com>
2678
2679         PR c++/49043
2680         * decl.c (check_omp_return): Stop searching on sk_function_parms.
2681
2682         PR c++/48869
2683         * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
2684         pass it down to locate_fn_flags.
2685         * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
2686         * semantics.c (cxx_omp_create_clause_info): Adjust callers.
2687         * cp-gimplify.c: Include splay-tree.h.
2688         (splay_tree_compare_decl_uid, omp_var_to_track,
2689         omp_cxx_notice_variable): New functions.
2690         (struct cp_genericize_omp_taskreg): New type.
2691         (struct cp_genericize_data): Add omp_ctx field.
2692         (cp_genericize_r): Attempt to determine implicitly determined
2693         firstprivate class type variables.
2694         (cp_genericize): Clear omp_ctx.
2695         * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
2696
2697 2011-05-18  Jason Merrill  <jason@redhat.com>
2698
2699         PR c++/48948
2700         PR c++/49015
2701         * class.c (finalize_literal_type_property): Do check
2702         for constexpr member functions of non-literal class.
2703         (finish_struct): Don't call check_deferred_constexpr_decls.
2704         * cp-tree.h: Don't declare it.
2705         (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
2706         * decl.c (grok_special_member_properties): Don't check it
2707         (grokfnedcl): Don't call validate_constexpr_fundecl.
2708         (start_preparsed_function): Do call it.
2709         * pt.c (tsubst_decl): Don't call it.
2710         (instantiate_class_template_1): Don't call
2711         check_deferred_constexpr_decls.
2712         * semantics.c (literal_type_p): Check for any incompleteness.
2713         (ensure_literal_type_for_constexpr_object): Likewise.
2714         (is_valid_constexpr_fn): Revert deferral changes.
2715         (validate_constexpr_fundecl): Likewise.
2716         (register_constexpr_fundef): Likewise.
2717         (check_deferred_constexpr_decls): Remove.
2718
2719 2011-05-16  Jason Merrill  <jason@redhat.com>
2720
2721         PR c++/48969
2722         * pt.c (deduction_tsubst_fntype): Use a VEC initially.
2723
2724 2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
2725
2726         * cxx-pretty-print.c: Update comment.
2727         * semantics.c (trait_expr_value, finish_trait_expr):
2728         Reorder the cases.
2729         * parser.c (cp_parser_primary_expression): Likewise.
2730
2731 2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
2732
2733         PR c++/48994
2734         * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
2735
2736 2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
2737
2738         Implement final on class.
2739         * class.c (check_bases): Diagnose derivation from a final class.
2740         * cp-tree.h (lang_type_class): Add is_final and adjust dummy.
2741         (CLASSTYPE_FINAL): New.
2742         * parser.c (cp_parser_class_head): Parse class-virt-specifier, set
2743         CLASSTYPE_FINAL.
2744         * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL.
2745
2746 2011-05-13  Jason Merrill  <jason@redhat.com>
2747
2748         PR c++/48969
2749         * pt.c (deduction_tsubst_fntype): New.
2750         (fn_type_unification): Use it.
2751         (init_template_processing): Initialize hash table.
2752         (print_template_statistics): Print hash table stats.
2753
2754         * call.c (build_op_call): Use timevar_cond_start/stop.
2755         (build_user_type_conversion): Likewise.
2756
2757 2011-05-12  Jason Merrill  <jason@redhat.com>
2758
2759         * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New.
2760         * semantics.c (validate_constexpr_fundecl): Set it.
2761         (check_deferred_constexpr_decls): Clear it.
2762         (register_constexpr_fundef): Make sure it isn't set.
2763         * decl.c (grok_special_member_properties): Check it.
2764
2765 2011-05-11  Jason Merrill  <jason@redhat.com>
2766
2767         PR c++/48948
2768         * semantics.c (validate_constexpr_fundecl): Defer checking if
2769         an argument type is being defined.
2770         (is_valid_constexpr_fn): Add defer_ok parm.
2771         (cxx_eval_call_expression): Adjust.
2772         (check_deferred_constexpr_decls): New.
2773         (literal_type_p): Make sure type isn't being defined.
2774         (ensure_literal_type_for_constexpr_object): Handle type being defined.
2775         * cp-tree.h: Declare check_deferred_constexpr_decls.
2776         * decl.c (grokfndecl): Call validate_constexpr_fundecl here.
2777         (start_preparsed_function, cp_finish_decl): Not here.
2778         * class.c (finalize_literal_type_property): Don't call
2779         validate_constexpr_fundecl.
2780         (finish_struct): Call check_deferred_constexpr_decls.
2781         * pt.c (tsubst_decl): Call validate_constexpr_fundecl.
2782         (instantiate_class_template): Call check_deferred_constexpr_decls.
2783
2784         * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO
2785         rather than DECL_TEMPLATE_INSTANTIATION.
2786         (cxx_eval_call_expression): Likewise.
2787
2788         * semantics.c (register_constexpr_fundef): Add to hash table here.
2789         (validate_constexpr_fundecl): Not here.
2790
2791         * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once.
2792
2793         * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p,
2794         do call maybe_constant_value in C++0x mode.
2795         * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL.
2796
2797         PR c++/48745
2798         * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR.
2799
2800 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
2801
2802         * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use
2803         TYPE_VALUES_RAW.
2804         (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise.
2805         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise.
2806         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
2807
2808 2011-05-10  Jason Merrill  <jason@redhat.com>
2809
2810         PR c++/48930
2811         * class.c (type_build_ctor_call): New.
2812         * cp-tree.h: Declare it.
2813         * decl.c (check_initializer): Use it instead of
2814         TYPE_NEEDS_CONSTRUCTING.
2815         * init.c (build_value_init, build_value_init_noctor): Likewise.
2816         (perform_member_init, expand_aggr_init_1, build_new_1): Likewise.
2817         (build_vec_init): Likewise.
2818         * typeck2.c (process_init_constructor_array): Likewise.
2819         (process_init_constructor_record): Likewise.
2820
2821         PR c++/48736
2822         * pt.c (tsubst_copy_and_build): Handle substitution of a pack
2823         expansion producing another expansion.
2824
2825 2011-05-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
2826
2827         Fixes for override/final.
2828         * class.c (check_for_override): Diagnose final on a nonvirtual
2829         member function, diagnose override for a virtual with no matching
2830         override. Don't fiddle around with DECL_VINDEX.
2831
2832 2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
2833
2834         * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand.
2835         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
2836         * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new
2837         operand of EXPR_PACK_EXPANSION.
2838         (cp_tree_operand_length): Declare.
2839         * tree.c (cp_tree_operand_length): Define.
2840         (cp_tree_equal): Call it.
2841         * pt.c (value_dependent_expr_P): Likewise.
2842         * mangle.c (write_expression): Likewise.
2843
2844 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
2845
2846         PR c++/48737
2847         PR c++/48744
2848         * decl.c (reshape_init): Take a complain parameter and do
2849         not call error if tf_error is not set.
2850         (check_initializer, reshape_init_r, reshape_init_array,
2851         reshape_init_array_1, reshape_init_vector, reshape_init_class):
2852         Adjust.
2853         * typeck2.c (digest_init_r): Take a complain parameter and
2854         pass it to convert_for_initialization.
2855         (digest_init, digest_init_flags, process_init_constructor_array,
2856         process_init_constructor_record, process_init_constructor_union,
2857         process_init_constructor, digest_init_r): Adjust.
2858         * init.c (expand_default_init, build_new_1): Likewise.
2859         * typeck.c (cp_build_modify_expr): Likewise.
2860         * decl2.c (grokfield): Likewise.
2861         * call.c (convert_like_real, convert_default_arg): Likewise.
2862         * semantics.c (finish_compound_literal): Pass complain to
2863         reshape_init and digest_init.
2864         * cp-tree.h: Adjust declarations.
2865
2866 2011-05-07  Fabien Chêne  <fabien@gcc.gnu.org>
2867
2868         PR c++/48859
2869         * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the
2870         recursion if there is user defined constructor.
2871
2872 2011-05-09  Jason Merrill  <jason@redhat.com>
2873
2874         PR c++/34772
2875         * decl.c (initialize_local_var): Use DECL_INITIAL for simple
2876         initialization.
2877
2878 2011-05-08  Ville Voutilainen  <ville.voutilainen@gmail.com>
2879
2880         Implement final/override for member functions.
2881         * class.c (check_for_override): Check for DECL_OVERRIDE_P.
2882         * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New.
2883         (cp_virt_specifiers, enum virt_specifier): New.
2884         * decl.c (set_virt_specifiers): New.
2885         (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields.
2886         * parser.c (make_call_declarator): add virt-specifiers parameter.
2887         (cp_parser_lambda_declarator_opt): Adjust.
2888         (cp_parser_direct_declarator): Likewise.
2889         (cp_parser_virt_specifier_seq_opt): New.
2890         * search.c (check_final_overrider): Diagnose attempts to override
2891         a final member function.
2892
2893 2011-05-09  Dodji Seketeli  <dodji@redhat.com>
2894
2895         PR c++/48574
2896         * class.c (fixed_type_or_null): Use type_dependent_p_push to test
2897         if the instance has a dependent initializer.
2898
2899 2011-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
2900
2901         PR c++/48816
2902         * cxx-pretty-print.c (pp_cxx_template_declaration): Remove
2903         effectively unused variable.
2904
2905 2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2906
2907         * name-lookup.h (global_bindings_p): Adjust prototype.
2908         * name-lookup.c (global_bindings_p): Return bool.
2909
2910 2011-05-06  Jason Merrill  <jason@redhat.com>
2911
2912         * decl.c (stabilize_save_expr_r): Set *walk_subtrees as
2913         appropriate.
2914
2915         PR c++/48909
2916         * semantics.c (cxx_eval_conditional_expression): Check
2917         integer_zerop instead.
2918         (potential_constant_expression_1): Likewise.
2919
2920         PR c++/48911
2921         * semantics.c (cxx_eval_array_reference): Handle implicit
2922         initializers.
2923
2924 2011-05-06  Nathan Froyd  <froydnj@codesourcery.com>
2925
2926         * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions.
2927         * call.c (standard_conversion): Call class_of_this_parm.
2928         * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise.
2929         (pp_cxx_direct_abstract_declarator): Likewise.
2930         * decl2.c (change_return_type): Likewise.
2931         (cp_reconstruct_complex_type): Likewise.
2932         * error.c (dump_type_suffix, dump_function_decl): Likewise.
2933         * mangle.c (write_function_type): Likewise.
2934         * pt.c (unify): Likewise.
2935         * typeck.c (merge_types, type_memfn_quals): Likewise.
2936         * decl.c (build_this_parm): Call type_of_this_parm.
2937
2938 2011-05-06  Dodji Seketeli  <dodji@redhat.com>
2939
2940         PR c++/48838
2941         * cp-tree.h (non_static_member_function_p): Declare new function.
2942         * tree.c (non_static_member_function_p): Define it.
2943         * semantics.c (finish_call_expr): Use it.
2944
2945 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
2946
2947         * decl.c (finish_case_label): Omit the loc argument to
2948         build_case_label.
2949
2950 2011-05-05  Jason Merrill  <jason@redhat.com>
2951
2952         * cp-tree.h (REFERENCE_REF_P): Just check the type.
2953         * cvt.c (convert_from_reference): Adjust.
2954         * pt.c (build_non_dependent_expr): Adjust.
2955         * semantics.c (finish_offsetof): Adjust.
2956         * tree.c (lvalue_kind): Use it.
2957
2958         PR c++/48873
2959         * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
2960
2961 2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>
2962
2963         * decl.c (start_preparsed_function): Do not set
2964         dont_save_pending_sizes_p.
2965
2966 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
2967
2968         * parser.c (cp_parser_objc_method_definition_list): Update call to
2969         objc_start_method_definition.
2970
2971 2011-05-04  Jason Merrill  <jason@redhat.com>
2972
2973         PR c++/48749
2974         * class.c (resolves_to_fixed_type_p): Don't look closely
2975         in templates.
2976
2977 2011-05-03  Paolo Carlini  <paolo.carlini@oracle.com>
2978
2979         PR c++/28501
2980         * call.c (add_builtin_candidate): Handle REALPART_EXPR and
2981         IMAGPART_EXPR.
2982
2983 2011-05-02  Lawrence Crowl  <crowl@google.com>
2984
2985         * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
2986         (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code.
2987         Change TV_NAME_LOOKUP to start/stop.
2988         (define_label): Refactor timevar calls out to a wrapper function.
2989         Change TV_NAME_LOOKUP to start/stop.
2990         (xref_tag): Likewise.
2991         (lookup_label): Refactor timevar calls out to a wrapper function.
2992         Change TV_NAME_LOOKUP to start_cond/stop_cond.
2993
2994         * pt.c: (instantiate_class_template): Add a wrapper to push/pop new
2995         TV_TEMPLATE_INST.
2996         (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST.
2997         (lookup_template_class): Refactor timevar calls out to a wrapper
2998         function.  Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST.
2999         (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST.
3000
3001         * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop.
3002         (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond.
3003         (push_namespace): Likewise.
3004         (pop_nested_namespace): Likewise.
3005         (pushdecl_namespace_level): Likewise.
3006         (store_class_bindings): Likewise.
3007         (push_to_top_level): Likewise.
3008         (identifier_type_value): Refactor timevar calls out to a wrapper
3009         function.  Change TV_NAME_LOOKUP to start/stop.
3010         (find_binding): Likewise.
3011         (push_using_decl): Likewise.
3012         (lookup_arg_dependent): Likewise.
3013         (push_using_directive): Likewise.
3014         (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN
3015         to plain code.  Change TV_NAME_LOOKUP to start/stop.
3016         (lookup_type_current_level): Likewise.  Refactor inner return to
3017         break.
3018         (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain
3019         code.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
3020         (pushdecl_top_level_1): Likewise.
3021         (lookup_using_namespace): Likewise.
3022         (pushdecl_with_scope): Refactor timevar calls out to a wrapper
3023         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.
3024         (push_overloaded_decl): Likewise.
3025         (push_class_level_binding): Likewise.
3026         (namespace_binding): Likewise.
3027         (set_namespace_binding): Likewise.
3028         (supplement_binding): Likewise.
3029         (unqualified_namespace_lookup): Likewise.
3030         (lookup_name_real): Likewise.
3031         (lookup_type_scope): Likewise.
3032         (namespace_ancestor): Likewise.
3033         (lookup_name_innermost_nonclass_level): Likewise.
3034         (pushtag): Likewise.
3035         (pop_from_top_level): Likewise.
3036         (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper
3037         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Wrap long
3038         lines.
3039         (add_using_namespace): Refactor timevar calls out to a wrapper
3040         function.  Change TV_NAME_LOOKUP to start_cond/stop_cond.  Bypass
3041         wrapper on call to self.
3042
3043         * decl2.c: (cp_write_global_declarations):  Add start/stop of
3044         new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO.
3045         Remove push/pop calls to TV_VARCONST.
3046
3047         * parser.c: Add include of "timevar.h".
3048         (cp_parser_explicit_instantiation): Add push/pop calls to
3049         TV_TEMPLATE_INST.
3050         (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM.
3051         (cp_parser_class_specifier): Add wrapper to add push/pop calls to
3052         TV_PARSE_STRUCT.
3053         (cp_parser_function_definition_from_specifiers_and_declarator): Add
3054         push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE.
3055         (cp_parser_late_parsing_for_member):  Add push/pop calls to
3056         new TV_PARSE_INMETH.
3057
3058         * call.c: Add include of "timevar.h".
3059         (convert_class_to_reference): Wrap and add push/pop calls to 
3060         TV_OVERLOAD.
3061         (build_op_call): Likewise.
3062         (build_conditional_expr): Likewise.
3063         (build_new_op): Likewise.
3064         (build_new_method_call): Likewise.
3065         (build_user_type_conversion): Reorganize to single return and add
3066         push/pop calls to TV_OVERLOAD.
3067         (perform_overload_resolution): Likewise.
3068
3069         * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H).
3070
3071 2011-05-02  Jason Merrill  <jason@redhat.com>
3072
3073         * tree.c (build_vec_init_expr): Take complain parm.
3074         (build_vec_init_elt): Likewise.  Free arg vector.
3075         (diagnose_non_constexpr_vec_init, build_array_copy): Adjust.
3076         * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK.
3077         (VEC_INIT_EXPR_INIT): Likewise.
3078         Adjust build_vec_init_expr declaration.
3079         * init.c (perform_member_init): Adjust.
3080
3081         Revert:
3082         PR c++/40975
3083         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3084         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3085         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3086         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3087         (build_vec_init_elt): Don't expect an array type.
3088         (build_array_copy): Adjust.
3089         * init.c (perform_member_init): Adjust.
3090         (build_new_1): Use build_vec_init_expr.
3091
3092         PR c++/48834
3093         * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS.
3094         Protect an explicit target.
3095
3096         PR c++/48446
3097         * decl.c (stabilize_save_expr_r, stabilize_vla_size): New.
3098         (compute_array_index_type): Revert earlier 48446 changes.
3099         (grokdeclarator): Use stabilize_vla_size.
3100
3101 2011-05-02  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
3102             Eric Botcazou <ebotcazou@adacore.com>
3103
3104         * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE
3105         instead of inappropriate zero values.
3106
3107 2011-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
3108
3109         PR c++/47969
3110         * decl.c (compute_array_index_type): Check build_expr_type_conversion
3111         return value for NULL_TREE.
3112
3113 2011-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
3114
3115         PR c++/48606
3116         * init.c (perform_member_init): Check build_value_init return
3117         value for error_mark_node.
3118
3119 2011-04-29  Diego Novillo  <dnovillo@google.com>
3120             Le-Chun Wu  <lcwu@google.com>
3121
3122         * call.c (conversion_null_warnings): Also handle assignments
3123         when warning about NULL conversions.
3124
3125 2011-04-29  Le-Chun Wu  <lcwu@google.com>
3126
3127         * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define.
3128         * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs.
3129         (build_over_call): Use it to determine whether to emit a NULL
3130         warning for template function instantiations.
3131         (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if
3132         EXPLICIT_TARGS is set.
3133
3134 2011-04-29  Nicola Pero  <nicola.pero@meta-innovation.com>,
3135             Mike Stump <mikestump@comcast.net>
3136
3137         * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only
3138         in maintainer mode.  Use the --output-file option of gperf instead
3139         of > to prevent creating an empty cp/cfns.h when gperf is not
3140         available.
3141
3142 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
3143
3144         PR c++/48798
3145         * semantics.c (finish_base_specifier): cv-qualified base class
3146         is fine, per DR 484.
3147
3148 2011-04-28  Dodji Seketeli  <dodji@redhat.com>
3149
3150         PR c++/48656
3151         * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
3152         considering call expressions involving a member function.
3153
3154 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
3155
3156         PR c++/48530
3157         * tree.c (build_cplus_new): Check build_target_expr return
3158         value for error_mark_node.
3159
3160 2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>
3161
3162         PR c++/48771
3163         * semantics.c (literal_type_p): Reference types are literal types,
3164         per the FDIS.
3165         (valid_type_in_constexpr_fundecl_p): Remove.
3166         (is_valid_constexpr_fn): Adjust.
3167
3168 2011-04-27  Jason Merrill  <jason@redhat.com>
3169
3170         PR libstdc++/48760
3171         Implement list-initialization of _Complex.
3172         * decl.c (reshape_init_r): Allow {real,imag} for _Complex.
3173         (check_initializer): Likewise.
3174         * call.c (build_complex_conv): New.
3175         (implicit_conversion): Call it.
3176         (convert_like_real): Handle it.
3177         * typeck2.c (check_narrowing): Handle it.
3178
3179         * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to
3180         decide whether to delete.
3181         (build_vec_init): Pass sfk_complete_destructor.
3182
3183         PR c++/40975
3184         * cp-tree.def (VEC_INIT_EXPR): Add third operand.
3185         * cp-tree.h (VEC_INIT_EXPR_NELTS): New.
3186         * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it.
3187         * tree.c (build_vec_init_expr): Handle getting pointer/nelts.
3188         (build_vec_init_elt): Don't expect an array type.
3189         (build_array_copy): Adjust.
3190         * init.c (perform_member_init): Adjust.
3191         (build_new_1): Use build_vec_init_expr.
3192
3193         * class.c (resolve_address_of_overloaded_function): Don't
3194         change OVERLOAD to TREE_LIST.
3195         * pt.c (print_candidates_1): Remove nonsensical assert.
3196
3197         PR c++/48046
3198         * parser.c (cp_parser_diagnose_invalid_type_name): Commit
3199         to tentative parse sooner.
3200
3201 2011-04-26  Jason Merrill  <jason@redhat.com>
3202
3203         PR c++/42687
3204         * parser.c (cp_parser_primary_expression): Set *idk to
3205         CP_ID_KIND_NONE for a parenthesized identifier.
3206
3207         * ptree.c (cxx_print_type) [TYPENAME_TYPE]: Dump fullname.
3208         (cxx_print_identifier): Correct indentation.
3209
3210         PR c++/48530
3211         * decl.c (cxx_maybe_build_cleanup): Add complain parm.
3212         * tree.c (force_target_expr): Add complain parm.
3213         (build_target_expr_with_type): Likewise.
3214         (get_target_expr_sfinae): Split out.
3215         (build_vec_init_expr, bot_manip): Adjust.
3216         * init.c (build_vec_delete, build_vec_delete_1): Add complain parm.
3217         (build_delete, build_dtor_call): Likewise.
3218         (perform_direct_initialization_if_possible): Adjust.
3219         (build_vec_init): Handle error return.
3220         * cvt.c (force_rvalue): Add complain parm.
3221         Call build_special_member_call directly.
3222         * decl2.c (delete_sanity): Add complain parm.
3223         (build_cleanup): Adjust.
3224         * pt.c (tsubst_copy_and_build, tsubst_expr): Adjust.
3225         * semantics.c (finish_stmt_expr_expr): Adjust.
3226         (finish_compound_literal): Adjust.
3227         * parser.c (cp_parser_delete_expression): Adjust.
3228         * typeck2.c (build_functional_cast): Adjust.
3229         * cp-tree.h: Adjust.
3230
3231 2011-04-26  Martin Jambor  <mjambor@suse.cz>
3232
3233         * class.c (cp_fold_obj_type_ref): Remove.
3234         * cp-tree.h (cp_fold_obj_type_ref): Remove declaration.
3235
3236 2011-04-25  Paolo Carlini  <paolo.carlini@oracle.com>
3237
3238         * cp-tree.def: Add a new UNDERLYING_TYPE tree code.
3239         * cp-tree.h (enum cp_trait_kind): Add CPTK_UNDERLYING_TYPE, tidy.
3240         (UNDERLYING_TYPE_TYPE): Add.
3241         * cp-objcp-common.c (cp_common_init_ts): Mark UNDERLYING_TYPE
3242         as TS_COMMON.
3243         * parser.c (cp_lexer_next_token_is_decl_specifier_keyword,
3244         cp_parser_simple_type_specifier): Handle UNDERLYING_TYPE.
3245         (cp_parser_trait_expr): Deal with RID_UNDERLYING_TYPE; tidy.
3246         * semantics.c (finish_underlying_type): New.
3247         * typeck.c (structural_comptypes): Handle UNDERLYING_TYPE.
3248         * error.c (dump_type, dump_type_prefix, dump_type_suffix): Likewise.
3249         * cxx-pretty-print.c (p_cxx_type_id): Likewise.
3250         * tree.c (cp_walk_subtrees): Likewise.
3251         * pt.c (for_each_template_parm_r, tsubst, unify,
3252         dependent_type_p_r): Likewise.
3253         * mangle.c (write_type): Sorry for __underlying_type.
3254
3255 2011-04-25  Jason Merrill  <jason@redhat.com>
3256
3257         PR c++/48707
3258         * decl.c (type_dependent_init_p): New.
3259         (cp_finish_decl): Check it.
3260         * pt.c (any_type_dependent_elements_p): New.
3261         * cp-tree.h: Declare it.
3262
3263 2011-04-20  Jason Merrill  <jason@redhat.com>
3264
3265         * semantics.c (finish_compound_literal): Don't put an array
3266         with a dtor in a static variable.
3267
3268         * call.c (build_over_call): Handle trivial dtor.
3269
3270         * search.c (lookup_fnfields_slot): Call complete_type.
3271
3272         PR c++/48594
3273         * decl2.c (build_offset_ref_call_from_tree): Move
3274         non-dependency of object outside condition.
3275
3276         PR c++/48657
3277         * decl.c (cp_finish_decl): Simplify template handling.
3278
3279 2011-04-20  Jim Meyering  <meyering@redhat.com>
3280
3281         * tree.c (cxx_printable_name_internal): Remove useless if-before-free.
3282
3283 2011-04-19  Jason Merrill  <jason@redhat.com>
3284
3285         PR c++/46304
3286         * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
3287
3288         PR c++/45267
3289         * decl.c (duplicate_decls): Keep always_inline attribute
3290         in sync with DECL_DISREGARD_INLINE_LIMITS.
3291
3292 2011-04-18  Jason Merrill  <jason@redhat.com>
3293
3294         PR c++/48569
3295         * typeck2.c (build_functional_cast): Handle VOID_TYPE.
3296
3297         PR c++/48537
3298         * init.c (build_value_init): Handle UNION_TYPE the same.
3299
3300 2011-04-18  Jakub Jelinek  <jakub@redhat.com>
3301
3302         PR c++/48632
3303         * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
3304         for type dependent pointers.
3305
3306 2011-04-18  Jim Meyering  <meyering@redhat.com>
3307
3308         * pt.c (type_unification_real): Fix typo in comment: s/in in/in/.
3309
3310 2011-04-17  Jan Hubicka  <jh@suse.cz>
3311
3312         * semantics.c (finish_goto_stmt): Do set UNINLINABLE flag on computed
3313         gotos.
3314
3315 2011-04-17  Jason Merrill  <jason@redhat.com>
3316
3317         PR c++/48531
3318         * typeck2.c (build_functional_cast): Disallow array type.
3319
3320         * tree.c (get_target_expr): Handle VEC_INIT_EXPR.
3321
3322 2011-04-17  Jan Hubicka  <jh@suse.cz>
3323
3324         * class.c (cp_fold_obj_type_ref): Drop vtable_method.
3325
3326 2011-04-15  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
3327
3328         Implement N3271
3329         * parser.c (cp_convert_range_for): Split into
3330         cp_parser_perform_range_for_lookup.
3331         (cp_parser_perform_range_for_lookup): New.
3332         (cp_parser_range_for_member_function): New.
3333         (cp_parser_for_init_statement): Correct error message.
3334         * semantics.c (finish_call_expr): Accept COMPONENT_REF.
3335
3336 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
3337
3338         * parser.c (cp_parser_objc_protocol_declaration): Updated for
3339         change from objc_declare_protocols() to objc_declare_protocol().
3340
3341 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3342
3343         PR objc++/48479
3344         * typeck.c (cxx_mark_addressable) [CONST_DECL]: Mark addressable
3345         and return immediately.
3346
3347 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3348
3349         * cp-tree.def (SWITCH_STMT): Add an extra operand.
3350         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3351         * cp-tree.h (SWITCH_STMT_SCOPE): Define.
3352         * semantics.c (begin_switch__stmt): Pass scope to build_stmt.
3353         (finish_switch_stmt): Use SWITCH_STMT_SCOPE instead of TREE_CHAIN.
3354
3355 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3356
3357         * cp-tree.def (IF_STMT): Add an extra operand.
3358         * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED.
3359         * cp-tree.h (IF_SCOPE): Define.
3360         * semantics.c (begin_if_stmt): Pass scope to build_stmt.
3361         (finish_if_stmt): Use IF_SCOPE instead of TREE_CHAIN.
3362
3363 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3364
3365         * cp-tree.def (FOR_STMT, RANGE_FOR_STMT): Add an extra operand.
3366         * cp-objcp-common.c (cp_common_init_ts): Mark them as TS_TYPED.
3367         * cp-tree.h (FOR_SCOPE, RANGE_FOR_SCOPE): Define.
3368         * semantics.c (begin_for_stmt): Pass an extra arg to build_stmt.
3369         Use FOR_SCOPE instead of TREE_CHAIN.
3370         (begin_range_for_stmt): Likewise, with RANGE_FOR_SCOPE.
3371         (finish_for_stmt): Likewise.
3372
3373 2011-04-14  Jason Merrill  <jason@redhat.com>
3374
3375         * parser.c (cp_parser_postfix_expression): Fix flags passed to
3376         build_new_method_call.
3377         * semantics.c (finish_call_expr): Likewise.
3378
3379         PR c++/48531
3380         * init.c (build_value_init_noctor): Check complain consistently.
3381
3382         PR c++/48557
3383         * typeck.c (cp_build_binary_op): Don't decay void operands.
3384
3385         PR c++/48446
3386         * decl.c (compute_array_index_type): Use get_temp_regvar instead
3387         of variable_size.
3388         * init.c (get_temp_regvar): No longer static.
3389         * cp-tree.h: Declare it.
3390
3391 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
3392
3393         * parser.c (cp_parser_objc_class_declaration): Updated for change
3394         in objc_declare_class().
3395
3396 2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>
3397
3398         * decl.c (poplevel): Use block_chainon.
3399
3400 2011-04-13  Jason Merrill  <jason@redhat.com>
3401
3402         PR c++/48594
3403         * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
3404         or pointer to (non-member) function.
3405
3406 2011-04-13  Jakub Jelinek  <jakub@redhat.com>
3407
3408         PR c++/48570
3409         * semantics.c (cxx_eval_array_reference): Handle reading from
3410         wchar_t, char16_t and char32_t STRING_CST.
3411
3412 2011-04-13  Dodji Seketeli  <dodji@redhat.com>
3413
3414         PR c++/48574
3415         * class.c (fixed_type_or_null): We cannot determine the dynamic
3416         type of a reference variable if its initializer is dependent.
3417
3418 2011-04-13  Jason Merrill  <jason@redhat.com>
3419
3420         PR c++/48581
3421         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Don't complain about
3422         unqualified lookup failing if we're still in a template.
3423
3424 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
3425
3426         * cp-lang.c (cp_init_ts): Call cp_common_init_ts.  Move
3427         tree_contains_struct initialization to...
3428         * cp-objcp-common.c (cp_common_init_ts): ...here.  Use MARK_*
3429         macros.
3430         * cp-objcp-common.h (cp_common_init_ts): Declare.
3431         * cp-tree.h (union lang_tree_node): Check for TS_COMMON before
3432         calling TREE_CHAIN.
3433
3434 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
3435
3436         * parser.c (cp_parser_objc_message_expression): Updated call
3437         to objc_build_message_expr.
3438
3439 2011-04-12  Martin Jambor  <mjambor@suse.cz>
3440
3441         * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of
3442         cgraph_get_create_node.
3443         * decl2.c (cp_write_global_declarations): Call cgraph_get_node
3444         instead of cgraph_get_create_node.
3445         * method.c (make_alias_for_thunk): Call cgraph_get_node
3446         instead of cgraph_get_create_node, assert it returns non-NULL.
3447         (use_thunk): Likewise.
3448         * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only
3449         when flag_syntax_only is not set.  Call cgraph_get_node instead of
3450         cgraph_get_create_node.
3451         (maybe_clone_body): Call cgraph_get_node instead of
3452         cgraph_get_create_node.
3453
3454 2011-04-12  Martin Jambor  <mjambor@suse.cz>
3455
3456         * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node
3457         instead of cgraph_node.
3458         * decl2.c (cxx_callgraph_analyze_expr): Likewise.
3459         (cp_write_global_declarations): Likewise.
3460         * optimize.c (maybe_clone_body): Likewise.
3461         * semantics.c (maybe_add_lambda_conv_op): Likewise.
3462         * mangle.c (mangle_decl): Likewise.
3463         * method.c (make_alias_for_thunk): Likewise.
3464         (use_thunk): Likewise.
3465
3466 2011-04-11  Jason Merrill  <jason@redhat.com>
3467
3468         PR c++/48535
3469         * decl.c (cp_complete_array_type_or_error): New.
3470         * semantics.c (finish_compound_literal): Use it.
3471         * cp-tree.h: Declare it.
3472
3473         PR c++/48535
3474         * semantics.c (finish_compound_literal): Handle references.
3475
3476         PR c++/48535
3477         * semantics.c (finish_compound_literal): Take complain parm.
3478         (build_lambda_object): Adjust.
3479         * cp-tree.h: Adjust.
3480         * call.c (convert_like_real): Adjust.
3481         * decl.c (check_initializer): Adjust.
3482         * parser.c (cp_parser_postfix_expression): Adjust.
3483         (cp_parser_functional_cast): Adjust.
3484         * pt.c (tsubst_copy_and_build): Adjust.
3485         * typeck2.c (process_init_constructor_record): Adjust.
3486
3487         PR c++/48534
3488         * cvt.c (ocp_convert): Use build_nop to convert to underlying type
3489         of scoped enum.
3490
3491         PR c++/48523
3492         * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
3493         than cp_build_indirect_ref.
3494
3495         PR c++/48457, Core 1238
3496         * call.c (reference_binding): Allow rvalue reference to bind to
3497         function lvalue.
3498         * tree.c (lvalue_kind): Functions are always lvalues.
3499
3500 2011-04-07  Jason Merrill  <jason@redhat.com>
3501
3502         PR c++/48500
3503         * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
3504         arguments even if we don't know the function.
3505
3506         PR c++/48481
3507         * tree.c (build_overload): Allow an unwrapped FUNCTION_DECL
3508         at the end of the chain.
3509         * pt.c (dependent_template_p): Use OVL_CURRENT/NEXT.
3510         (iterative_hash_template_arg): Likewise.
3511
3512         PR c++/48481
3513         * cp-tree.h (OVL_ARG_DEPENDENT): New.
3514         * name-lookup.c (add_function): Set it.
3515         * semantics.c (finish_call_expr): Free OVERLOADs if it's set.
3516
3517         PR c++/48481
3518         * call.c (build_user_type_conversion_1): Use lookup_fnfields_slot.
3519         Release unused vector.
3520
3521         PR c++/48451
3522         * pt.c (fn_type_unification): Don't clear incomplete pack flag.
3523         (type_unification_real): Clear it here instead.
3524
3525         PR c++/48468
3526         * except.c (build_noexcept_spec): Propagate error_mark_node.
3527         (finish_noexcept_expr): Likewise.
3528
3529         PR c++/48452
3530         * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
3531         in SFINAE context.
3532
3533         PR c++/48450
3534         * call.c (resolve_args): Take complain.
3535         (build_new_function_call, build_operator_new_call): Pass it.
3536         (build_op_call, build_new_op, build_new_method_call): Pass it.
3537
3538         PR c++/48450
3539         * typeck.c (check_for_casting_away_constness): Take complain.
3540         (build_static_cast_1, build_reinterpret_cast_1): Pass it.
3541         (build_const_cast_1): Pass it.  Take full complain parm.
3542         (build_const_cast, cp_build_c_cast): Adjust.
3543
3544         * tree.c (build_aggr_init_expr): Always return error_mark_node
3545         on abstract violation.
3546
3547         PR c++/48450
3548         * tree.c (build_cplus_new, build_aggr_init_expr): Take complain.
3549         (bot_manip): Adjust.
3550         * cp-tree.h: Adjust.
3551         * call.c (convert_like_real, build_cxx_call): Adjust.
3552         (perform_direct_initialization_if_possible): Adjust.
3553         * cvt.c (ocp_convert): Adjust.
3554         * init.c (build_value_init): Adjust.
3555         * semantics.c (maybe_add_lambda_conv_op): Adjust.
3556         * typeck.c (unary_complex_lvalue, cp_build_modify_expr): Adjust.
3557         * typeck2.c (build_functional_cast): Adjust.
3558
3559         * init.c (build_value_init_noctor): Handle REFERENCE_TYPE at top
3560         level.
3561         (perform_member_init): Not here.
3562         * typeck2.c (build_functional_cast): Limit REFERENCE_TYPE special
3563         case to templates.
3564         (abstract_virtuals_error_sfinae): Remove RESULT_DECL special case.
3565
3566         PR c++/48449
3567         * typeck2.c (build_functional_cast): Check complain consistently.
3568         Use build_value_init and abstract_virtuals_error_sfinae.
3569         (abstract_virtuals_error_sfinae): Split out.
3570         * cp-tree.h: Declare it.
3571         * init.c (build_new_1): Use it.
3572         (build_value_init_noctor): Handle FUNCTION_TYPE.
3573
3574         * semantics.c (finish_decltype_type): Simplify handling of unknown
3575         type.
3576
3577         * semantics.c (finish_decltype_type): Add complain parm.
3578         * cp-tree.h: Adjust.
3579         * parser.c (cp_parser_decltype): Adjust.
3580         * pt.c (tsubst): Adjust.
3581
3582         PR c++/48450
3583         * cvt.c (ocp_convert): Handle converting scoped enum to bool.
3584
3585 2011-03-31  Jason Merrill  <jason@redhat.com>
3586
3587         PR c++/48277
3588         * semantics.c (finish_call_expr): Remove assert.
3589
3590         PR c++/48280
3591         * method.c (defaultable_fn_check): Templates are not defaultable.
3592
3593         * parser.c (cp_parser_init_declarator): Avoid redundant
3594         cp_finish_decl for member declarations.
3595
3596 2011-03-30  Jason Merrill  <jason@redhat.com>
3597
3598         PR c++/48212
3599         * semantics.c (non_const_var_error): Just return if DECL_INITIAL
3600         is error_mark_node.
3601
3602 2011-03-30  Jason Merrill  <jason@redhat.com>
3603
3604         PR c++/48369
3605         * semantics.c (potential_constant_expression_1): Handle
3606         UNORDERED_EXPR and ORDERED_EXPR.
3607
3608         PR c++/48281
3609         * semantics.c (finish_compound_literal): Do put static/constant
3610         arrays in static variables.
3611
3612         * call.c (convert_like_real) [ck_list]: Build up the
3613         initializer_list object directly.
3614         * decl.c (build_init_list_var_init): Adjust.
3615
3616         * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
3617         * decl.c (reshape_init_array_1): Likewise.
3618
3619 2011-03-29  Jason Merrill  <jason@redhat.com>
3620
3621         PR c++/48265
3622         * pt.c (value_dependent_expression_p) [VAR_DECL]: Make sure
3623         the variable is constant before looking at its initializer.
3624
3625         PR c++/48319
3626         * pt.c (value_dependent_expression_p): Handle TEMPLATE_ID_EXPR.
3627
3628         PR c++/48089
3629         * semantics.c (potential_constant_expression_1): Change error about
3630         use of *this in constructor into sorry.
3631
3632         PR c++/48296
3633         * decl.c (cp_finish_decl): Defer validation of constexpr member
3634         functions.
3635         * class.c (finalize_literal_type_property): Validate them here.
3636         * semantics.c (is_valid_constexpr_fn): Don't check completeness.
3637
3638         * semantics.c (is_valid_constexpr_fn): Specify input location.
3639
3640 2011-03-28  Jason Merrill  <jason@redhat.com>
3641
3642         PR c++/48313
3643         * pt.c (maybe_adjust_types_for_deduction): Handle T&& deduction
3644         from overloaded function.
3645
3646         Core 1232
3647         * call.c (build_array_conv): New.
3648         (implicit_conversion): Use it.
3649
3650         * call.c (reference_binding): Allow direct binding to an array
3651         rvalue.
3652
3653         Core 898
3654         * parser.c (cp_parser_compound_statement): Add function_body parm.
3655         Complain about non-body compound-stmt in constexpr fn.
3656         (cp_parser_primary_expression, cp_parser_statement): Adjust.
3657         (cp_parser_implicitly_scoped_statement): Adjust.
3658         (cp_parser_function_body, cp_parser_try_block): Adjust.
3659         (cp_parser_handler, cp_parser_objc_synchronized_statement): Adjust.
3660         (cp_parser_objc_try_catch_finally_statement): Adjust.
3661
3662         Core 898
3663         * semantics.c (constexpr_fn_retval): New.  Allow using-declaration
3664         and using-definition.
3665         (register_constexpr_fundef): Call it.
3666
3667         * except.c (build_noexcept_spec): Call cxx_constant_value after
3668         converting to bool.
3669
3670 2011-03-25  Kai Tietz  <ktietz@redhat.com>
3671
3672         * lex.c (interface_strcmp): Handle dos-paths.
3673         (handle_pragma_implementation): Use filename_cmp instead of
3674         strcmp.
3675         (in_main_input_context): Likewise.
3676
3677 2011-03-25  Jason Merrill  <jason@redhat.com>
3678
3679         Core 1135
3680         * method.c (defaulted_late_check): Check for exception spec mismatch.
3681         (defaultable_fn_check): Allow exception spec and virtual.
3682         * class.c (check_for_override): A virtual dtor is non-trivial.
3683
3684         PR c++/48289
3685         * pt.c (build_non_dependent_expr): Keep dereferences outside the
3686         NON_DEPENDENT_EXPR.
3687
3688 2011-03-25  Kai Tietz  <ktietz@redhat.com>
3689
3690         * decl.c (decls_match): Replace target hook
3691         call of comp_type_attributes by version in tree.c file.
3692         * search.c (check_final_overrider): Likewise.
3693         * typeck.c (structural_comptypes): Likewise.
3694
3695 2011-03-21  Kai Tietz  <ktietz@redhat.com>
3696
3697         PR target/12171
3698         * cxx-pretty-print.c (pp_cxx_ptr_operator):
3699         Display allowed attributes for function pointer types.
3700         * error.c (dump_type_prefix): Likewise.
3701
3702         * tree.c (cxx_attribute_table): Adjust table.
3703
3704 2011-03-18  Jason Merrill  <jason@redhat.com>
3705
3706         PR c++/48162
3707         * semantics.c (finish_call_expr): Allow TARGET_EXPR for now.
3708
3709         PR c++/48118
3710         * call.c (build_over_call): Don't skip ck_rvalue.
3711
3712 2011-03-17  Jason Merrill  <jason@redhat.com>
3713
3714         PR c++/47504
3715         * semantics.c (cxx_eval_constant_expression) [NOP_EXPR]: Don't let
3716         the conversion set TREE_OVERFLOW.
3717
3718         Core 1212
3719         * semantics.c (finish_decltype_type): Return T&& for xvalue.
3720         * typeck.c (unlowered_expr_type): Preserve cv-quals.
3721
3722         PR c++/48166
3723         * decl.c (revert_static_member_fn): Strip function-cv-quals.
3724
3725 2011-03-16  Jason Merrill  <jason@redhat.com>
3726
3727         PR c++/48089
3728         * semantics.c (potential_constant_expression_1): Don't allow *this
3729         in a constructor.
3730         (register_constexpr_fundef): Use potential_rvalue_constant_expression.
3731
3732         PR c++/47301
3733         * decl.c (compute_array_index_type): Don't bother trying to deal
3734         with literal classes in ABI v1.
3735
3736         PR c++/46336
3737         * decl.c (duplicate_decls): Return NULL_TREE for clashing
3738         C functions.
3739
3740         PR c++/47570
3741         * semantics.c (cxx_eval_constant_expression) [COMPOUND_EXPR]: Don't
3742         use the generic binary expression handling.
3743
3744 2011-03-16  Diego Novillo  <dnovillo@google.com>
3745
3746         * Make-lang.in (CXX_PARSER_H): New.
3747         (cp/parser.o): Add dependency on CXX_PARSER_H.
3748         Add dependency on tree-pretty-print.h
3749         (cp/cp-lang.o): Add dependency on CXX_PARSER_H.
3750         * cp-lang.c: Include parser.h.
3751         * parser.c: Include parser.h.
3752         (struct cp_token): Add bitfield purged_p.
3753         Update all users.
3754         Move to parser.h.
3755         (CPP_PURGED): Remove.  Update all users.
3756         (struct cp_lexer): Change field buffer to be a VEC of cp_token.
3757         Remove field buffer_length.
3758         Update all users.
3759         Move to parser.h.
3760         (struct tree_check): Move to parser.h.
3761         (cp_token_position): Likewise.
3762         (struct cp_token_cache): Likewise.
3763         (CPP_KEYWORD): Likewise.
3764         (CPP_TEMPLATE_ID): Likewise.
3765         (CPP_NESTED_NAME_SPECIFIER): Likewise.
3766         (N_CP_TTYPES): Likewise.
3767         (enum cp_parser_status_kind): Likewise.
3768         (struct cp_parser_context): Likewise.
3769         (struct cp_default_arg_entry_d): Likewise.
3770         (struct cp_unparsed_functions_entry_d): Likewise.
3771         (struct cp_parser): Likewise.
3772         (cp_lexer_dump_tokens): New.
3773         (cp_lexer_debug_tokens): New.
3774         (cp_lexer_finished_p): New.
3775         (cp_lexer_alloc): Factor out of cp_lexer_new_main.
3776         (cp_lexer_new_main): Re-write main lexing loop to push
3777         tokens into the new VEC buffer.
3778         (cp_lexer_print_token): Improve printing of CPP_NUMBER tokens.
3779         Do not abort if the token type is not recognized, just print
3780         its code.
3781         * parser.h: New file.
3782         * config-lang.in (gtfiles): Add cp/parser.h.
3783
3784 2011-03-16  Jason Merrill  <jason@redhat.com>
3785
3786         Core 1148
3787         * typeck.c (check_return_expr): Fix conditions for setting
3788         LOOKUP_PREFER_RVALUE.
3789
3790         * call.c (build_over_call): Remove require_complete_type_sfinae call.
3791
3792         PR c++/48132
3793         * decl.c (check_array_designated_initializer): Allow integer index.
3794         (reshape_init_array_1): Set index on the elements.
3795
3796 2011-03-16  Jason Merrill  <jason@redhat.com>
3797
3798         PR c++/48113
3799         * typeck.c (convert_for_initialization): Use
3800         perform_implicit_conversion_flags.
3801         * call.c (standard_conversion): If LOOKUP_PREFER_RVALUE, set
3802         rvaluedness_matches_p on ck_rvalue.
3803         (convert_like_real) [ck_rvalue]: And restore it here.
3804
3805         PR c++/48115
3806         * call.c (convert_arg_to_ellipsis): Handle incomplete type.
3807
3808 2011-03-16  Jason Merrill  <jason@redhat.com>
3809
3810         * parser.c (cp_parser_abort_tentative_parse): Make sure we haven't
3811         committed to this tentative parse.
3812
3813         PR c++/47999
3814         * semantics.c (finish_call_expr): Preserve reference semantics
3815         in templates.
3816
3817         * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
3818
3819 2011-03-16  Jakub Jelinek  <jakub@redhat.com>
3820
3821         * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
3822         DECL_LANG_SPECIFIC is NULL.
3823
3824 2011-03-15  Jason Merrill  <jason@redhat.com>
3825
3826         Core 1074
3827         * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
3828         check value_dependent_expression_p on the operand.
3829
3830         * semantics.c (push_cx_call_context): Return bool.
3831         (cxx_eval_call_expression): Handle excess depth.
3832
3833         Core 1191
3834         * method.c (synthesized_method_walk): Cleanups don't affect the
3835         triviality of a constructor, but do affect deletion and exception
3836         specification.
3837
3838 2011-03-15  Rodrigo Rivas Costa  <rodrigorivascosta@gmail.com>
3839
3840         * decl2.c (cp_check_const_attributes): New.
3841         (cplus_decl_attributes): Call cp_check_const_attributes.
3842
3843 2011-03-15  Jason Merrill  <jason@redhat.com>
3844
3845         PR c++/34758
3846         * call.c (convert_default_arg): Use DECL_ORIGIN of fn.  Check for
3847         recursion first.
3848         (push_defarg_context, pop_defarg_context): New.
3849         * parser.c (cp_parser_late_parsing_default_args): Use them.
3850         * cp-tree.h: Declare them.
3851
3852 2011-03-11  Dodji Seketeli  <dodji@redhat.com>
3853
3854         * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
3855         the argument of the indirection operator should not be dependent.
3856         Fix the comment.
3857
3858 2011-03-11  Jason Merrill  <jason@redhat.com>
3859
3860         PR c++/47125
3861         * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
3862
3863         PR c++/47144
3864         * parser.c (cp_parser_template_type_arg): Set
3865         type_definition_forbidden_message.
3866
3867         PR c++/47808
3868         * decl.c (compute_array_index_type): Discard folding
3869         if it didn't produce a constant.
3870
3871 2011-03-11  Jakub Jelinek  <jakub@redhat.com>
3872
3873         PR c++/48035
3874         * init.c (build_zero_init_1): Extracted from build_zero_init.
3875         Add FIELD_SIZE argument, if non-NULL and field bit_position
3876         as not smaller than that, don't add that field's initializer.
3877         Pass DECL_SIZE as last argument to build_zero_init_1
3878         for DECL_FIELD_IS_BASE fields.
3879         (build_zero_init): Use build_zero_init_1.
3880
3881 2011-03-10  Jason Merrill  <jason@redhat.com>
3882
3883         PR c++/48029
3884         * pt.c (iterative_hash_template_arg): Remove special case for
3885         ARRAY_TYPE.
3886
3887         PR c++/47198
3888         * parser.c (cp_parser_single_declaration): Just return if
3889         cp_parser_parse_and_diagnose_invalid_type_name complained.
3890
3891 2011-03-09  Jason Merrill  <jason@redhat.com>
3892
3893         PR c++/44629
3894         * pt.c (unify): An unresolved overload is a nondeduced context.
3895
3896 2011-03-09  Martin Jambor  <mjambor@suse.cz>
3897
3898         PR tree-optimization/47714
3899         * method.c (use_thunk): Clear addressable flag of thunk arguments.
3900
3901 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3902
3903         PR c++/47705
3904         * pt.c (convert_nontype_argument): Only call decay_conversion on
3905         arrays.
3906
3907 2011-03-08  Jason Merrill  <jason@redhat.com>
3908
3909         PR c++/47488
3910         * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
3911
3912         PR c++/47705
3913         * pt.c (convert_nontype_argument): Don't crash on non-pointer
3914         argument to pointer parameter.
3915
3916         PR c++/45651
3917         * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
3918         !TREE_PUBLIC decls.
3919
3920 2011-03-08  Dodji Seketeli  <dodji@redhat.com>
3921
3922         PR c++/47957
3923         * name-lookup.c (binding_to_template_parms_of_scope_p): Only
3924         consider scopes of primary template definitions.  Adjust comments.
3925
3926 2011-03-07  Jason Merrill  <jason@redhat.com>
3927
3928         PR c++/48003
3929         * pt.c (convert_nontype_argument): Fix -fpermissive allowing
3930         integer overflow.
3931         * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
3932
3933         PR c++/48015
3934         * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
3935
3936         PR c++/48008
3937         * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
3938         (write_CV_qualifiers_for_type): Not here.
3939
3940 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
3941
3942         * lang-specs.h: Match -save-temps* instead of -save-temps.
3943
3944 2011-03-05  Jason Merrill  <jason@redhat.com>
3945
3946         * mangle.c (write_expression): Change ABI v6 to v5.
3947         (write_type): Likewise.
3948
3949 2011-03-04  Jan Hubicka  <jh@suse.cz>
3950
3951         PR lto/47497
3952         * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
3953         and cgraph_add_thunk.
3954         * method.c (make_alias_for_thunk, use_thunk): Likewise.
3955         * mangle.c (mangle_decl): Likewise.
3956
3957 2011-03-04  Jason Merrill  <jason@redhat.com>
3958
3959         PR c++/47971
3960         * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
3961         (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
3962
3963         PR c++/46220
3964         * search.c (check_final_overrider): Allow pointer to same incomplete
3965         class type with different cv-quals.
3966
3967 2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3968
3969         PR c++/47974
3970         * pt.c (tsubst_template_args): Check argument t for error_mark_node.
3971
3972 2011-03-03  Jason Merrill  <jason@redhat.com>
3973
3974         PR c++/47950
3975         * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
3976
3977 2011-03-02  Jason Merrill  <jason@redhat.com>
3978
3979         PR c++/47950
3980         * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
3981
3982         PR c++/47774
3983         * tree.c (build_vec_init_elt): Split out from...
3984         (build_vec_init_expr): ...here.
3985         (diagnose_non_constexpr_vec_init): New fn.
3986         * semantics.c (potential_constant_expression_1): Use it.
3987         * cp-tree.h: Declare it.
3988
3989 2011-03-01  Jason Merrill  <jason@redhat.com>
3990
3991         PR c++/46159
3992         * parser.c (cp_parser_primary_expression): Don't warn about a
3993         failed tentative parse.
3994
3995         PR c++/47200
3996         * semantics.c (cxx_bind_parameters_in_call): Don't call
3997         adjust_temp_type on non-constant args.
3998
3999         PR c++/47851
4000         * call.c (standard_conversion): Provide requested cv-quals on
4001         class rvalue conversion.
4002
4003         PR c++/46282
4004         * decl2.c (grokbitfield): Handle type-dependent width.
4005
4006 2011-02-28  Jason Merrill  <jason@redhat.com>
4007
4008         PR c++/47873
4009         * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
4010         after checking for a non-thunk.
4011
4012 2011-02-26  Jason Merrill  <jason@redhat.com>
4013
4014         PR c++/47904
4015         * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
4016         * pt.c (iterative_hash_template_arg): And hash it.
4017
4018         PR c++/47897
4019         * semantics.c (non_const_var_error): Split out from...
4020         (cxx_eval_constant_expression): ...here.
4021         (potential_constant_expression_1) [VAR_DECL]: Use it.
4022         Allow dependent variables.
4023
4024 2011-02-24  Jason Merrill  <jason@redhat.com>
4025
4026         * parser.c (cp_parser_constant_expression): Set
4027         non_integral_constant_expression correctly for C++0x too.
4028         (cp_parser_static_assert): Allow non-constant expression.
4029         (cp_parser_direct_declarator): Expect non_constant_p to be set
4030         properly for C++0x.
4031         * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
4032         * semantics.c (maybe_constant_value): Check type_unknown_p too.
4033         (potential_rvalue_constant_expression): New.
4034         (require_potential_rvalue_constant_expression): New.
4035
4036 2011-02-23  Jason Merrill  <jason@redhat.com>
4037
4038         * cp-tree.h (DECL_PARM_LEVEL): New.
4039         (struct lang_decl_parm): Add level field.
4040         * name-lookup.c (function_parm_depth): New fn.
4041         * name-lookup.h: Declare it.
4042         * parser.c (cp_parser_parameter_declaration_list): Use it.
4043         * mangle.c (struct globals): Add parm_depth field.
4044         (write_bare_function_type): Adjust it.
4045         (write_expression): Include the level delta in PARM_DECL mangling
4046         for abi >= 6.
4047
4048         * semantics.c (finish_decltype_type): Remove shortcut for decltype
4049         of id-expression.
4050         * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
4051
4052 2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
4053
4054         PR c++/46868
4055         * parser.c (cp_parser_class_specifier): Require a closing brace
4056         to attempt error recovery.
4057
4058 2011-02-23  Jakub Jelinek  <jakub@redhat.com>
4059
4060         PR c++/47833
4061         * pt.c (struct pending_template): Add chain_next GTY option.
4062         * decl.c (struct named_label_use_entry): Likewise.
4063
4064 2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
4065
4066         PR c++/47242
4067         * semantics.c (build_lambda_object): Bail out if a field is
4068         error_mark_node.
4069
4070 2011-02-22  Dodji Seketeli  <dodji@redhat.com>
4071
4072         PR c++/47666
4073         * class.c (dfs_declare_virt_assop_and_dtor)
4074         (declare_virt_assop_and_dtor): New static functions.
4075         (add_implicitly_declared_members): Use
4076         declare_virt_assop_and_dtor.
4077
4078 2011-02-21  Jason Merrill  <jason@redhat.com>
4079
4080         PR c++/47207
4081         * decl2.c (decl_constant_var_p): A constexpr var needs an
4082         initializer to be constant.
4083         * semantics.c (cxx_eval_constant_expression): Complain about
4084         constexpr var used in its own initializer.
4085         * call.c (set_up_extended_ref_temp): Set
4086         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
4087
4088 2011-02-20  Jason Merrill  <jason@redhat.com>
4089
4090         PR c++/47199
4091         * semantics.c (cxx_eval_call_expression): Call
4092         cxx_eval_constant_expression in trivial shortcut.
4093
4094         PR c++/46831
4095         * call.c (convert_class_to_reference): Don't try to set up a
4096         second conv sequence for non-viable candidates.
4097
4098         PR c++/47703
4099         * error.c (location_of): Handle non-tagged types.
4100
4101         PR c++/46472
4102         * method.c (process_subob_fn): Instantiate constexpr templates.
4103         * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
4104
4105 2011-02-20  Dodji Seketeli  <dodji@redhat.com>
4106
4107         PR c++/46394
4108         * pt.c (tsubst_pack_expansion): do not use
4109         cp_tree_equal/same_type_p to detect an expansion of a parameter
4110         pack.
4111
4112 2011-02-19  Jason Merrill  <jason@redhat.com>
4113
4114         PR c++/47503
4115         * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
4116
4117 2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
4118
4119         PR c++/47795
4120         * semantics.c (finish_non_static_data_member): Early return if
4121         object is error_mark_node.
4122
4123 2011-02-18  Dodji Seketeli  <dodji@redhat.com>
4124
4125         PR c++/47208
4126         * pt.c (do_auto_deduction): Do not mention error_mark_node in
4127         diagnostics.
4128         * semantics.c (finish_id_expression): Do not pass erroneous decl
4129         to decl_constant_var_p.
4130
4131 2011-02-17  Jakub Jelinek  <jakub@redhat.com>
4132
4133         PR c++/47783
4134         * cvt.c (convert_from_reference): Call mark_exp_read.
4135
4136 2011-02-11  Dodji Seketeli  <dodji@redhat.com>
4137
4138         PR c++/47172
4139         * pt.c (finish_call_expr): Consider a call expression that has a
4140         dependent "this" pointer as being dependent.  Add comments.
4141         (dependent_type_p, type_dependent_expression_p): Update comments.
4142
4143 2011-02-16  Dodji Seketeli  <dodji@redhat.com>
4144
4145         PR c++/47326
4146         * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
4147         expansion arguments are not evaluated.
4148
4149 2011-02-16  Jakub Jelinek  <jakub@redhat.com>
4150
4151         PR c++/47704
4152         * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
4153         instead of TYPE_LANG_FLAG_3.
4154         * pt.c (lookup_template_class): Copy over
4155         ENUM_FIXED_UNDERLYING_TYPE_P.
4156
4157 2011-02-15  Jason Merrill  <jason@redhat.com>
4158
4159         PR c++/46807
4160         * method.c (synthesized_method_walk): Always exit early for
4161         trivial fn in C++98 mode.
4162
4163 2011-02-14  Jason Merrill  <jason@redhat.com>
4164
4165         PR c++/47482
4166         * parser.c (cp_parser_enumerator_definition): Call
4167         fold_non_dependent_expr.
4168
4169 2011-02-09  Jason Merrill  <jason@redhat.com>
4170
4171         * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
4172         * semantics.c (finish_fname): Only return the name if we're in
4173         a function.
4174
4175         * decl.c (build_enumerator): Don't perform integral promotions on
4176         non-integral constants.
4177
4178         * cvt.c (convert_to_void): Handle null op1.
4179
4180         * class.c (type_has_constexpr_default_constructor): Make sure the
4181         caller stripped an enclosing array.
4182         * init.c (perform_member_init): Strip arrays before calling it.
4183
4184         PR c++/47511
4185         * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
4186
4187 2011-02-03  Dodji Seketeli  <dodji@redhat.com>
4188
4189         PR c++/47398
4190         * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
4191         template parameters in account.
4192
4193 2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
4194
4195         PR c++/46890
4196         * parser.c (cp_parser_class_specifier): Fix setting of
4197         want_semicolon.
4198
4199 2011-01-31  Jakub Jelinek  <jakub@redhat.com>
4200
4201         PR c++/47416
4202         * semantics.c (build_data_member_initialization): Handle
4203         STATEMENT_LIST always instead of just for CLEANUP_BODY.
4204
4205 2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4206
4207         * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
4208         LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
4209
4210 2011-01-29  Dodji Seketeli  <dodji@redhat.com>
4211
4212         PR c++/47311
4213         * cp-tree.h (fixup_template_parms): Declare.
4214         * pt.c (end_template_parm_list): Do not fixup template parms here.
4215         (fixup_template_parms): Remove static. Fix typo in the
4216         comments. Remove useless code statement.
4217         (fixup_template_parm): For a template template parameter, fixup
4218         its attributes before fixing up its type.
4219         * parser.c
4220         (cp_parser_template_declaration_after_export): After parsing
4221         template parameters fixup their types.
4222
4223 2011-01-26  Jakub Jelinek  <jakub@redhat.com>
4224
4225         PR c++/47476
4226         * semantics.c (potential_constant_expression_1): Handle
4227         TRUTH_XOR_EXPR.
4228
4229 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
4230
4231         PR c++/43601
4232         * semantics.c (expand_or_defer_fn_1): Handle it.
4233         * decl2.c (decl_needed_p): Likewise.
4234
4235 2011-01-21  Jason Merrill  <jason@redhat.com>
4236
4237         PR c++/47041
4238         * semantics.c (build_constexpr_constructor_member_initializers):
4239         Handle trivial copy.
4240
4241 2011-01-21  Jakub Jelinek  <jakub@redhat.com>
4242
4243         PR c++/47388
4244         * semantics.c (begin_for_stmt): If -fno-for-scope, don't
4245         assume init must be NULL if scope is NULL.
4246         (begin_range_for_stmt): Likewise.
4247
4248 2011-01-21  Jason Merrill  <jason@redhat.com>
4249
4250         PR c++/46552
4251         * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
4252
4253         PR c++/46977
4254         * semantics.c (potential_constant_expression_1): Split out from
4255         potential_constant_expression.  Add want_rval parm.  Handle
4256         template expression forms.  Don't enforce restriction on address
4257         of automatic variable here.  Add a couple of diagnostics that
4258         had been missing.
4259         (require_potential_constant_expression): New entry point.
4260         (build_data_member_initialization, register_constexpr_fundef): Adjust.
4261         (maybe_constant_value): Check potential_constant_expression.
4262         * pt.c (fold_non_dependent_expr_sfinae): Likewise.
4263         * tree.c (build_vec_init_expr): Adjust.
4264
4265 2011-01-19  Jakub Jelinek  <jakub@redhat.com>
4266
4267         PR c++/47303
4268         * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
4269         or DECL_EXTERNAL.
4270
4271 2011-01-17  Jason Merrill  <jason@redhat.com>
4272
4273         PR c++/47067
4274         * semantics.c (base_field_constructor_elt): New fn.
4275         (cxx_eval_bare_aggregate): Use it.
4276         (build_data_member_initialization): Leave COMPONENT_REF for
4277         vfield inits.
4278
4279 2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4280
4281         * parser.c (cp_parser_range_for): Remove the "unused variable" warning
4282         workaround.
4283
4284 2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
4285             Jonathan Wakely  <jwakely.gcc@gmail.com>
4286
4287         PR c++/33558
4288         * decl.c (grokdeclarator): Reject mutable reference members.
4289
4290 2011-01-14  Jason Merrill  <jason@redhat.com>
4291
4292         PR c++/47289
4293         * pt.c (coerce_template_parms): Fix error recovery.
4294
4295         PR c++/46903
4296         * typeck2.c (check_narrowing): Only check arithmetic types.
4297
4298         PR c++/46688
4299         * tree.c (build_vec_init_expr): Handle flexible array
4300         properly.
4301
4302 2011-01-13  Kai Tietz  <kai.tietz@onevision.com>
4303
4304         PR c++/47213
4305         * cp-tree.h (CLASSTYPE_VISIBILITY): Use
4306         TYPE_MAIN_DECL instead of TYPE_NAME.
4307         (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
4308         * decl2.c (determine_visibility): Add check
4309         of CLASS_TYPE_P for underlying_type.
4310
4311 2011-01-12  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
4312
4313         * cp-tree.h (begin_for_scope): New prototype.
4314         (begin_for_stmt): Update prototype.
4315         (begin_range_for_stmt): Update prototype.
4316         * init.c (build_vec_init): Update call to begin_for_stmt.
4317         * parser.c (cp_parser_for): New.
4318         (cp_parser_c_for): Add three new parameters.
4319         (cp_parser_range_for): Likewise. Most parsing code removed.
4320         (cp_parser_iteration_statement): Call cp_parser_for instead of
4321         cp_parser_c_for and cp_parser_range_for.
4322         (cp_parser_for_init_statement): Add new parameter and return type.
4323         (cp_parser_block_declaration): Update call to
4324         cp_parser_simple_declaration.
4325         (cp_parser_simple_declaration): Add new parameter.
4326         Update call to cp_parser_init_declarator.
4327         (cp_parser_init_declarator): Add new parameter.
4328         * pt.c (tsubst_expr): Update call to begin_for_stmt.
4329         * semantics.c (begin_for_scope): New.
4330         (begin_for_stmt): Add two new parameters.
4331         (begin_range_for_stmt): Likewise.
4332
4333 2011-01-12  Nicola Pero  <nicola.pero@meta-innovation.com>
4334
4335         * parser.c (cp_parser_objc_at_property_declaration): Improved
4336         error message.
4337
4338 2011-01-11  Dodji Seketeli  <dodji@redhat.com>
4339
4340         PR debug/46955
4341         * cp-lang.c (get_template_innermost_arguments_folded)
4342         (get_template_argument_pack_elems_folded)
4343         (template_arg_needs_folding, fold_cplus_constants): New static
4344         functions.
4345         (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
4346         get_template_innermost_arguments_folded.
4347         (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
4348         get_template_argument_pack_elems_folded.
4349
4350 2011-01-11  Jason Merrill  <jason@redhat.com>
4351
4352         PR c++/46658
4353         * init.c (build_new_1): Handle value-init in templates differently.
4354
4355         PR c++/45520
4356         * tree.c (maybe_dummy_object): Check current_class_ref against
4357         context, not current_class_type.
4358
4359 2011-01-08  Nicola Pero  <nicola.pero@meta-innovation.com>
4360
4361         PR objc/47078
4362         * parser.c (cp_parser_objc_typename): If the type is unknown, for
4363         error recovery purposes behave as if it was not specified so that
4364         the default type is used.
4365
4366 2011-01-07  Jakub Jelinek  <jakub@redhat.com>
4367
4368         PR c++/47022
4369         * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
4370         for the second build_x_va_arg argument.
4371
4372 2011-01-05  Tom Tromey  <tromey@redhat.com>
4373
4374         * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
4375         (lvalue_or_else): Likewise.
4376
4377 2011-01-01  Kai Tietz  <kai.tietz@onevision.com>
4378
4379         PR target/38662
4380         * tree.c (cxx_type_hash_eq):
4381         Allow METHOD_TYPE, too.
4382
4383 \f
4384 Copyright (C) 2011 Free Software Foundation, Inc.
4385
4386 Copying and distribution of this file, with or without modification,
4387 are permitted in any medium without royalty provided the copyright
4388 notice and this notice are preserved.