OSDN Git Service

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