OSDN Git Service

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