OSDN Git Service

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