OSDN Git Service

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