OSDN Git Service

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