OSDN Git Service

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