OSDN Git Service

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