OSDN Git Service

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