OSDN Git Service

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