OSDN Git Service

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