OSDN Git Service

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