OSDN Git Service

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