OSDN Git Service

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