OSDN Git Service

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