OSDN Git Service

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